Полезный пример ls-b, - Escape

Я плохо знаком с Ubuntu, и я учусь ls аргументы.

Я протестировал -b, --escape аргументы (print C-style escapes for nongraphic characters) но я не нашел полезный пример как использование это.

Я создал файл с именем \*\?\¿\º\ª\?\¿\&\%\$\·SpecialCharacterfile.txt использование touch, но когда я использую ls или ls -b это перечисляет то же.

*?¿ºª?¿&%$·SpecialCharacterfile.txt

Я использую Ubuntu 14.04.5 LTS

7
задан 5 March 2017 в 03:35

4 ответа

Все Ваши символы являются графическими (у них есть видимые глифы). Попробуйте имя файла, содержащее пробельные и невидимые символы:

$ touch  

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' $ ls -b \n\t\b\a\b $ echo * $ printf "%q\n" *

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n'

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\t'

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\b'

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\a'

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\b'

фактический полезный пример, где вывод был бы хитер иначе: имена файлов, которые случайно имели \r символ, вставленный в них, потому что окончания файла DOS помешали где-нибудь посреди операции:

$ od -c file-list 
0000000   s   o   m   e   -   f   i   l   e   .   t   x   t  \r  \n
0000017
$ xargs -a file-list touch
$ ls -b
\n\t\b\a\b  file-list  some-file.txt\r

я на самом деле видел это в некотором сообщении на U& L. Лично, я обычно использовал бы ls -q для вставки копии к самой командной строке:

$ ls -q
'' 

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\n\t\b\a\b' ' ' file-list 'some-file.txt'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

\r'

поведение по умолчанию в более новых версиях ls ls -q для интерактивного использования: , Почему 'ls' внезапно переносит объекты с пробелами в одинарных кавычках?

13
ответ дан 23 November 2019 в 06:09

Примером, который я нашел сам

$ touch "Hello This is my file"
$ ls
Hello This is my file

опция

$ ls -b
Hello\ This\ is\ my\ file

With -b, не Является 2-й лучше, когда я хочу использовать вывод где-то в другом месте в моем коде?

6
ответ дан 23 November 2019 в 06:09

В дополнение к ответ muru , который объясняет, что ни один из символов в Вашем имени файла не является неграфическим, я укажу, что Ваше имя файла на самом деле не содержит обратных косых черт (оболочка удаляет их при выполнении команды, конечно)

, Если бы это сделало, [то 111] заставил бы их быть распечатанными с Escape:

$ touch 'hi\(zanna' hi\(zanna
$ ls
hi(zanna  hi\(zanna
$ ls -b
hi(zanna  hi\\(zanna
4
ответ дан 23 November 2019 в 06:09

Путем Вы создали файлы, был, вероятно, путем прямой вставки теста. Создать файлы с обратной косой чертой выходит из Вас, должен использовать $'...' тип заключения в кавычки.

Таким образом создание файлов должно быть:

$ touch one$'\n'two  three$'\t'four

И ls -b покажет нам их представление:

$ ls -b                                                    
one\ntwo  three\tfour

В то время как значение по умолчанию ls не будет:

$ ls
one?two  three?four

Отметьте, это имеющее Escape обратной косой черты в файлах может повредить Ваши сценарии, следовательно никогда не нужно анализировать ls. И точно основная цель для ls -b - видеть, какие имена файлов имеют и потенциально диагностируют их.

4
ответ дан 23 November 2019 в 06:09

Другие вопросы по тегам:

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