Невозможно прочитать файл / proc / pid / stack даже с соответствующими разрешениями

Итак, grep: grep -l '! #Abc' также требует список файлов для обработки:

grep -l '!#abc' ./*

работает со всеми файлами в текущем каталоге.

Для echo: echo "#! A" требуется немного больше цитирования, например:

$ echo '#!a'
#!a

$ echo '#'\!'a'
#!a

$ echo '#'\!a
#!a

$ echo "#!"a
#!a

$ echo "#"'!a'
#!a

$ echo $'#!a'
#!a

'#' - это символ комментария. Из LESS = + '/ ^ * COMMENTS' man bash :

КОММЕНТАРИИ

 В неинтерактивной оболочке или интерактивной оболочке, в которой параметр 
interactive_comments для магазина builtin включен (см. SHELL 
ВСТРОЕННЫЕ КОМАНДЫ ниже), слово, начинающееся с #, заставляет это слово и 
все оставшиеся символы в этой строке игнорироваться. Интерактивная оболочка 
без включенной опции interactive_comments не допускает комментариев 
. Параметр interactive_comments по умолчанию включен в интерактивных оболочках 
. 
 

Все, что следует за ним в одной строке, считается 'комментарием' и не обрабатывается, например:

$ echo one # two three
one

Если вы хотите Чтобы избежать его эффекта, вам нужно заключить его в кавычки или поместить сразу после другого непустого символа:

$ echo one t# wo three
one t# wo three

! - это «ключевой персонаж» истории.
Только верхушка айсберга: Из LESS = + '/ ^ * HISTORY EXPANSION' man bash :

HISTORY EXPANSION
Расширения истории вводятся появлением символа расширения истории, который есть! по умолчанию. Только обратная косая черта () и одинарные кавычки могут заключать в кавычки символ раскрытия истории, но символ раскрытия истории также рассматривается как кавычка, если он непосредственно предшествует закрывающей двойной кавычке в строке с двойными кавычками.


Итак, последний вопрос: Что значит #! на самом деле представляют? .

Ответ: Это зависит от обстоятельств. Также зависит от окружающих персонажей.
Зависит от того, цитируется оно (и как оно цитируется) или нет. И зависит от того, есть ли перед ним пробел и / или завершающий пробел.

При правильных кавычках - те же самые символы. Если не кавычки с начальным пробелом: комментарий. Если не кавычки, без начального пробела и без конечного пробела: раскрытие истории.
Если не кавычки, без начального пробела, с конечным пробелом: символы.

Это, конечно, предполагает, что оба параметра

shopt -p interactive_comments
shopt -po history

установлены. Каждый управляет соответствующим персонажем ( # и ! ) в интерактивных оболочках. В неинтерактивных оболочках всегда используется символ комментария, а раскрытие истории почти всегда не активируется.

2
21.09.2015, 23:21
0 ответов

Теги

Похожие вопросы