Как проверить, какой эмулятор терминала используется в настоящее время?

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

Seagate 2nd Gen Momentus XT (750 ГБ) Гибридный обзор от Anand Lal Shimpi 12/13/2011

Существует также «говорящая голова» Seagate 2nd Gen Momentus XT (750 Гбайт) Гибридный обзор от Anand Lal Shimpi 12/13/2011 , который составляет около 11 футов. Вкусы меняются, но, говоря о себе, я нашел видео приятным.

Обзор видео не касается особенностей производительности накопителя. Вместо этого Ананд дает обзор привода и то, как он работает. Большая часть видео состоит из его взглядов на экономику рынка жестких дисков, почему Momentus XT имеет только 8 ГБ SSD, почему SLC NAND используется, возможный эволюционный путь, которым может следовать Momentus XT, и где привод позиционируется относительно другого хранилища.

Мне нравятся обзоры Ананда, потому что я чувствую, что он больше фокусируется на реальных технологиях. Он редко просто повторяет точки разговора с пресс-релиза какого-либо маркетолога. Tech «обзоры» слишком часто просто отражают фразы, такие как «Быстрая загрузка», которые обеспечивают более «правдоподобие», чем проницательность.

На самом деле, я думаю, что он не использует « обзоры » Seagate в любом месте в своем обзоре печати или видео. Мне кажется, что он неявно говорит: «Зачем беспокоиться? Если я не могу сказать ничего о том, как это работает, то какое значение будет упомянуть об этом?»)

Суть его в том, что он действительно нравится новый Momentus XT, но это, по сути, просто лучшая версия, эволюционное совершенствование оригинала.

Он также упоминает, что Seagate планировал обновить прошивку накопителя когда-нибудь в начале 2012 года. Это обновление позволит диску использовать SSD для кэширования записи, а также кэширование чтения. Учитывая, что в июне 2012 года это должно было произойти.

Наконец, он где-нибудь упомянул « Зачем беспокоиться? Если я ничего не могу сказать о как это работает, то какое значение будет упоминать его добавить? », но только в ответе на один из комментариев к обзору. Все, что он говорит, это:

«Все еще копается в загрузке FAST. Если он работает так, как я думаю, он работает, он должен иметь возможность кэшировать загрузочные данные из нескольких ОС. «

Если он когда-либо следил за этим с более подробным обзором, я не нашел его.

1
задан 1 November 2012 в 00:34

6 ответов

Вы можете получить имя эмулятора терминала, указав имя процесса родительского процесса. Поэтому он работает с каждым эмулятором терминала.

В bash, zsh и т. Д .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [

6
ответ дан 25 May 2018 в 04:52
  • 1
    Однако обратите внимание, что это вызовет аргументы программы при запуске ими эмулятора терминала. – Robobenklein 16 June 2017 в 16:53
  • 2
    Это работает, если я подключен с помощью SSH? – user3731622 21 March 2018 в 21:38

Попробуйте следующее:

echo $TERM

Это более авторитетно, но может быть испорчено вашими программами. Однако по моему, он говорит xterm, а на ttys он говорит linux, что, я думаю, означает Linux Console.

4
ответ дан 25 May 2018 в 04:52
  • 1
    $TERM - это переменная, которая ссылается на спецификацию как самооценку используемого терминального эмулятора, а не на сам эмулятор. Например, в моей системе echo $TERM возвращает xterm, хотя я фактически запускаю lxterminal. То, что происходит, - это lxterminal self-reports xterm compliance. lxterminal на самом деле не полностью совместим с xterm, поэтому вам нужно следить. Файлы спецификаций обычно расположены в /usr/share/terminfo. – stazher 1 January 2017 в 02:44

Во многих системах linux echo $TERM return xterm см. выше stazher post.

Чтобы использовать фактический терминал, сделайте следующее:

1: Закройте все экземпляры терминала в настоящий момент

2: Откройте новый терминал с помощью обычного метода.

3: Введите команду следующим образом:

ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)

4: Возврат должен быть примерно таким:

lxterminal --geometry=135x20

Вот разбивка:

Итак: ps является «статусом процесса» [!d9 ]

ps option -o - Отображать информацию, связанную с пробелом или запятыми, указанными ключевыми словами. Звучит сложно, но на самом деле это не так. (пробел или запятая), разделенные (список ключевых слов).

Итак, (список ключевых слов) есть 'cmd=' В списке всего одно ключевое слово. Итак, просто попросите отобразить команду для открытия терминала.

ps option -p есть «по идентификатору процесса». Вау это очень хороший вариант для ps. Проблема в том, что вы должны передать ps этот идентификатор процесса. Итак, как получить идентификатор процесса? Мы разворачиваем выражение $(ps -o 'ppid=' -p $$)

Здесь мы должны начать думать немного глубже. Мне жаль, что я не изобрел этот баш-лайнер, но я этого не сделал. Кажется, я украл его с https://wiki.archlinux.org/ где-то, я больше не мог найти. Эти парни потрясающие, но много раз я не могу понять, что они говорят, пока после долгих исследований. То, что мы можем сделать, - это понять это сейчас, потому что я объясню.

, поэтому мы знаем, что $ - оператор расширения в bash. Мне нравится думать «un-wrap». Таким образом, $(foo -opt bar) развернет или расширит «foo -opt bar». Но в bash одиночная круглая скобка (...) открывает подоболочку.

