Что такое <
?
Это перенаправление ВВОДА команды на чтение ИЗ файла. Вы можете поставить его до или после команды:
$ echo abcd > in
$ cat in
abcd
$ cat <in
abcd
$ <in cat
abcd
Проще говоря, команда читает файл. Разница между cat in
и cat <in
заключается в том, что <
задает перенаправление стандартного ввода STDIN ()для процесса cat
, в то время как в cat in
in
является аргументом, а Команда cat
должна что-то с этим сделать внутри. (Откройте его, затем прочитайте и т. д.)
Что такое |
?
Это перенаправление на процесс. Он может следовать только команде:
$ | cat in
bash: syntax error near unexpected token `|'
$ cat in | cat
abcd
$ cat in | cat |
>
(...и ожидание ввода...)
Что это делает:< /dev/urandom tr -dc 'a-zA-Z' | head -c 12
?
Разбить его на более мелкие части (команды с перенаправлениями):
< /dev/urandom tr -dc 'a-zA-Z'
= tr -dc 'a-zA-Z'
и< /dev/urandom
Значение :сделайте перевод того, что вы прочитали из urandom
.
|
-перенаправление на процесс с использованием анонимного канала
head -c 12
-это процесс, получающий перенаправление Вся фраза имеет смысл, не так ли?
Что это:< /dev/urandom | tr -dc 'a-zA-Z' | head -c 12
?
Разбить -вниз:
< /dev/urandom
-нет команды и перенаправление с/dev/urandom
|
-перенаправление на процесс с использованием анонимного канала tr -dc 'a-zA-Z'
-процесс, получающий перенаправление Что здесь не так? В первом «предложении» нет команды.
Что такое >
?
Это перенаправление вывода этой команды в файл. То же, что и <
, может использоваться до или после команды :
$ >out echo abcd
$ cat out
abcd
$ echo dcba >tuo
$ cat tuo
dcba
Что это должно делать:gunzip < HP-Fax4-hpcups.ppd.gz | cat > ouT1
?
Анализ:
gunzip < HP-Fax4-hpcups.ppd.gz
= перенаправить с HP-Fax4-hpcups.ppd.gz
наgunzip
(разрешить gunzip
прочитать этот файл)|
-перенаправить вывод в процесс cat > ouT1
= cat
— это процесс, который получает перенаправление, а затем его вывод перенаправляется в файлouT1
Все в порядке. Все части имеют смысл.
Что же это такое:gunzip < HP-Fax4-hpcups.ppd.gz cat > ouT1
?
Я не уверен на 100%, как это интерпретируется всеми заинтересованными сторонами, но давайте предположим. Ошибка такая:
gzip: cat.gz: No such file or directory
Первое слово в этой ошибке — gzip
, поэтому мы знаем, что gzip запущен. Также мы знаем (, по крайней мере, я знаю ), что перенаправления устанавливаются продавцом до того, как команда будет интерпретирована. Поэтому я анализирую это так:
< HP-Fax4-hpcups.ppd.gz
-устанавливает перенаправление INPUT процесса на HP-Fax4-hpcups.ppd.gz
, т.е.выполняемая команда будет читать из этого файла > ouT1
-ВЫВОД команды должен быть перенаправлен НАouT1
Пока все хорошо. На столе осталось вот это:gunzip cat
. Стандартная интерпретация этого состоит в том, что gunzip
— это команда, а cat
— ее аргумент. Итак, теперь gunzip
запускает (с перенаправлениями IN и OUT, установленными ), и получает строку cat
в качестве первого аргумента. И почему-то выдает ошибку:
gzip: cat.gz: No such file or directory
Что это значит, опять? Он gzip
говорит, что не может найти cat.gz
. Он хочет что-то с ним сделать (, скорее всего, открыть его ), а такого файла или каталога нет. Таким образом, это должно быть вопросом его внутреннего состояния, почему он делает cat.gz
из cat
, которое он получил в качестве аргумента. Простой эксперимент показывает, что он ожидает, что аргумент будет в формате gzip :
$ echo asdf > cat.gz
$ gunzip < in cat > ouT1
gzip: cat.gz: not in gzip format
Файл in
здесь представляет собой простой текстовый файл, отсюда и пустая строка, как я понимаю.