Часто случается, когда я работаю в оболочке - zsh - что я cd
что-то редактирую и хочу быстро просмотреть каталог. Использование ls
может выдать много вывода и оставить его в терминале. Использование ls | less
лучше, однако оно снова оставляет следы, когда я выхожу, less
весь его вывод там. Есть ли у вас идея, как я могу сделать что-то вроде ls | less
но когда я выхожу less
, он оставляет экран терминала нетронутым.
решение1
Для меня less
ведет себя так, как вы описываете - мне нужно использовать, less -X
чтобызапрещатьтакое поведение.
Вы можете попробовать явно использовать "альтернативный экранный буфер", которые реализуют многие терминалы.
Это используется такими редакторами, как vim
/ nano
, чтобы при выходе терминал восстанавливался до того состояния, в котором он был раньше.
Попробуй это:
tput smcup
ls | less
tput rmcup
Если tput
недоступен, то попробуйте использовать echo $'\e[?1049h'
/ echo $'\e[?1049l'
соответственно.
решение2
Поскольку вы упомянули, что используете zsh, вы можете воспользоваться встроенным в zsh автодополнением. Вы не получите "длинный" список ls, но вы можете предварительно просмотреть имена каталогов и файлов, набрав "ls " с последующим нажатием клавиши табуляции. Вы увидите, какие файлы/каталоги вы потенциально можете "ls" в вашем текущем рабочем каталоге, а затем вы можете либо выполнить ls для одного конкретного файла, либо добавить "-l filename", чтобы просмотреть его подробно, либо просто нажать "Control-u", чтобы очистить строку, на которой вы находитесь, и подготовиться к вводу другой команды, и предложения автодополнения исчезнут.
Например, когда я нажимаю "ls" [TAB] на одной из моих виртуальных машин, я вижу:
user@fbsd:~% ls
.cshrc .mailrc .ssh/
.login .profile .zshrc
.login_conf .rhosts code/
.mail_aliases .shrc inventory.hw.gather.sh*
Когда я нажимаю Control-u, подсказки под командной строкой исчезают.