AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 756778
Accepted
Manuel Jordan
Manuel Jordan
Asked: 2023-09-17 23:59:38 +0800 CST2023-09-17 23:59:38 +0800 CST 2023-09-17 23:59:38 +0800 CST

Como saber qual é a aba atual - número ou posição - de qualquer Terminal de Janela?

  • 772

Para Ubuntu e Fedora se for aberto um Terminal de Janela através de ctrl+ alt+ tentão é possível abrir uma nova aba através de shift+ ctrl+ t. Suponha que exista um Terminal de Janela com 5 abas. Se possível vá até qualquer um deles através do alt+ #(onde #pode ser 1-5)...

Agora, se o Window Terminal tiver mais abas como 9,10...

Pergunta

  • Como saber qual é a aba atual? Seu número ou posição.

Para lidar com as seguintes situações:

  • Como saber para onde retornar depois (suponha que a aba atual seja 8, e vamos para 3, e depois é necessário que ela retorne para 8). Então é preciso saber/obter 8.
  • Qual é a próxima/anterior da aba atual (suponha que a aba atual seja 7 e seja necessário ir para a próxima aba, 8). Então é preciso saber/obter 7.

Eu tentei o ttycomando, mas se a aba atual for 5, ele mostra /dev/pts/4. Como você pode ver N-1. Até aqui pode ser aplicada uma matemática simples .... e algumas vezes mostra o valor direto esperado, como por exemplo /dev/pts/5. Não sei por que essa diferença . Portanto, o valor retornado nem sempre é preciso.

Ainda mais, se em outro espaço de trabalho existir outro Window Terminal com algumas abas, se for executado o ttycomando, aparece um número aleatório, normalmente seria a continuação da aba mais alta + 1 do Window Terminal anterior. Então se no primeiro Terminal de Janela tiver 5 abas no segundo Terminal de Janela para sua primeira aba o ttycomando mostra /dev/pts/5(N-1) ou diretamente /dev/pts/6. Mas é esperado /dev/pts/1, portanto, se novas abas forem abertas, a correlação deverá ser baseada a partir de 1.

Observação considere que se alguma aba for movida (arrastar e soltar) para outra posição, o "comando" deverá refletir a nova posição/número

Nota Mesmo que ttynão seja o comando correto, qual comando atingiria esse objetivo?

command-line
  • 2 2 respostas
  • 28 Views

