Распечатать корсей в новом терминале

Я хочу запустить скрипт под названием 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.

Другие вопросы по тегам