Похож на Ваш вопрос, "Как перечислить файлы шаблоном, исключая каталоги с ls
только".
Нет никакого способа сделать это с чистым ls
. Можно объединиться ls
+ grep
как:
ls -ld *2010* | grep -v '^d'
Однако намного лучше использовать find
для этого:
find . -maxdepth 1 -type f -name "*2010*"
Вы могли попытаться перезаписать предыдущую строку, которой уже ответили;
Как изменить содержание строки на терминале в противоположность записи новой?
Например (измененный из исходного ответа):
prompt% echo -n "Old line"; echo "\033[1A\033[1A" "new line"
Отобразится только:
prompt% new line
Как вывод. Добавление больше \033 [последовательности на 1 А удаляет больше строк.
Протест: Это не работает над всеми терминалами.
Вместо того, чтобы иметь команду для ввода мысли Вы могли определить виджет для этого. В zsh
:
thought() {
print -r -- $BUFFER >> ~/.thoughts
# or: your-script $BUFFER
BUFFER=
zle -M 'thought recorded'
}
zle -N thought
bindkey '^T' thought
Затем нажмите Ctrl-T для добавления содержания буфера к Вашему ~/.thoughts
файл и ясный это впоследствии (BUFFER=
). Затем Вы не должны волноваться о заключении в кавычки.
Другой подход мог быть должен использовать интерактивные комментарии:
setopt interactive_comments
alias '@=:;#'
preexec() {
[[ $1 = @* ]] && {
print -r -- ${1#* } >> ~/.thoughts
# or: your-script ${1#* }
echoti cuu1
}
}
Снова, без проблем с заключением в кавычки, но который только работает на однострочные мысли. ( echoti cuu1
заботится об очистке той строки путем продвижения курсора).
print >> ~/.thoughts
был просто пример так, чтобы кто-либо мог протестировать его.
– Stéphane Chazelas
17.12.2013, 16:39
Предупреждение, это - ужасный, ужасный взлом (но затем, весь запрос является определенным взломом).:)
Вот что-то, что это будет работать над большинством терминалов, включая braindead MS-DOS эмулятор ‘ANSI.SYS’. Не будет работать над простыми терминалами, конечно (но ничто не будет):
tput sc
echo "This will be hidden."
sleep 5
tput rc; tput cuu 1; tput ed
Очевидно, это - пример. Избавьтесь от echo
и sleep
и замените его своей командой. Вот то, как это работает:
tput sc
сохраняет текущие координаты курсора на экране,tput rc
кладет обратно курсор к сохраненным координатам. Теперь, экран, возможно, прокрутил, таким образом, чувствительный материал будет на строке выше сохраненной. Так,tput cuu 1
перемещает курсор одна строка. (если Вы чувствуете себя особенно параноиками, не стесняйтесь увеличивать число.tput ed
очищается в конец экрана (т.е. очищается от курсора в конец строки, затем от курсора до нижней части экрана).Это перестанет работать комично, если экран прокрутит много потому что sc
не знает о прокрутке, просто экранирует координаты.
tput
терминальный агностик, таким образом, это будет работать, пока Ваш конкретный терминал перечислен в terminfo базе данных и TERM
переменная правильно установлена.
Ну, если это справедливо some random thought
вместо фактической команды, затем можно сделать так путем добавления space
перед thought
. Это исключит эту команду из вхождения в историю
satish@Satish:/tmp $ echo "I'm in history"
I'm in history
satish@Satish:/tmp $ echo "I'm not"
I'm not
satish@Satish:/tmp $ history | tail -n 3
1887 sudo su -
1888 echo "I'm in history"
1889 history | tail -n 3
satish@Satish:/tmp $
satish@Satish:/tmp $ echo "I'm not"
быть скрытым от терминала после того, как я выполняю его.
– whonoes
17.12.2013, 14:09
prompt% echo -n "Old line"; echo -e "\e[0K\r new line"
к dissapear от терминала. – whonoes 17.12.2013, 14:08tput
, не терминальные директивы, таким образом, это более портативно через терминалы. Это работает с многострочным выводом, также — но это повреждается, если вывод прокручивает много. – Alexios 17.12.2013, 15:45