Что означает [co] в файле “ rm -rf filename [co] ” команда?

Вы также можете использовать tee для отправки вывода в файл:

command | tee ~/outputfile.txt

Небольшая модификация также будет захватывать stderr:

command 2>&1 | tee ~/outputfile.txt

или немного короче и менее сложно:

command |& tee ~/outputfile.txt

tee полезна, если вы хотите иметь возможность захвата вывода команды, а также просмотр ее вживую.

1
задан 21 July 2016 в 16:23

2 ответа

Это не параметр, а набор букв (или «shell glob»). То же самое:

rm -rf /tmp/hello.py[co]

совпадает с

rm -rf /tmp/hello.pyc
rm -rf /tmp/hello.pyo

Аналогично ...

rm -rf /tmp/hello.py[c-o]

удалит что-либо из /tmp/hello.pyc до и включительно /tmp/hello.pyo после заказа ASCII.

rm -rf /tmp/hello.py[ab][cd]

удалит ...

rm -rf /tmp/hello.pyac
rm -rf /tmp/hello.pyad
rm -rf /tmp/hello.pybc
rm -rf /tmp/hello.pybd
say, у меня есть файлы foo.js и foo.coffee, можем ли мы сделать что-то вроде rm -rf /tmp/foo.coffe[co], чтобы удалить /tmp/foo.js.

Вы можете сделать довольно причудливые методы, но для этих двух файлов я бы просто удалил их по 1 команде для каждого. В другом примере, как можно ближе к этим двум файлам ...

rm /tmp/foo.[cj]*

удалит такие файлы ...

rm /tmp/foo.c*
rm /tmp/foo.j*

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

17
ответ дан 23 May 2018 в 07:57
  • 1
    Если я не недопонимаю, вы получаете один вызов rm -rf со всеми совпадениями, а не с несколькими вызовами с одним совпадением. – Hurkyl 20 July 2016 в 19:33
  • 2
    да. но не цель rm, которую я добавил. это просто показать, что нужно будет ввести в качестве эквивалента ;-) – Rinzwind 20 July 2016 в 21:12

Это оболочка glob, похожая на подстановочные знаки * и ? ... в bash, шаблон имени файла *.[co] соответствует всем именам файлов, которые заканчиваются на .c или .o.

[d1 ] Разница с *.[co] по сравнению с *.c *.o или *.{c,o} заключается в том, что два последних шаблона будут расширяться до манекена *.o, если в каталоге нет файлов .o, а версия *.[co] - нет.

Shell globs полезны для выполнения операций с файлами с учетом нечувствительности. Например, если у вас есть куча файлов с именами файлов, которые заканчиваются на jpg, JPG, Jpg, JPg и т. Д. ... и вы хотите удалить все из них, вы можете сделать:

rm *.[Jj][Pp][Gg]
1
ответ дан 23 May 2018 в 07:57

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

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