Так как это - довольно сложный вопрос, я просто предоставлю несколько инструкций:
$()
должны быть заключены в кавычки точно так же, как вне этой конструкции. Никакой дополнительный выход не необходим. $()
и ``
конструкции разделяют запаздывание новых строк, таким образом, необходимо добавить другой символ и затем разделить его вне $()
конструкция:
varx="$([command which might print a value ending in \n]; echo x)"
var="${varx%x}"
--
в командах необходимо для разделения аргументов от имен файлов, так как имена файлов могут запуститься с --
, и был бы поэтому обработан как параметры. find
не поддерживает этот синтаксис, так использование readlink
получить полный путь, который по определению запускается с наклонной черты или удостоверяется что путь, данный find
является уже абсолютным или запускается с ./
.<(
вместо каналов для предотвращения поврежденных каналов, когда процесс отправки завершается.cat
или ssh
прихлебывание всего этого.$'--$`!*@\a\b\E\f\r\t\v\\\'"\360\240\202\211 \n'
Если Вы делаете следующее:
ls | grep -F -v ' '
Вы не будете видеть файла с пробелами на имена
(Я раньше имел fgrep
вместо grep -F
в примере, но как Отстающий Hauke, указанный, который удерживается от использования),
С GNU ls, т.е. в соответствии с невстроенным Linux:
ls -I '* *'
Не то, чтобы существует большая часть причины пропустить файлы, имя которых содержит пространство. Если Вы делаете это, потому что у Вас есть что-то как file_names=$(ls)
или for f in $(ls)
в сценарии не анализируйте вывод ls, и Ваша проблема, вероятно, уйдет.
Используя расширенные шарики KSH, можно отфильтровать имена файлов в расширении шарика:
ls -d -- !(A B C)
Возможно, это также полезно:
ls -l --quoting-style=literal:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A B C
ls -l --quoting-style=locale:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 „A B C“
ls -l --quoting-style=shell:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=shell-always:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=c:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 "A B C"
ls -l --quoting-style=escape:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A\ B\ C
fgrep
Я должен изменить свои привычки, которые возьмут немного – Anthon 28.04.2013, 18:52grep
работы над строками и именем файла могут быть сделаны из нескольких строк. – Stéphane Chazelas 06.05.2013, 23:20egrep
также удерживается от использования иgrep -E
теперь стандарт. – erch 06.05.2013, 23:36