Эта ошибка была исправлена в OpenSSH 7
. См. здесь для темы.
Это сообщение появилось из-за того, что злоумышленники пытались войти на ваш сервер. Не волнуйтесь, это нормально. Добро пожаловать в Интернет. Просто создайте хорошие пароли и отключите вход в систему root, и все будет готово.
В Openssh 7
вы увидите, что это будет выглядеть примерно так:
localhost sshd[26793]: fatal: Unable to negotiate with 192.168.100.243: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1 [preauth]
Процитировав $(..)
, вы получите один токен, а не N токенов:
Я начну с пары образцов файлов:
$ ls
a.mp3 b.mp3 c.mp3
Если я сделаю то же, что и вы, я получу одну строчку со всеми тремя:
for i in "$(ls *.mp3)"; do
echo "--> $i"
done
--> a.mp3 b.mp3 c.mp3
Если я опускаю кавычки вокруг $(...)
, я получаю три разные выходные строки:
for i in $(ls *.mp3); do
echo "--> $i"
done
--> a.mp3
--> b.mp3
--> c.mp3
Если у вас есть файлы с пробелами, то что-то вроде этого может решить вашу проблему (обратите внимание, что это относится только к файлам в текущем каталоге):
До
$ ls
'DaftPunk VeridisQuo.mp3' 'French79 AfterParty.mp3' 'French79 BetweentheButtons.mp3' 'French79 Hometown.mp3'
Используйте find
для переименования:
$ find *.mp3 -maxdepth 1 -type f -name *.mp3 -exec mv {} "electro_{}" \;
$ ls
'electro_DaftPunk VeridisQuo.mp3' 'electro_French79 AfterParty.mp3' 'electro_French79 BetweentheButtons.mp3' 'electro_French79 Hometown.mp3'
Почему я предложил find *.mp3
, а не просто find. -type f -name '*.mp3'...
?
$ find. -maxdepth 1 -type f -name '*.mp3' -exec mv {} "electro_{}" \;
mv: cannot move './French79 Hometown.mp3' to 'electro_./French79 Hometown.mp3': No such file or directory
mv: cannot move './French79 BetweentheButtons.mp3' to 'electro_./French79 BetweentheButtons.mp3': No such file or directory
mv: cannot move './French79 AfterParty.mp3' to 'electro_./French79 AfterParty.mp3': No such file or directory
mv: cannot move './DaftPunk VeridisQuo.mp3' to 'electro_./DaftPunk VeridisQuo.mp3': No such file or directory
Я предпочитаю использовать его напрямую:
for x in *.mp3
do
mv./"$x" "electro_$x"
done
То, что вы пытаетесь сделать, это простое массовое -переименование, которое легко обрабатывается perl-утилитой rename
(, также известной как prename
илиfile-rename
). Это НЕ то же самое, что и утилита rename
в пакете util-linux
(, которая имеет совершенно другие и несовместимые параметры командной строки -и возможности ).
Попробуйте
rename -n 's/^/electro_/' *.mp3
Опция -n
делает это пробным -запуском, который только покажет вам, как файлы.mp3 будут переименованы, если вы позволите. Чтобы на самом деле переименовать их, либо удалите -n
, либо замените его на -v
для подробного вывода.
$ touch DaftPunk_VeridisQuo.mp3 French79_AfterParty.mp3 French79_BetweentheButtons.mp3
$ ls -l
total 2
-rw-r--r-- 1 cas cas 0 Oct 21 14:30 DaftPunk_VeridisQuo.mp3
-rw-r--r-- 1 cas cas 0 Oct 21 14:30 French79_AfterParty.mp3
-rw-r--r-- 1 cas cas 0 Oct 21 14:30 French79_BetweentheButtons.mp3
$ rename -v 's/^/electro_/' *.mp3
DaftPunk_VeridisQuo.mp3 renamed as electro_DaftPunk_VeridisQuo.mp3
French79_AfterParty.mp3 renamed as electro_French79_AfterParty.mp3
French79_BetweentheButtons.mp3 renamed as electro_French79_BetweentheButtons.mp3
$ ls -l
total 2
-rw-r--r-- 1 cas cas 0 Oct 21 14:30 electro_DaftPunk_VeridisQuo.mp3
-rw-r--r-- 1 cas cas 0 Oct 21 14:30 electro_French79_AfterParty.mp3
-rw-r--r-- 1 cas cas 0 Oct 21 14:30 electro_French79_BetweentheButtons.mp3
Используйте IFS для установки разделителя. Разбивая на новые строки, пробелы не являются проблемой.
IFS=$(echo -en "\n\b")
for x in $(ls -1 *.mp3); do mv "$x" "electro_${x}"; done
Естественно, вы можете спросить, почему бы просто не
IFS='\n'
Это связано с тем, что $()
или обратные кавычки — это подстановка команд, которая отбрасывает завершающие символы новой строки.
Из руководства BASH
\n newline
\b backspace
Как я понимаю, это "возврат" (перемещение влево )для предотвращения удаления завершающего символа новой строки, что позволяет повторять его вfor
(каждом )цикле.
Это обсуждается более подробно в несколькихдругихstackoverflowвопросах