И в kubuntu 12.04+ это:
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 0 0 0
Флаг -T (AKA --no-target-directory) делает то, что вы хотите:
$ cp -R --verbose -T /tmp/a /tmp/b
`/tmp/a/file1' -> `/tmp/b/file1'
`/tmp/a/file2' -> `/tmp/b/file2'
Предполагая Bash, вы можете сделать
( shopt -s dotglob; cp -f -R --verbose /tmp/a/* /tmp/b/ )
. Что это делает:
он убедится, что globs (*) поймают файлы с точкой впереди. Они считаются «скрытыми» по соглашению. * будет расширяться до того, как cp получит команду. Поэтому, если в вашем вопросе есть два файла, расширенная командная строка будет cp -f -R --verbose /tmp/a/file1 /tmp/a/file1 /tmp/b/, наконец, конечная обратная косая черта в месте назначения сделает ее копию в этой папке /tmp/b/.Этот метод также гарантирует, что вам не нужно перезапускать оболочку, потому что она запускается в подоболочке. Вы можете добиться аналогичных результатов, помещая их в файл сценария вместо выполнения из командной строки.
$ cp -r --verbose a/. b
`a/.' -> `b'
`a/./zzz' -> `b/zzz'
$ cp -r --verbose a/. b
`a/./zzz' -> `b/./zzz'
Не думаю, что я видел, как это описано где угодно; Я просто пытался использовать разные возможности и нашел тот, который работал. Насколько я знаю, это закономерное следствие того, как работают /. и cp. (В отличие от синтаксиса для rsync, упомянутого в другом ответе, который явно задокументирован как частный случай).