Вот описание grep
из GNU.org:
grep
поиски вводят файлы для строк, содержащих соответствие к данному списку шаблона. Когда это находит соответствие в строке, это копирует строку в стандартный вывод (по умолчанию) или производит то, что другой вид вывода Вы запросили с опциями.
У меня есть эта команда, которую я часто использую, который дает название в настоящее время подключенного монитора:
xrandr | grep " connected " | awk '{ print$1 }'
Я не вижу файлов в этой команде или ссылок на них, поэтому что точно продолжается? grep
используемый для другого материала кроме ищущих файлов?
От man grep
(шахта акцента):
grep searches the named input FILEs (or standard input if no files are
named, or if a single hyphen-minus (-) is given as file name) for lines
containing a match to the given PATTERN. By default, grep prints the
matching lines.
И из документов GNU (снова, шахта акцента):
2.4 grep Программы
grep
ищет именованные входные файлы строки, содержащие соответствие к данному шаблону. По умолчанию grep печатает согласующие отрезки длинной линии. Файл называют-
обозначает стандартный вход. Если никакой вход не указан,grep
поиски он рабочий каталог.
если дали рекурсия определения параметра командной строки; иначе,grep
вход стандарта поисков.
Стандартный вход, в этом случае, является каналом, подключенным с xrandr
стандартный вывод.
grep
является лишним в этом случае; awk
может сделать задание отдельно:
xrandr | awk '/ connected /{print $1}'
Когда Вы делаете:
xrandr | grep " connected "
Вы в основном перенаправляете стандартную продукцию (описатель файла 1, /dev/stdout
) xrandr
к стандартному входу (описатель файла 0, /dev/stdin
) grep
, это - работа по трубе.
Как grep
берет вход от стандартного входа, когда никакое имя файла не будет дано, Ваша команда будет иметь успех, что касается файла.
Вы можете думать о нем как:
grep 'pattern' /dev/stdin
<час> Вы можете получить желаемую продукцию с grep
один (никакой awk
необходимый):
% xrandr | grep -Po '^[^ ]+(?= connected)'
LVDS1
Это доберется, первое место отделило слово линии (^[^ ]+
) сопровождаемый пространством, и затем Word connected
((?= connected)
нулевая ширина, положительный предварительный образец, гарантирующий <space>connected
, подобран после желаемой части).