, Как видеть, из которого прибывает вывод дескриптора файла?

Если вы хотите узнать, что пошло не так в вашей версии: вы использовали $ files вместо $ x в команде basename. Так что это должно работать (хотя и не проверено):

for x in *.txt
do
  mv "$x" "`basename "$x" .txt`.text"
done
4
25.08.2018, 13:42
1 ответ

Обычный вывод происходит на файловом дескрипторе 1 (стандартный вывод ). Диагностический вывод, а также взаимодействие с пользователем (подсказки и т. д. ), происходит с файловым дескриптором 2 (стандартная ошибка ), а ввод поступает в программу с файловым дескриптором 0 (стандартный ввод ).

Пример вывода на стандартный вывод/ошибка:

echo 'This goes to stdout'
echo 'This goes to stderr' >&2

В обоих приведенных выше случаях echoзаписывает в стандартный вывод, но во второй команде стандартный вывод команды перенаправляется в стандартную ошибку.

Пример фильтрации (удаления )одного или другого (или обоих )каналов вывода:

{
    echo 'This goes to stdout'
    echo 'This goes to stderr' >&2
} >/dev/null   # stderr will still be let through

{
    echo 'This goes to stdout'
    echo 'This goes to stderr' >&2
} 2>/dev/null   # stdout will still be let through

{
    echo 'This goes to stdout'
    echo 'This goes to stderr' >&2
} >/dev/null 2>&1   # neither stdout nor stderr will be let through

Выходные потоки подключаются к текущему терминалу(/dev/pts/0в вашем случае ), если они не перенаправлены в другое место, как показано выше.

4
27.01.2020, 20:54

Теги

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