Распечатать корсей в новом терминале
Я хочу запустить скрипт под названием tuxsay, который сочетает в себе удачу и cowsay, чтобы tux сказал несколько слов мудрости. Я сделал псевдоним.bash_aliases, назвав его tuxsay и выполнив скрипт
FORTUNE= $(fortune)
cowsay -f tux $FORTUNE
Затем у меня есть скрипт, который будет порождать новый терминал, и я хочу, чтобы он выводил результаты моего первого скрипта, а затем позволил мне работать в терминале, что-то вроде
xterm -e "tuxsay&"
Так как я могу создать новый терминал, использующий cowsay, и позволить мне работать в нем?
Особенности: у меня есть скрипт запуска, который будет порождать приложения, которые я обычно использую, и я хочу, чтобы он порождал терминал, который запускает мой скрипт tuxsay, а затем позволяет мне работать. Я на Ubuntu 12.04 LTS и работаю с dwm 6.0
1 ответ
Почему бы просто не добавить свою команду в свой .bashrc
файл? Затем он будет запускаться каждый раз, когда запускается новая интерактивная оболочка. Вы можете проверить, если $TERM
переменная содержит "xterm", и сделайте ваш вывод обусловленным этим. например, добавьте следующую строку в конец .bashrc
:
[[ "$TERM" =~ xterm ]] && tuxsay
Обновить
Хотя я думаю, что выше все еще, вероятно, самый полезный общий ответ, я заметил еще несколько вещей:
tuxsay
это псевдоним bash. псевдонимы bash понимаются только внутри самого bash, но когда вы передаете командуxterm -e
эта команда выполняется непосредственно xterm без участия bash. Система не сможет найти и выполнить файл с именем "tuxsay" и потерпит неудачу.Если выполняется из Bash, то
&
персонаж будет помещать команду tuxsay (псевдоним) в фоновом режиме, но это не очень помогает. Что вам нужно, так это новая оболочка, которая запускается после того, как Tuxsay будет сделан.Будь осторожен с
.bash_aliases
, В моей системе на базе Redhat я заметил, что псевдонимы, размещенные в этом файле, не работают, потому что.bash_aliases
файл не получен. ( Мои псевдонимы Bash не работают)..bash_aliases
по умолчанию поставляется из систем на основе Ubuntu, но никаких гарантий для других.
Учитывая вышесказанное, если вы определенно хотите, чтобы tuxsay запускался для каждого xterm - т.е. вы хотите указать это в командной строке xterm, - вы можете выполнить следующую однострочную строку:
xterm -e 'cowsay -f tux $(fortune); bash'
Это передает составную команду cowsay -f tux $(fortune); bash
в срок Эта составная команда состоит из двух команд: сначала выполните команду cowsay
вещь, а затем начать Баш.
Вы также можете поместить эти две команды в сценарий оболочки и передать сценарий оболочки в xterm.