Я могу настроить удар для выполнения “ясный”, прежде чем каждая команда ввела в консоли?

В конечном счете, если Вы - планирование того, чтобы заставлять людей упаковать это для их дистрибутивов, что Вы захотите сделать, устанавливают или время компиляции или настроенное местоположение для каждой из этих вещей. Например, с помощью autoconf/automake/configure для установки макросов для - префикса, - bindir, - datadir и так далее.

В целом я думаю, что большинство дистрибутивов не использует/opt/для упакованных исполняемых файлов (они вошли бы в/usr/bin или/usr/sbin как соответствующие). Кажется, что пользователи, как ожидали бы, будут использовать файлы в ~/MyStevedore/регулярно, не создавая это как ~/.MyStevedore/простительно, но некоторые дистрибутивы могут использовать файловый менеджер, который ожидает все в ~/MyDocuments/MyStevedore/или ~/Desktop/MyStevedore/

22
03.08.2012, 23:37
4 ответа

Bash имеет рычаг перед командой. Вид.

preexec () {
  clear
}
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return                     # do nothing if completing
    [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
    local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; # obtain the command from the history, removing the history number at the beginning
    preexec "$this_command"
}
trap 'preexec_invoke_exec' DEBUG
22
27.01.2020, 19:43
  • 1
    Gilles: Я вставил вышеупомянутое в консольный терминал и вывод от каждой команды, которую я впоследствии ввел, был очищен, прежде чем я мог считать его. Я пропускаю что-то? Кроме того, что происходит для этого (и другой ответ ниже), если я вызываю многострочный сценарий удара, где больше чем одна строка (или какая-либо строка кроме последней) генерируют интересный вывод? –  Joe 11.08.2012, 02:20
  • 2
    @Joe Это должно очистить экран после нажатия Enter, прежде, чем выполнить команду. Это работает как это на меня. Предысполнительный рычаг выполняется для каждой интерактивной команды, не имеет значения, является ли команда встроенным или внешней командой или многими командами. –  Gilles 'SO- stop being evil' 11.08.2012, 02:27
  • 3
    @Joe необходимо добавить этот рев строки, ничего не делает, если завершенный [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return; проблема состоит в том, что PROMPT_COMMAND выполняется и также захватывается после фактической команды; Также Может кто-то говорить мне почему local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; здесь? –  MageProspero 30.06.2013, 05:25
  • 4
    @JamesAndino history -1 печатает последнюю командную строку, с числом истории впереди. Фильтр sed снимает изоляцию с числа истории. –  Gilles 'SO- stop being evil' 30.06.2013, 12:02
  • 5
    @JamesAndino, Который заставил его работать (и я вижу Giles, добавил его к его ответу.) –  Joe 01.07.2013, 20:56
bind 'RETURN: "\e[1~clear; \e[4~\n"'

После того каждого раза Вы нажимаете возврат вместо просто записи \n это переместится в начало строки, введет текст clear;, затем переместитесь в конец и войдите \n поскольку это ожидало.

6
27.01.2020, 19:43
  • 1
    новая строка заставляет подсказку быть распечатанной так или иначе, так помещая ясное в подсказке, выполняет то же самое, не загрязняя историю команд clear команды. –  jw013 03.08.2012, 23:51
  • 2
    @jw013 различие является этим в моем случае clear выполняется, прежде чем вывод команды и команды не исчезает. Однако в случае, если с подсказкой это делает. –  rush 03.08.2012, 23:54
  • 3
    , которого я желаю, был некоторым способом сделать это, не имея необходимость изменять саму командную строку - я уверен, что это прервало бы интересные пути на сложных или многострочных командах, но я не могу найти лучший способ сделать это. –  jw013 04.08.2012, 00:22
  • 4
    @jw013, Вы правы, это действительно повреждается для мультилиний.. Это вставляет clear; к выводу для каждого дополнительного \n. –  Peter.O 04.08.2012, 02:39
  • 5
    эта подсказка является очень хорошим спасибо!! Я должен был связать некоторый определенный код с F2, но несколько раз строка имеет некоторую команду, которую я ввел, но не выполнил, таким образом, с этим напр.: bind "\"\\eOQ\":\"\e[1~ls;#\\n\"" это переместится в начало, ввести ls;# комментарий, что было там и работало ls управляйте правильно! Спасибо! большое спасибо –  Aquarius Power 01.02.2016, 20:02

От вопроса, который я спросил сегодня (с кредитом пользователю @ Acolley's Ответ ):

bind '"\C-m": "\C-l\C-j"'

A \ CM Имитация ключа «Enter» , \ Cl , моделирующий Ctrl + L , так как это понятно, и \ CJ - «Newline-and-chaps», поэтому команда является обязательной клавишей Enter Ctrl + L & Ctrl + J

, который работает на GNU Bash, версии 3.2.53 (1) -Release (x86_64-Apple-darwin14), а другие ответы на эту тему не делают. Кроме того, это не загрязняет историю с «ясными» командами любой другой командой.

2
27.01.2020, 19:43

Рассмотрите очистку только тогда, когда вы хотите

cb4() {
  preexec () {
    clear
  }
}

Здесь используется хук с именем preexec, подтверждено, что он работает и с zsh

Затем любой сеанс, который вы хотите автоматически очищать перед каждой командой, которую вы запускаете:cb4

Если вы уверены, что всегда хотите выполнять очистку в любом контексте

preexec () {
  clear
}

И если вы действительно хотите сбросить настройки терминала

заменить слово clearнаtput reset

tputне является обязательным, но ускоряет процесс сброса

0
27.01.2020, 19:43

Теги

Похожие вопросы