Основное отличие заключается в обработке ошибок.
В следующем случае сообщается об ошибке
$ /bin/cat < z.txt
-bash: z.txt: No such file or directory
$ echo $?
1
В следующем случае об ошибке не сообщается.
$ cat z.txt | /bin/cat
cat: z.txt: No such file or directory
$ echo $?
0
С bash вы по-прежнему можете использовать PIPESTATUS:
$ cat z.txt | /bin/cat
cat: z.txt: No such file or directory
$ echo ${PIPESTATUS[0]}
1
Но он доступен только сразу после выполнения команды:
$ cat z.txt | /bin/cat
cat: z.txt: No such file or directory
$ echo $?
0
$ echo ${PIPESTATUS[0]}
0
# oops !
Есть еще одно отличие, когда мы используем функции оболочки вместо двоичных файлов. В bash
функции, которые являются частью конвейера, выполняются в суб-оболочках (за исключением последнего компонента конвейера, если включена опция lastpipe
и bash
] не интерактивный), поэтому изменение переменных не влияет на родительскую оболочку:
$ a=a
$ b=b
$ x(){ a=x;}
$ y(){ b=y;}
$ echo $a $b
a b
$ x | y
$ echo $a $b
a b
$ cat t.txt | y
$ echo $a $b
a b
$ x | cat
$ echo $a $b
a b
$ x < t.txt
$ y < t.txt
$ echo $a $b
x y
Имена получены из перевода PCI vendor:device code аппаратного обеспечения с использованием локальной базы данных/текстового файла для текстовых описаний.
Сам файл находится по адресу /usr/share/misc/pci.ids
.
В данном случае в Debian 9/Stretch в этом файле вы можете найти:
"Intel Corporation":
[line 19280] 8086 Intel Corporation
Centrino Ultimate....
[line 24449] 422b Centrino Ultimate-N 6300
Судя по тексту, код вашего PCI vendor:device кажется 8086:422b