Как выполнить больше чем одну команду в недавно открытом терминале?

  1. Shift+PageUp PageDown) работает здесь без любых специальных настроек...
  2. Взгляните на man urxvt:

    pointerBlank: boolean
       True: blank the pointer when a key is pressed or after a set number
       of seconds of inactivity. False: the pointer is always visible
       [default].
    
    [...]
    pointerBlankDelay: number
       Specifies number of seconds before blanking the pointer [default
       2]. Use a large number (e.g. 987654321) to effectively disable the
       timeout.
    

    Это могло быть тем, что Вы ищете. (Страница справочника также объясняет, где установить эти директивы Xresource.)

3
12.07.2013, 17:15
4 ответа

Можно выполнить то, что Вы хотите как это:

$ gnome-terminal -e "bash -c '<cmd1>;<cmd2>;exec $SHELL'"

Это откроется <cmd1>, когда это будет завершено, это откроется <cmd2>, наконец это оставит Вас в командной строке exec $SHELL.

Например:

$ gnome-terminal -e "bash -c 'vim;vim;exec $SHELL'"

Выполнения vim, если я закрываю 1-е vim, 2-е vim запускается. Когда 2-й закрывается, меня оставляют при терминальной подсказке.

7
27.01.2020, 21:13
  • 1
    , который я пытался сделать исполнительный $SHELL в начале, показать командной строке, но который остановил остальную часть команд от выполнения.Как же так? –  CodeBlue 12.07.2013, 17:41
  • 2
    Поскольку это что exec делает. –  tripleee 12.07.2013, 17:42
  • 3
    я хочу видеть подсказку каждый раз перед командой, начинает выполнение. –  CodeBlue 12.07.2013, 17:42
  • 4
    @CodeBlue - exec $SHELL заменяет оболочку, не создавая новый процесс. При наблюдении командной строки, прежде чем начинается каждая команда, не выполнимо здесь данный нет подсказки для показа. Bash выполняется через -e, это обычно отображало бы подсказку, но в этом случае мы говорим Bash командам выполнения, -c, так cmd#1 выполнения, когда это сделано, cmd#2 выполняется Bash. Когда cmd#2 выполнения, мы говорим Bash заменять себя (exec ...) с $SHELL, который является /bin/bash. exec $SHELL первый раз, где существует на самом деле подсказка для отображения. –  slm♦ 12.07.2013, 18:01

Попробовать gnome-terminal -e "myprogram1; myprogram2". Вы могли также попробовать a && вместо ;.

1
27.01.2020, 21:13
  • 1
    Следует иметь в виду это myprogram1; myprogram2 отличается, чем myprogram1 && myprogram2. Точка с запятой ; средства это myprogram2 выполняется после myprogram1, независимо от его состояния возврата (было ли выполнение успешно, или возвратило ошибку). && средства это myprogram2 выполняется только если myprogram1 работал успешно. Вы видите пример этого при компиляции программ из источника: ./configure && make && make install означает, что осуществление каждой последовательной программы зависит от успешного выполнения предыдущей команды - make install не будет работать если make неудавшийся. –  MattDMo 12.07.2013, 17:26

Можно вставить программы ~/.bashrc файл

Это допустимо для оболочки удара при использовании ее. Каждый раз, когда Вы открываете терминал, eitheir через tty или терминал гнома, он выполнится.

В основном Вы просто добавляете в конце файла свои программы, которые будут выполняться.

-1
27.01.2020, 21:13
  • 1
    это могло быть опасно, или не совсем что OP хочет как те команды, был бы выполнен каждый раз, когда Вы открываете оболочку входа в систему удара. Возможно, именно это он хочет, но я пытаюсь сохранить мой .bashrc свободный от материала, который работает автоматически (если я действительно не хочу, чтобы он работал каждый раз, как установка огибающих переменных) и вместо этого вставляют условные выражения, такие как проверка, чтобы удостовериться, что я нахожусь в X и т.д. –  MattDMo 12.07.2013, 17:53

Если вы хотите выполнить много команд после запуска терминала лучшим подходом было бы написать функцию, экспортировать ее и вызвать эту функцию. Создайте сценарий оболочки, подобный приведенному ниже, для соответствия вашему приложению:

my_function(){
    command1
    command2
    .
    .
    .
    commandn
}

export -f my_function

$(x-terminal-emulator -e "bash -c 'my_function'")

У вас также может быть несколько функций. Но тогда вам нужно будет написать другую функцию, которая будет действовать как основная, т.е. которая вызывает все остальные функции. Итак, вы настраиваете свой терминал на выполнение этой основной функции, которая позаботится обо всем остальном.

0
27.01.2020, 21:13

Теги

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