3

Если я использую встроенную команду BD 'cd' в подстановке команд, она выводит дополнительные данные в стандартный вывод, но только при передаче по трубопроводу, например, в меньше.

$ echo `cd .`

# The output is a single newline, appended by echo.


$ echo `cd .` | less
# less displays:
ESC]2;my.hostname.com - tmp/testenv^G
(END) 

Что там происходит? Это поведение не описано в справочной странице bash для cd. Очевидно, что просто использовать 'cd' в подстановке команд глупо, но что-то вроде

NEWDIR=`cd mypath; pwd`

может быть полезным.

Я решил это, вместо этого используя

NEWVAR=`cd mypath > /dev/null 2>&1; pwd`

но я все еще хочу знать, что происходит.

Версия Bash: GNU bash, версия 3.2.25(1) -релиз (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc.

Распространение: Scientific Linux SL выпуск 5.5 (Boron)

1 ответ1

0

Вы видите escape-последовательность xterm (ESC 2; new-title ^ G), чтобы изменить заголовок окна.

(Следующее - в основном гипотеза.)

Когда вы записываете вывод в терминал, ваш эмулятор терминала (я предполагаю) удаляет его из потока перед отображением на экране. Когда вы передаете вывод через меньшее, вы видите весь вывод.

Проверьте значение $PROMPT_COMMAND ; вы можете увидеть команду, которая печатает строку (вероятно, с использованием $PWD или вызовом pwd).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .