2013-03-22 30 views
5

Ssh üzerinden uzaktan kumandada tek tırnak kaçışları için herhangi bir çözüm okurum. Ama herhangi bir iş fien.Tek tırnak işareti ssh uzak komutu kaçış

Ben awk

ssh [email protected] "ps uax|grep bac | grep -v grep | awk \'{ print $2 }\' > /tmp/back.tmp" 
.... 
awk: '{ 
awk:^caracter ''' inválido en la expresión 

çalışmak Ve komuta tek kotalar koymak değil, aynı zamanda çalışmayan kalkmayın

ssh [email protected] "ps uax|grep bac | grep -v grep | awk '{ print $2 }' > /tmp/back.tmp" 

çalışıyorum. Ayrıca

ssh [email protected] "ps uax|grep bac | grep -v grep | awk '{ print \$2 }' > /tmp/back.tmp" 
                   ▲ 

, şunları kullanabilirsiniz: böylece

ps uax | grep 'ba[c]' | ... 

Aprecite böylece $ kaçış karakteri gerekir çift tırnak " kullanmak deneyin ilk olarak

cevap

7

yardımcı

o zaman grep -v grep adımına ihtiyacınız yoktur.

+0

Wauuuuu ... çok teşekkürler ... bu soru için çok fazla harcama ... güzel bir gün – abkrim

8

ssh komutu, ana makine adından sonra yazılan tüm metinleri yürütülecek uzak komut olarak ele alır. Bunun sizin için ne anlama geldiğini kritik olarak, yaptığınız gibi tüm komutu alıntılamak zorunda değilsiniz. Aksine, komutları, uzak sistemde olsaydınız sanki yazdığınız gibi gönderebilirsiniz.

Bu, kullanmanız gereken tırnakların sayısını azalttığından alıntılama sorunları ile uğraşmayı basitleştirir. Tırnak kullanmıyor olduğunuzdan, tüm özel bash karakterleri ters eğik çizgileriyle kaçmak zorundadır.

sizin durumda,

ssh [email protected] ps uax \| grep ba[c] \| \'{ print \$2 }\' \> /tmp/back.tmp 

, yazmanıza gerek veya bunları kaçan yerine alıntı tek tırnak çift olabilir

ssh [email protected] ps uax \| grep ba[c] \| "'{ print \$2 }'" \> /tmp/back.tmp 
(her iki durumda da, Dolar işareti kaçmak gerekir)

Dürüst olmak gerekirse, bu durum biraz daha karmaşık görünüyor, ancak bu bilgiyi, daha karmaşık tırnak kullanımı içeren uzak sistemlere komut gönderme ile ilgili oldukça değerli buldum.