rsync -rv /home/myname/mydir1/* myhost:/home/myname/mydir1
будет копировать файлы только в mydir1 (и подкаталоги)
rsync -rv /home/myname/mydir1 myhost:/home/myname/mydir1
скопирует сам каталог, поэтому вы получите mydir1/mydir1
francois@zaphod:~/tmp$ rm -rf b
francois@zaphod:~/tmp$ mkdir b
francois@zaphod:~/tmp$ rsync -rv a/* b
sending incremental file list
a
sent 80 bytes received 35 bytes 230.00 bytes/sec
total size is 0 speedup is 0.00
francois@zaphod:~/tmp$ tree b
b
└── a
0 directories, 1 file
francois@zaphod:~/tmp$ rm -rf b
francois@zaphod:~/tmp$ rsync -rv a b
sending incremental file list
created directory b
a/
a/a
sent 108 bytes received 63 bytes 342.00 bytes/sec
total size is 0 speedup is 0.00
francois@zaphod:~/tmp$ tree b
b
└── a
└── a
1 directory, 1 file
Вам нужно экранировать его или в кавычках, а не оба:
echo \!
echo "!"
Расширение истории Bash игнорирует экранированные восклицательные знаки, одинарные -кавычки и восклицательные знаки, которые появляются непосредственно перед закрывающей двойной кавычкой. Подробнее см. в разделе «История взаимодействия» руководства . Так
echo '!'
тоже работает, и не нужно думать о том, где находится восклицательный знак.
Вы можете комбинировать одинарные кавычки с расширением переменной, используя printf
вместо echo
.Вы также можете комбинировать несколько форм цитирования в одной команде -строке:
echo '!'"$(echo test)"
В целомprintf
лучше, чемecho
. Как уже упоминалось, вы также можете полностью отключить расширение истории; не интерактивные оболочки -не включают его по умолчанию.