Яке значення зірочки, зворотної косої риби, двокрапки та двох у (* \: 2)?


14

Яке значення має наступна lsкоманда?

ls -l *\:2,*T
  • ls = список
  • -l = довгий (список)
  • *Tмабуть, означає Tв кінці

А як щодо цього *\:2і кома?

Відповіді:


25

*\:2,*T- це глобальна картина файлів, яку потрібно перелічити. Щоб зрозуміти це, нам потрібно запам'ятати кілька речей:

  • : доводиться рятуватися в оболонці, стаючи \:
  • Імена файлів можуть легко містити коми

Так *\:2,*T, наприклад, відповідатиме файлу під назвоюTranscationNumber:2,EventType:XYT

EDIT

З коментарів, про необхідність (чи ні) уникнути :потреби потрібно кілька слів: Не варто суворо уникати :знаку, але сам баш пропонує це при автозавершенні.


3
Дякую вам, і Євген, і HBruijn. Я підозрював деяку складну глобальну схему, але насправді вона повинна просто відповідати двокрапці та комах, про що я не думав, працюючи з файлами. Тепер команда абсолютно має сенс: перерахуйте всі файли електронної пошти в каталогах Maildir, які позначені як "Видалено" (T). Btw. Число 2 означає Maildir у версії 2 (див. Wiki2.dovecot.org/MailboxFormat/Maildir ).
jugmac00

11
З тих пір, коли це :потрібно уникати?
Бармар

7
:не потрібно уникати. Він особливий лише в конкретних обставинах (коли використовується як команда), а не в глобальних шаблонах. \:Еквівалентно :, втеча не має ніякого значення.
тердон

1
@Aaron, це не зовсім не-оп: оболонка все одно буде обробляти змінні підстановки, особливо різноманітність призначення (тобто встановлювати значення за замовчуванням):unset var; : ${var:=x}; echo $var
glenn jackman

3
@terdon & @Aaron Двокрапка :є частиною значень за замовчуванням для COMP_WORDBREAKSзмінної середовища. У автоматичному завершенні Bash ці символи використовуються як роздільники слів у бібліотеці рядків читання, а ім'я файлу, що містить двокрапку, звичайно, має бути одним словом. Звідси причина того, що автозаповнення баш вимагає
уникнення

14

Список усіх файлів, які відповідають шаблону підстановки *:2,*T

Там підстановочний знак *відповідає будь-якому (будь-яка кількість усіх можливих символів) -
:2,це символи, які повинні бути присутніми у назвах файлів / каталогів.
Товста кишка :- це особливий персонаж, від якого потрібно уникнути, звідси і форма \:2,.
Імена файлів / директорій повинні закінчуватися символом a T.

Імена файлів, які б відповідали

:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T

1
У цьому немає нічого особливого: його не потрібно уникати.
Кевін

Автоматичне доповнення @Kevin bash автоматично уникає двокрапки в шаблонах імен файлів / каталогів, оскільки воно входить до списку COMP_WORDBREAKзначень середовища, встановлених за замовчуванням. - Отже, це насправді не є спеціальним спеціальним символом, але коли ви використовуєте автодоповнення в командному рядку і хочете / потрібно зіставити назви файлів з двокрапкою, його потрібно уникати.
HBruijn

9

Як зазначали інші, це буде перераховано у довгому форматі, файли, що містять :2та закінчуютьсяT

Це виглядає як пошук у папці Maildir для файлів, які були видалені (потрапили в кошик). Однак для надійності він мав би мати інший *наприкінці. Можуть бути додані нові прапори з пізнішим алфавітним положенням, і Dovecot, наприклад, додає ще одне поле з розміром файлу в кінці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.