Рейтинг:0

cat : не читать стандартный ввод, если в командной строке не указан входной файл.

флаг ph

У меня есть скрипт, который объединяет файлы с кот. Он содержит примерно следующую строку, которая зависает скрипт при чтении стандартного ввода, если в каталоге нет файлов:

кошка /путь/к/каталогу/* > concat.txt

Есть ли способ сделать кот ничего не читать из стандартного ввода и выводить пустой вывод, если файлы не существуют в /путь/к/каталогу/или использовать другую команду для достижения того же?

raj avatar
флаг cn
raj
В вашем случае, если в `/path/to/dir/*` нет файлов, `cat` отобразит сообщение об ошибке и ничего не прочитает со стандартного ввода. Вы действительно пробовали это? `cat` читает со стандартного ввода, только если **параметр отсутствует**, а не если **есть** параметр, указывающий на несуществующий файл.
Рейтинг:3
флаг us

Кажется, у тебя есть nullglob включено, чтобы /путь/к/каталогу/* расширяется до нуля, если файлы отсутствуют в /путь/к/каталогу/. Можно, конечно, отключить nullglob (магазин -u nullglob) и получить поведение по умолчанию, где /путь/к/каталогу/* остается как есть, если ничего не совпадает и кот будет жаловаться на несуществующий файл:

$ кошка /путь/к/каталогу/*
cat: '/path/to/dir/*': Нет такого файла или каталога

Вы также можете просто прикрепить /dev/ноль вместо этого в конце:

$ shopt -s nullglob; кошка /путь/к/каталогу/* /dev/null
$ эхо $?
0

кот получит немедленный EOF от /dev/ноль, поэтому он ничего не напишет и выйдет.

Serge Rogatch avatar
флаг ph
Спасибо, идея `/dev/null` особенно привлекательна.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.