Как контролировать буферизацию труб в сценариях bash?

Мне нужно, чтобы мой скрипт исполнялся с помощью stdbuf -i0 -o0 -e0 иначе пользователь будет задаваться вопросом, почему нет выхода (из-за буфера канала). Как я могу получить его?

 #!/usr/bin/stdbuf -i0 -o0 -e0 /bin/bash 

приводит к

 /usr/bin/stdbuf: invalid mode '0 -o0 -e0 /bin/bash' 

2 Solutions collect form web for “Как контролировать буферизацию труб в сценариях bash?”

Обычно нет необходимости отключать весь скрипт. Это необходимо только для определенных программ.

Но если вы хотите сделать это так, вы можете просто вызвать скрипт из себя:

 #! /bin/bash if [ yes != "$STDBUF" ]; then STDBUF=yes /usr/bin/stdbuf -i0 -o0 -e0 "$0" exit $? fi 

Появляется два субоптимальных решения:

Субоптимально, по крайней мере, когда вы вводите команду в команду. В противном случае они могут быть оба в порядке. script записывает ваш вход и unbuffer просто не позволяет вам вводить правильно. YMMV

  • Почему корневой вывод bash окрашен, но `sudo ls` нет?
  • Получить полный каталог $ file
  • Настройка tabstop для вывода bash
  • Получить последнюю минуту из строк из списка
  • Несколько файлов переименования
  • Какова цель -e в команде sed?
  • Перемещение файлов из разных подпапок в подпапки
  • Как перебирать переменную, пропуская одно из значений?
  • Как установить вывод heredoc в локальную переменную
  • Как печатать ip с iftop, отсортированным по использованию полосы пропускания
  • Сделать zsh использовать readline вместо zle?
  • Linux и Unix - лучшая ОС в мире.