Итак, $(foo -opt bar) расширяет «foo -opt bar», как запускается в дочерней оболочке.

Хорошо, теперь мы снова запускаем почти идентичную команду, ps -o 'ppid=' -p $$, но на этот раз ps, статус процесса, показывает нам, что он может видеть как запущен в дочери shell .

-o список ключевых слов, только одно ключевое слово, как и раньше, но ppid= это запрашивает непосредственно идентификатор процесса родительской оболочки !! От НЕГО ДОЧЕРНИЙ ШЕЛЛ! Очень умный, да? Я так взволнован, когда могу это понять!

-p снова «по id процесса», а в bash $$ - это идентификатор процесса.

Если вы вызываете или любую другую команду, запрашивающую $$ непосредственно из первой оболочки, он может сказать pid = 1 или pid из xWindow или из вашей настольной программы, или вы можете получить фактический pid оболочки. Если вы спросите много раз, вы можете получить разные ответы каждый раз!

Но, если вы вызовете дочь и спросите ее: «Кто твой папа», она скажет вам! Очень умно. Хотелось бы, чтобы я был таким гением, чтобы изобрести этот метод.

0
ответ дан 25 May 2018 в 04:52
  • 1
    ОК, так что АС не позволит должным образом разбиться в течение одного сообщения. Извините, не желая сражаться с системой блога и делать несколько сообщений. Может быть, вы можете получить представление. – stazher 1 January 2017 в 03:45
  • 2
    Ваш другой ответ, кажется, сложный и информативный комментарий к этому ответу , а не ответ на вопрос ... Было бы здорово, если бы вы могли объединить два своих ответа в один и удалить один из них, и добавить к нему, чтобы он полностью отвечал на вопрос. Использовать ---- для рисования линии посередине? Также есть кнопка. – Zanna 1 January 2017 в 05:01
  • 3
    Я думаю, что я точно ответил на вопрос OP, и подробно. Вы прыгнули на меня, прежде чем у меня появилась возможность понять систему редактирования блога и закончить. Принесите вниз голоса, я привык к этому. – stazher 1 January 2017 в 11:43
  • 4
    Я не думаю, что я прыгнул на вас, я просто делал обзор ... спасибо, что сделал ваш пост более полным – Zanna 1 January 2017 в 11:57
  • 5
    Благодарю за ваш ответ. Мне жаль, может быть, я вскочил на тебя. Я очень извиняюсь. – stazher 1 January 2017 в 12:02

Вы правы, я только ответил на заголовок вопроса, а не на вопрос в теле. Итак, вы идете, а Боб - дядя.

Я не уверен, в чем дело, в одном ответе, показанном выше. Такой переключатель не нужен. Мой скрипт ~ / .bashrc на самом деле является только одной простой строкой, все команды эха просто для удовольствия. Как объяснить ...

Любой термин при запуске читает ~ / .bashrc и выполняет любые команды, которые он увидит в .bashrc. Таким образом, независимо от того, какой термин вызывается, он будет читать .bashrc и выполнять команды, поэтому только структура, необходимая в .bashrc, должна была бы изменить поведение или исключить один или несколько терминов. Желаемое поведение для каждого термина для выполнения одной и той же команды, поэтому case switch не требуется. Терминал сам расскажет вам, как его вызвали, поэтому нет необходимости различать.

Примечание (1) Я не тестировал гейку, но работает для всех остальных, упомянутых в первом ответе jlliagre.

Примечание (2) Из-за форматирования в уценке для wiki вы не можете вырезать и вставить, как показано. Вы должны удалить каждый обратный ход, в том числе для удаления символов подчеркивания, и добавить фактический обратный ход, без пробела до ps или после -p $$).

скрипт для ~ / .bashrc

# show welcome message for actual terminal in use
echo "Welcome.  You are attempting to use"
echo ""
echo _backtick_ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)_backtick_
echo ""
echo "Good Luck and God Speed."

Это было очень весело. Я добавил это к своему собственному ~ / .bashrc.

0
ответ дан 25 May 2018 в 04:52
  • 1
    за Примечание (1), прошли тестирование на Tilda, отлично работают. Гэке похож на Тильду, но написан на питоне, так что еще не знаю о Гэке. – stazher 2 January 2017 в 00:38

, если вы используете bash, я уверен, что эта команда вам поможет:

which $(ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$))

0
ответ дан 25 May 2018 в 04:52

Если вы использовали ZSH, есть лучшее (более быстрое) решение, которое использует только встроенные модули ZSH и напрямую управляет /proc/$pid/{stat,cmdline}.

get-terminal-emulator() {
    if [[ $TTY = "/dev/tty"* ]]; then
        echo "linux-console"
        return
    fi
    local pid=$$ name=''
    while true; do
        proc_stat=(${(@f)$(</proc/${pid}/stat)})
        name=${proc_stat[2]//[()]/}
        case "${name}" in
            gnome-terminal|konsole|rxvt|xterm)
                echo "${name}"; return ;;
            python*)
                local cmdline=(${(@f)$(</proc/${pid}/cmdline)})
                if [[ "$cmdline" =~ "\\bguake.main\\b" ]]; then
                    echo "guake"; return
                fi
                ;;
        esac
        if test "$pid" = "1" -o "$pid" = ""; then
            echo "unknown"
            return
        fi
        pid=${proc_stat[4]}       
    done
}
0
ответ дан 25 May 2018 в 04:52

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

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