Есть ли возможность получить тип терминала с помощью команды?
Если я использую gnome-terminal, вывод должен быть gnome-terminal или что-то подобное. Было бы неплохо получить версию терминала.
Update
ps -aux | grep `ps -p $$ -o ppid=`
выведет что-то вроде этого:
user 4239 0.0 0.7 292708 15744 pts/8 Sl 11:39 0:02 xfce4-terminal
user 4800 0.0 0.0 6176 820 pts/0 S+ 12:23 0:00 grep --color=auto 4239
Это также будет работать с xterm, но как мне получить только имя ( xfce4-terminal в этом случае)?
Попробуйте это,
ps -aux | grep `ps -p $$ -o ppid=` | awk 'NR==1{print $11}'
ИЛИ
ps -aux | grep `ps -p $$ -o ppid=` | awk 'NR==1{print $NF}'
basename "$(cat "/proc/$PPID/comm")"
$PPID - это PID родительского процесса оболочки. comm означает команду. Это может быть или не быть полным путем, поэтому мы используем basename, чтобы удалить путь, если это необходимо.
Они, вероятно, применимы, по крайней мере, к некоторым другим ответам .
comm технически argv[0], который фактически может быть произвольной строкой. Но в целом вы должны быть в состоянии полагаться на это в этом конкретном случае. Это будет работать не так, как ожидалось, если вы подключаетесь через SSH или используете tmux, screen или что-то подобное.Вы можете попробовать следующую команду:
$ dpkg-query -W $COLORTERM
gnome-terminal 3.6.2-0ubuntu1
Обновить (спасибо OP и Avinash Raj):
$ dpkg-query -W $(ps -aux | grep "`ps -p $$ -o ppid=`" | awk 'NR==1{print $11}' | xargs basename)
rxvt 1:2.7.10-5
Другая (не идеальная) возможность:
xprop -id $WINDOWID WM_CLASS | cut -d" " -f3 | sed 's/^.\(.*\)..$/\1/'
Но это не работает с lxterminal, потому что есть переменная среды $WINDOWID пустая ...
Terminator показывает имя «x-terminal-emulator».