Печать на «стандартном выходе» и «стандартной ошибке»

Я озадачен некоторой терминологией, используемой в моей домашней работе:

Итак, как я понимаю, вопрос заключается в том, что я должен печатать echo , cat и т. Д., Которые я бы сделал с помощью команды echo , например

 echo echo echo cat echo ´!!´ 

Разве это означает, что «печатается на стандартном» ?. Я здесь, на правильном пути?

Тогда я не знаю, что подразумевается под «ничто не печатается при стандартной ошибке при вводе команды».

2 Solutions collect form web for “Печать на «стандартном выходе» и «стандартной ошибке»”

Я считаю, что вы должны интерпретировать эту домашнюю работу как означающую, что вам нужно вывести слово blotz, используя каждую из команд: echo , cat , ls , grep и !! в очереди.

Конечно, тривиальный случай – echo blotz .

Можно cat команда cat выводит содержимое файла. ( man cat может быть полезен здесь.) Ваша домашняя работа позволяет вам заранее подготовить файл для вывода, так что это должно быть очень просто.

Остальные подумают о достижении нужного результата.

В этом вопросе вам предлагается использовать каждый из списков команд и заставить эту команду печатать строку blotz и ничего больше. Если ваш учитель хочет напечатать новую blotz после каждого blotz (что непонятно из вашего вопроса), вы можете сделать следующее:

 $ echo "blotz" blotz $ echo "blotz" > file && cat file blotz $ touch blotz && ls blotz blotz $ echo blotz | grep b ## This might also include (invisible) color codes blotz $ echo blotz | grep --color=never b ## This one avoids the color codes blotz 

Использование !! сложнее, поскольку по умолчанию он также распечатает запуск команды. Например:

 $ blotz ## run blotz to get that saved as !! blotz: command not found $ echo !! ## print the value of !! echo blotz ## Unfortunately, this also prints the command being run. blotz 

Чтобы обойти это, вы можете создать небольшой скрипт:

 set -o histexpand set -o history blotz echo !! 

И затем запустите его так:

 $ bash foo.sh 2> /dev/null blotz 

Там может быть умный взлом для этого, используя подоболочки, но я не смог его найти.


Если ваш учитель даже не хочет новой строки, используйте вместо этого:

 $ echo -n "blotz" $ echo -n "blotz" > file && cat file $ touch blotz && ls blotz | tr -d $'\n' $ echo blotz | grep --color=never b | tr -d $'\n' 

И для !! сценарий:

 $ bash foo.sh 2> /dev/null | tr -d $'\n' 
  • Вывод скрипта python, выполняющегося как единица, не соответствует порядку, в то время как оболочки не отображаются
  • Скрипт для быстрого тестирования всех клавиш клавиатуры
  • Есть ли процесс, который не отправляет EOF до завершения и как его создать?
  • Как добавить новые строки при использовании эха
  • Неясно, где идет выход bash
  • Tail -f передается через grep, не выводящий в файл, но выводит на консоль
  • Вставка текста командной строки перед выходом в stdout (для канала / перенаправления)
  • shell stderr to / dev / null
  • Как сортировать файлы отдельно без слияния?
  • Перенаправить часть скрипта bash в файл для захвата set -x output
  • Unix без / dev / stdin, / dev / stdout и / dev / stderr?
  • Linux и Unix - лучшая ОС в мире.