2017-01-17 14 views
1

Я думаю, было бы здорово, если бы некоторые вещи запускались, когда вы просто нажимаете клавишу ввода в командной строке, не вводя ничего. Это своего рода необычная вещь, поэтому я не уверен, где искать и как к ней подойти.В оболочке есть способ запустить команду по умолчанию, когда вы просто нажимаете клавишу ввода без ввода чего-либо

Вы хоть представляете, как я мог бы сделать что-то подобное? Может быть, запустите что-нибудь в подсказке ... но только когда ничего не введено.

Надеюсь, у кого-то есть идея или да или знать. Я лично использую рыбу, но мне было бы любопытно в любой из основных оболочек, bash, zsh.

Спасибо!

P.S. Кроме того, существует способ создания объекта, такого как ctrl-R, где вы вводите строку поиска. Можете ли вы добавить крючок в ctrl-something?

+0

Командный процессор на самом деле не различает команды, разделенные символами новой строки и командами, разделяемыми точками с запятой, так что бы вы хотели, чтобы ваша команда по умолчанию запускалась несколько раз в ответ на вход вроде ';;;;'? – chepner

+0

(Ах, мой комментарий не относится к 'fish', и подобное обходное решение может быть доступно в' bash', 'zsh' и т. Д.) – chepner

+0

Смешная рыба явно не обратилась к вашему окончательному вопросу, но она тоже решает использовать команда 'bind'. Например, 'bind \ cr 'echo hello''. –

ответ

5

В рыбе, вы можете сделать это, установив пользовательские привязки для возвращения, который изменяет командную строку, если она пуста:

function replace_command 
    string length --quiet (commandline) 
    or commandline "echo hello world" 
    commandline -f execute 
end 

bind \n replace_command 
bind \r replace_command 

Это будет работать echo hello world, если вы нажмете return с пустой командной строкой.

(Смотри fish_user_key_bindings, если вы не знаете, где должны указываться заявления bind).

+0

Спасибо. Это очень полезно. –

1

Вы можете установить переменную оболочки «PS1» или «PROMPT_COMMAND», чтобы достичь желаемого.

Например, я поставил PS1 на это в моем .bashrc контролировать мою подсказку:

export PS1='`date +%H:%M:%S` `echo $PWD | sed "[email protected][email protected][email protected]"` -> ' 

, который отображает текущее время, а затем текущего каталога (с HOME часть снята), и «- > '.

И когда я ударил возвращения, он делает обновление времени:

10:50:19 ~ -> cd /tmp # cd changes the date & directory part in prompt 
10:50:51 /tmp ->   # I just hit return key 
10:50:52 /tmp ->   # Now the prompt shows updated date 
+1

Это выполняется после команды * any *, но не только пустой команды. – chepner

+0

Я согласен с @chepner. Это не проверяет, была ли введена пустая команда. – codeforester

+0

Теперь мне просто нужно проверить, что что-то введено ... –