2 respostas

  • Voted
  1. Best Answer
    Marcus Müller
    2023-09-18T01:50:47+08:002023-09-18T01:50:47+08:00

    Presumo que você esteja usando gnome-terminal, pois esse é o padrão que você usaria no Gnome, que é o ambiente de área de trabalho padrão nessas plataformas. (e provavelmente, porque você diria se usasse um emulador de terminal diferente!)

    Pelo que sei, não existe tal comando. O programa (no seu caso, principalmente o shell) executado em uma aba tem muito pouco conhecimento dessa aba. Não deveria ! Além disso, há uma camada indireta entre "guia" e "console virtual" (o servidor de terminal gnome, que pode tecnicamente ser usado para mostrar algum ptty em uma, várias ou nenhuma guia), então, hm, a suposição de que você está sempre em uma guia específica simplesmente não funciona em geral. No entanto, isso pode se aplicar nos casos de seu interesse.

    O que você pode fazer é usar a $GNOME_TERMINAL_SCREENvariável de ambiente para obter informações sobre a sessão do emulador de terminal em execução. Ele contém um caminho dbus, mas até onde uma introspecção "rápida"¹ nos diz que podemos obter uma lista de abas abertas², podemos executar comandos em abas, mas é isso.

    Portanto, além de não existir tal comando, parece que o que você deseja não é possível.


    Abordando o que você queria alcançar :

    suponha que a aba atual seja 8, e vamos para 3, e depois é necessário que ela retorne para 8

    Você pode definir o título atual da sua guia manualmente (clique com o botão direito no título da guia, "Definir título…") para saber onde está

    Mas, honestamente, tudo isso parece que você é um "usuário avançado", usando muitos terminais virtuais, e gnome-terminaltalvez não seja a ferramenta para gerenciar tudo isso para você. tmuxpode ter vários chamados painéis que podem ser exibidos ao mesmo tempo, e você pode ter várias janelas (não confundir com janelas no sentido X11/wayland) contendo painéis, que você pode renomear, deslocar, reordenar, abrir, perto... do desejo do seu coração. Tudo isso acontece em uma única instância do terminal gnome.

    tmuxé um pouco confuso quando alguém vem do mundo gráfico (tipo, todo mundo nascido depois de 1987, eu acho), mas seu Guia de primeiros passos é realmente bom, quando você o lê de cima para baixo e não tenta pular para dentro no meio disso. Você pode fazer coisas inteligentes como "ei, lembro que havia um painel onde estou correndo nvim, você pode procurar isso em todas as janelas, por favor?".

    Talvez experimente. Instale o tmux e execute tmuxno seu terminal gnome. Você é saudado por seu shell normal e uma pequena linha de status estranha.

    Execute toppara obter um monitor de carga do sistema em execução constante. Como queremos lembrar que esta é a janela com o monitor do sistema, pressionamos ctrl+ b, seguido de ,. Observe a linha de status! Agora nos pede um novo nome para esta janela. Suponho que o "monitoramento do sistema" funcione. Você decide. Ok, legal, parece haver atalhos de teclado para algumas coisas. Não me lembro de muitos atalhos de teclado. Então eu prefiro a interface de comando tmux: pressione ctrl+ b, seguido por :. Agora você pode digitar comandos. Eu digito split -he clico Enter(também há tabpreenchimento automático). Zack, agora você tem dois painéis em sua janela (divididos hhorizontalmente, aliás). Quero monitorar o espaço livre em meus discos, então nesse novo painel eu executowatch df -h. Legal.

    Agora quero uma nova "janela" do tmux. Lembro-me da combinação de teclas para isso, ctrl+ bc( ccomo create). Eu administro meu editor favorito nisso (no meu caso, seria nvim, mas no seu caso, pode ser emacs, vim, vi, nano, ed… não julgo.).
    Porque quero lembrar o que estava fazendo aqui, renomeio minha janela. Mas desta vez, não uso o atalho de teclado ( ctrl+ b), mas simplesmente executo tmux rename-window "config edit"ou algo assim).

    Agora posso fazer esse jogo por um tempo e ter centenas de janelas em minha sessão. A barra de status lista isso, mas isso realmente ajuda? claro, usando ctrl+ bfagora posso procurar a janela onde comecei a escrever uma carta para minha avó antes que meu editor ficasse lento, verifiquei no monitor do sistema e comecei a editar alguns arquivos de configuração… essa é a ideia.


    ¹dbus-send --session --print-reply --type=method_call --dest=org.gnome.Terminal "$GNOME_TERMINAL_SCREEN" org.freedesktop.DBus.Introspectable.Introspect

    ²dbus-send --session --print-reply --type=method_call --dest=org.gnome.Terminal /org/gnome/Terminal/screen org.freedesktop.DBus.Introspectable.Introspect

    • 2
  2. ctrl-alt-delor
    2023-09-18T03:13:05+08:002023-09-18T03:13:05+08:00

    Konsoleusa variável de ambiente. Não tenho ideia de outros emuladores de terminal.

    #↳ set | grep -i kon
    KONSOLE_DBUS_SERVICE=:1.955
    KONSOLE_DBUS_SESSION=/Sessions/2
    KONSOLE_DBUS_WINDOW=/Windows/1
    KONSOLE_VERSION=221203
    

    Parece que você precisa usar a tupla SESSION/ WINDOWpara identificar uma janela exclusiva e sessiona guia =.

    Considere tmuxuma ferramenta mais poderosa para fazer isso.

    • 1

relate perguntas

  • O comando ip suporta curingas?

  • Qual é a interface recomendada para um utilitário que requer muitos parâmetros? [fechado]

  • Execute o aplicativo X remotamente, execute a GUI no host remoto [fechado]

  • Fazendo mysql CLI me pedir uma senha interativamente

  • Pub / sub de linha de comando sem um servidor?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve