Что именно произойдет, если я введу «rm * .txt» в терминал (эмулятор) на машине * nix? - PullRequest
0 голосов
/ 12 апреля 2020

Что именно происходит? Есть ли в текущем каталоге линейный поиск и все с расширением .txt удаляется и все? Или есть что-то причудливое на заднем плане?

Ответы [ 3 ]

1 голос
/ 12 апреля 2020

Цитата из Bash manual :

После разделения слов, если не была установлена ​​опция -f (см. Построение набора), Bash сканирует каждое слово для символов '*', '?' и '['. Если появляется один из этих символов, то слово считается шаблоном, и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону (см. Сопоставление шаблонов).

Bash заменить * .txt реальными файлами в каталоге. Вы можете проверить, что Bash попытается удалить:

echo *.txt
1 голос
/ 12 апреля 2020

*. Txt сначала раскрывается оболочкой, затем в этом списке аргументов вызывается rm.

Именно поэтому иногда ваша команда не будет выполнена, если количество файлов очень велико и превышает максимально допустимое количество параметров.

Пример:

directory1/
    a.txt
    b.txt

cd directory1
rm *.txt

эквивалентно до:

cd directory1
rm a.txt b.txt
0 голосов
/ 12 апреля 2020

Нет ничего необычного в фоновом режиме (думаю, вы хотите знать, есть ли корзина, как в Windows).

Нет!

rm *.txt удаляет все текстовые файлы в каталоге, и они потеряны навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...