cd
в другую папку на каждой вкладке (т.е.: выполните уникальную команду). PS1
переменнаяЯ хочу, это написало сценарий так, я могу нажать сценарий на свой Рабочий стол и иметь его, открывают терминалы, как я хотел бы за свою ежедневную среду разработки.
У меня есть этот сценарий, чтобы попытаться открыть 3 терминальных вкладки с уникальными командами, которые будут выполнены на вкладках:
#!/bin/bash
gnome-terminal --tab -- bash -ic "set-title title 1; exec bash"
gnome-terminal --tab -- bash -ic "cd ~; set-title title 2; exec bash"
gnome-terminal --tab
Когда я выполняю его с ./open_tabs.sh
, это открывает 3 новых вкладки, но к сожалению set-title
не работает для установки заголовка вкладки! Это появляется PS1
переменная не остается установленной с моим set-title
звонить. exec bash
есть ли для хранения вкладки открытой, на этот ответ и комментарии под ним.
Я имею set-title
определенный как функция в ~/.bashrc
как это. Его цель состоит в том, чтобы установить строку заголовка наверху любого окна терминала. Это работает отлично, когда я использую его вручную. Исключая: set-title hey how are you?
поместит "эй как дела?" наверху моего окна терминала.
# From: https://unix.stackexchange.com/questions/177572/how-to-rename-terminal-tab-title-in-gnome-terminal/566383#566383
set-title() {
# If the length of string stored in variable `PS1_BAK` is zero...
# - See `man test` to know that `-z` means "the length of STRING is zero"
if [[ -z "$PS1_BAK" ]]; then
# Back up your current Bash Prompt String 1 (`PS1`) into a global backup variable `PS1_BAK`
PS1_BAK=$PS1
fi
# Set the title escape sequence string with this format: `\[\e]2;new title\a\]`
# - See: https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Customizing_the_terminal_window_title
TITLE="\[\e]2;$@\a\]"
# Now append the escaped title string to the end of your original `PS1` string (`PS1_BAK`), and set your
# new `PS1` string to this new value
PS1=${PS1_BAK}${TITLE}
}
Как я фиксирую это так, чтобы каждая вкладка выполнила команду, установила ее заголовок путем изменения ее PS1
переменная, и остается открытой?
Отметьте это gnome-terminal
удержал от использования --title
и --command
опции, следовательно эти обходные решения.
Откройте Terminal с несколькими вкладками и выполните приложение <==, это - то, что я действительно пытаюсь решить, но gnome-terminal
--command
(-e
) опция теперь удерживается от использования!
# Option “--command” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.
Как имеет место с большей частью программирования, решение проблемы было чрезвычайно трудно. Я должен был изучить набор о переменных Bash, и как использовать export
и source
(или POSIX отмечает точкой оператор, .
), и как удар загружается, и что интерактивный -i
режим удара был и т.д. и т.д.
Я нашел man bash
и man test
также быть полезным. Вот то, как сделать то, что я хочу сделать, который является:
~/.bashrc
файл:# Function to allow a user to arbitrarily set the terminal title to anything
# Example: `set-title this is title 1`
set-title() {
# Set the PS1 title escape sequence; see "Customizing the terminal window title" here:
# https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Customizing_the_terminal_window_title
TITLE="\[\e]2;$@\a\]"
PS1=${PS1_BAK}${TITLE}
}
# Back up original PS1 Prompt 1 string when ~/.bashrc is first sourced upon bash opening
if [[ -z "$PS1_BAK" ]]; then # If length of this str is zero (see `man test`)
PS1_BAK=$PS1
fi
# Set the title to a user-specified value if and only if TITLE_DEFAULT has been previously set and
# exported by the user. This can be accomplished as follows:
# export TITLE_DEFAULT="my title"
# . ~/.bashrc
# Note that sourcing the ~/.bashrc file is done automatically by bash each time you open a new bash
# terminal, so long as it is an interactive (use `bash -i` if calling bash directly) type terminal
if [[ -n "$TITLE_DEFAULT" ]]; then # If length of this is NONzero (see `man test`)
set-title "$TITLE_DEFAULT"
fi
open_tabs.sh:
gnome-terminal --tab -- bash -ic "export TITLE_DEFAULT='title 1'; cd ..; exec bash;"
gnome-terminal --tab -- bash -ic "export TITLE_DEFAULT='title 2'; cd ../..; exec bash;"
gnome-terminal --tab -- bash -ic "export TITLE_DEFAULT='title 3'; cd ../../..; exec bash;"
Теперь откройте терминал и работайте open_tabs.sh
сценарий:
./open_tabs.sh
Вуаля! Это волшебно! Эти 3 новых вкладки теперь показывают наверху моего терминала, и каждый сделал надлежащее cd
управляйте, чтобы я установил, и у каждого есть надлежащий заголовок, который я установил!
Это будет все помещено в мой dotfiles проект: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.
Полное и конечное решение: посмотрите здесь: Откройте Terminal с несколькими вкладками и выполните приложение
Я думаю, что необходимо использовать &
заставить Ваши процессы работать в фоне.
https://www.tecmint.com/run-linux-command-process-in-background-detach-process/