то, что такое grep-v-f/dev/null, ожидало делать точно?

perl может не быть самым соответствующим если IO::Pty модуль установлен.

Во-первых, возможно, Вам не нужно ничто сложное, если given-thing-that-takes-long-time (gtttlt) может работать хорошо с каналами.

mkfifo input
nohup gtttlt <> input > output 2>&1 &

запускаться gtttlt (вход от именованного канала, вывода в регулярный файл). Затем Вы присоединяете к нему с:

tail -f output & cat > input

Если бы каналы не сделают, и Вам нужен терминал, то Вы хотели бы использовать что-то, что может запустить псевдотерминал как expect, zsh zpty, perl IO::Pty или sshd:

mkfifo input
nohup ssh -tt localhost gtttlt <> input > output 2>&1

И присоединить:

stty raw -echo; tail -f output & cat > input

Обратите внимание, что это не похоже на реализацию screen или tmux. screen и tmux реализуйте эмулятор терминала. Когда Вы повторно прикрепляете, Вы видите содержание экрана того эмулятора терминала. Здесь, когда Вы повторно прикрепляете, Вы только видите последние 10 строк вывода (хотя можно корректироваться путем передачи a -n 123 опция к tail). И мы просто передаем все данные терминалу хоста.

4
04.11.2014, 17:55
1 ответ

Из grep man страницы GNU:

-f FILE, --file=FILE.
 Получить шаблоны из FILE, по одному на линию. Пустой файл
 содержит нулевые закономерности, а значит, ничего не совпадает. (-f есть
 указанный POSIX).)
-в, -инверт-матч
 Инвертируйте смысл совпадения, чтобы выбрать несовпадающие линии. (-v
 указывается POSIX).)

поэтому grep -f /dev/null не будет совпадать с ничего , а grep -v -f /dev/null перевернет это и будет совпадать с всем .

У меня есть доступ ко множеству систем FreeBSD, но во всех из них установлена GNU grep, потому что она намного лучше (как для скорости , так и для возможностей, хотя кажется, что BSD grep догоняет ). Различия все еще есть, например, в границах слова .

Я подозреваю, что это ошибка BSD grep, хотя, возможно, спецификация неоднозначна. Заметка из этой "догоняющей" ссылки: BSD grep - это, по сути, попытка получить более неограниченно лицензированный клон GNU grep, что означает, что он всегда будет "позади", по крайней мере, на чем-то.

Если возможно, я рекомендую установить GNU grep на те системы, в которых используется BSD grep.

Если вы просто пытаетесь сделать свой код максимально переносимым, я полагаю, я бы ответил на вопрос, почему вы используете grep для ~ничего. Чего вы на самом деле пытаетесь достичь? Может быть, на этом лучше сосредоточиться.

1
27.01.2020, 21:01

Теги

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