Ошибочный выход. Больше флагов
Если будет ошибка, то она выйдет сразу же.
$? статус выхода прошлой команды. В Linux статус выхода 0 средств, что команда была успешна. Любое другое состояние означало бы, что ошибка произошла.
egrep "^username"/etc/passwd>/dev/null искал бы имя пользователя под/etc/passwd файлом. Если это находит его затем $ статуса выхода? будет равно 0. Если это не найдет это, то статус выхода будет чем-то еще (не 0), следовательно Вы "отзоветесь эхом, не существует".
Можно использовать -b
опция к ls
, который показывает не графические символы escape-последовательностями C-стиля.
ls -aq
распечатает все имена файлов, с a ?
вместо каждого непечатаемого символа. На многих вариантах Unix, ls -AB
или ls -Ab
(проверьте свою страницу справочника), распечатает восьмеричные Escape. С ls -aq
, можно использовать отображенный вывод в качестве шаблона оболочки.
$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file
Другой способ достигнуть имя файла так или иначе состоит в том, чтобы использовать завершение Вашей оболочки: войти mv .
и нажимайте Tab неоднократно, пока странное имя не будет вставлено.
ls -q
не показал файл тогда как ls -b
сделал. возможно, потому что его имя файла не было [weird-character]OA.tex
но действительно `printf %b '\033OA'`.tex
– luxifer
01.09.2011, 08:50
.
в начале имени файла, таким образом, Вам нужно ls -Aq
или ls -aq
. И если Вы используете подстановочные знаки оболочки, необходимо сделать .
явный: *
не будет включать файл, но .*
будет.
– Gilles 'SO- stop being evil'
01.09.2011, 09:31
$DESTINATION/.$FILENAME
прежде чем это переместит файл в, он - корректное имя. Для этого в источнике файл имел нет .
в начале его имени. Кроме того, как сказано, ls -q
не показал бы файл тогда как ls -b
сделал.
– luxifer
05.09.2011, 09:23