2014-05-20 2 views
1

J'essaie de supprimer un mot du profil bash sur le serveur distant, mais la commande ne sort jamais.Suppression d'un mot de la ligne sur le serveur distant

ssh -X test_server 'sed -e \'s/unalias ls//g\' -i .bash_profile' </dev/null 

Je ne sais pas ce que je fais mal, veuillez aider.

+0

Parfois, il est plus facile (en particulier l'imbrication entre guillemets/guillemets doubles) de copier à distance un fichier script temporay et de ssh l'appel du script (et de le supprimer après). N'oubliez pas de spécifier votre environnement (avec un GNU sed comme ici il semble linux ou mac mais pas de spécification sur remote, en supposant la même chose) – NeronLeVelu

Répondre

1

Il n'est pas possible d'imbriquer des guillemets simples dans shell, le passage à des guillemets devrait vous donner le résultat souhaité. E.g .:

$ ssh somehost sh <<< 'echo "Xunalias lsX" | sed -e "s/unalias ls//"' 
XX 
+0

j'ai aussi essayé sed: -e expression # 1, char 1: unknown commande: '" ' – Nomad

+0

Je pense que je vous recommande de copier le fichier sur votre machine Modifiez-le Renommez le fichier original Copiez votre nouvelle version sur la machine cible –

+0

@ user3109806 Je pense que vous essayez toujours d'échapper aux doubles guillemets (par exemple '' sed -e \ "s/unalias ls // g \" '')? Ce que vous devez exécuter à la place est' ssh test_server' sed -e "s/unalias ls // g" -i .bash_profile '

Questions connexes