Есть ли команда для копирования вышеуказанной строки в терминале? Это независимый от оболочки вопрос (например, bash, zsh и т.д.), В основном я использую pwd и хочу скопировать вывод, не вводя длинный каталог в моей следующей команде.
1 ответ
Bash не сохраняет автоматически стандартный вывод или стандартный вывод предыдущей команды. Это главным образом не делает это из-за соображений производительности. Это может потенциально занять много ОЗУ, если вывод stdout очень велик, как это иногда бывает.
По этой же причине эмуляторы терминала, начиная от встроенного Linux VT до gnome-terminal
, накладывают достаточно небольшое ограничение на количество буферов прокрутки (количество строк, которые вы можете прокрутить), прежде чем оно "обернется".
Занятие такого большого объема ОЗУ автоматически и без запроса пользователя значительно замедлит работу оболочки для многих сценариев и последовательностей команд, которые не требуют такого специфического поведения.
Вместо этого пользователь должен заранее знать, что он хочет сохранить стандартный вывод, и затем может ссылаться на него в своих последующих командах.
Два способа сделать это:
echo $(pwd)
- встроенныйMYPWD=$(pwd); echo ${MYPWD}
- отдельная переменная для захвата вывода и последующего обращения к нему
Кстати, вы можете проверить переменную среды PWD
. Это может помочь вам использовать способ 2.