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 / user-266260

Alexei Martianov's questions

Martin Hope
Alex Martian
Asked: 2025-04-19 12:33:30 +0800 CST

Como (internamente) fd3>&fd1 após { fd1>&fd3 } coloca de volta (ou não) o fd original em fd1? ("descritor de arquivo inválido")

  • 10

`Estou lendo uma resposta para https://stackoverflow.com/questions/692000/how-do-i-write-standard-error-to-a-file-while-using-tee-with-a-pipe/692009#692009 , https://stackoverflow.com/a/14737103/5499118 :

{ { ./aaa.sh | tee bbb.out; } 2>&1 1>&3 | tee ccc.out; } 3>&1 1>&2

Como verifiquei, funciona conforme explicado. A resposta leva para https://unix.stackexchange.com/a/18904/266260 , que leva para https://unix.stackexchange.com/a/3540/266260 .

Não entendo por que { ... 1>&3 ... } 3>&1funciona (como o redirecionamento posterior reverte o efeito do anterior), porque quando eu queria entender man bash:

Observe que a ordem dos redirecionamentos é significativa. Por exemplo, o comando

ls > dirlist 2>&1

direciona a saída padrão e o erro padrão para o arquivo dirlist, enquanto o comando

ls 2>&1 > dirlist

direciona apenas a saída padrão para o arquivo dirlist, porque o erro padrão foi duplicado da saída padrão antes que a saída padrão fosse redirecionada para dirlist.

Encontrei duplicação de descritores de arquivo no redirecionamento :

Os redirecionamentos são implementados por meio da família de funções do sistema dup. dup é a abreviação de duplicação e quando você faz isso, por exemplo:

3>&2

você duplica (dup2) o filedescriptor 2 no filedescriptor 3 ...

Portanto, entendo que 1>&3duplica 3 em 1 e eles apontam para o mesmo objeto a partir desse comando man dup.

Após um retorno bem-sucedido, os descritores de arquivo antigo e novo podem ser usados ​​indistintamente. Eles se referem à mesma descrição de arquivo aberto.

Pela dupexplicação, não espero 3>&1mudar nada, pois 3 e 1 já são iguais. Mas aparentemente não é o caso, pois omitir 3>&1 dos { { ./aaa.sh | tee bbb.out; } 2>&1 1>&3 | tee ccc.out; } 3>&1 1>&2resultados embash: 3: bad file descriptor

O que (se houver) está incorreto ao explicar o redirecionamento com dupchamadas? O que acontece internamente durante 1>&3e 3>&1? Talvez { }sejam importantes aqui, mas vejo que são usados ​​apenas para agrupamento e por man bash:

list é simplesmente executado no ambiente de shell atual.

shell
  • 2 respostas
  • 364 Views
Martin Hope
Alex Martian
Asked: 2023-11-04 18:27:00 +0800 CST

man pages global search regex `.*word1.*word2.*` não encontra uma página que contenha ambas as palavras

  • 6

Quero usar mancom mais eficiência. Eu decidi tentar --regexa opção. No entanto:

~$ man --regex -K '.*textdomain.*perl.*'
--Man-- next: Locale::Messages(3pm) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
^C
~$ man --regex -K '.*perl.*textdomain.*'
No manual entry for .*perl.*textdomain.*

A fonte (para primeiro descobrir qual man abre) que extraí produz resultados grep vazios em ambos os sentidos, mas encontra palavras (textdomain, perl) separadamente:

~/Documents$ grep '.*textdomain.*perl.*' Locale\:\:libintlFAQ.3pm
~/Documents$ grep '.*perl.*textdomain.*' Locale\:\:libintlFAQ.3pm

No arquivo existe perl(por exemplo, linha 74) antes textdomain(por exemplo, linha 120). Por que man --regex -K '.*perl.*textdomain.*'não consigo encontrá-lo quando a ordem inversa das palavras o faz? grepmostra que nenhuma das sequências está em uma linha. Como realmente man --regex -Kfunciona? Deveria .*encontrar novas linhas ou não? Acho que a última resposta é "depende do sistema" (com base em https://stackoverflow.com/questions/11924480/search-in-man-page-for-words-at-the-beginning-of- linha ).

man
  • 1 respostas
  • 28 Views
Martin Hope
Alex Martian
Asked: 2023-10-21 11:23:49 +0800 CST

Como descobrir em qual tty um comando foi executado?

  • 5

Pesquisa na Web encontrada, por exemplo, https://askubuntu.com/questions/624848/view-history-of-commands-run-in-terminal , da qual entendi que existe o arquivo ~/.bash_historye o histórico temporário.

Tenho muitos terminais abertos e quero descobrir uma saída específica, historymostra o comando no qual estou interessado. Alguma maneira de descobrir ttyem que foi executado?

Histórico do PS bash, onde o comando executado discute pastas no sistema de arquivos para arquivos where.

bash
  • 1 respostas
  • 37 Views
Martin Hope
Alex Martian
Asked: 2023-10-10 19:41:41 +0800 CST

Como garantir que o script bash seja concluído antes que o serviço systemd seja iniciado?

  • 5

Quero que um script bash conclua seu trabalho (não apenas inicie) antes de um determinado systemdserviço, cuja solução o AFAIK envolve terminar antes que seu próprio serviço termine.

A pesquisa na Web encontra perguntas sobre como começar. Pelo que entendi, Before=a opção é esperar até que a unidade seja iniciada. Portanto lendo man systemd.servicevejo apenas uma opção Type=forking::

o gerente de serviço considerará a unidade iniciada quando o processo pai for encerrado.

mesmo que eu não bifurque nenhum processo em um script. Estou correto aqui? Isso garantirá (além de bugs, etc.) que meu script será concluído antes do Before=início do serviço?

Por exemplo, outro tipo: Type=exec:

"enquanto exec não prosseguirá antes que fork() e execve() no processo de serviço sejam bem-sucedidos."

Não está claro para mim o que proceedaqui significa, também lendo man execvenão entendo como o systemd saberá se execveterá sucesso como:

execve() não retorna em caso de sucesso e o texto, os dados inicializados, os dados não inicializados (bss) e a pilha do processo de chamada são substituídos de acordo com o conteúdo do programa recém-carregado.

Outros tipos (notify, dbus), como vejo, manprecisam de recursos especiais desde o processo iniciado.

systemd
  • 1 respostas
  • 33 Views
Martin Hope
Alex Martian
Asked: 2023-07-28 00:49:34 +0800 CST

find -exec bash -c {} +: por que apenas um arquivo encontrou dois?

  • 5
touch 1.txt 2.txt
find . -name "[12].txt" -exec sh -c 'echo "${1}"' sh {} + -exec echo {} +
./2.txt
./2.txt ./1.txt

Por que echodentro de sh -csaídas apenas um arquivo? Hoje pensei ter entendido como findfunciona a partir do Entendimento da opção -exec de `find` , mas agora fiquei confuso novamente. Obteve o mesmo resultado para -exec bash. TIA

bash
  • 1 respostas
  • 21 Views
Martin Hope
Alex Martian
Asked: 2022-12-04 00:40:50 +0800 CST

Como executar scripts nomeados com espaços via lista de aplicativos "abrir com" no Nemo para Linux Mint?

  • 5

TL;DR

Exec=gnome-terminal -- bash -c 'script="%u";if [[ -e "$script" ]] ; then "$script" ; else exec bash ; fi'A linha no arquivo da área de trabalho do GNOME executa scripts, mas apenas sem espaços no nome. Como executar script com qualquer nome?

Descrição completa de "o que eu quero" e o que eu tentei:

Desejo abrir scripts no editor por padrão do Nemo (gerenciador de arquivos AFAIK baseado no Nautilus), mas ainda ser capaz de abrir no terminal como outra opção no Nemo para abrir esses arquivos.

A pesquisa na Web encontra https://askubuntu.com/questions/286621/how-do-i-run-executable-scripts-in-nautilus . Não é novidade para mim, mas quando defino a opção no gerenciador de arquivos para "visualizar", não há opção para executar em "abrir com", tenho que abrir o terminal separadamente e inserir o nome do script.

Eu abri /usr/share/applications/org.gnome.Terminal.desktop, ele roda Exec=gnome-terminal --window. Eu encontrei https://askubuntu.com/questions/974756/how-can-i-open-a-extra-console-and-run-a-program-in-it-with-one-command e mudei a linha Exec=gnome-terminal --windowcom linha de amostra Exec=gnome-terminal -- bash -c 'script="%u";if [[ -e "$script" ]] ; then "$script" ; else exec bash ; fi', funciona para scripts sem espaços nos nomes, mas com scripts que contêm espaços, não resulta na saída de script esperada. Não é grande coisa, talvez, mas eu quero melhor.

Significado de, por exemplo, %uconfirmado aqui: https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html .

shell-script
  • 1 respostas
  • 18 Views
Martin Hope
Alexei Martianov
Asked: 2019-10-25 22:31:43 +0800 CST

screen -D -R ... Se necessário desanexar e sair remotamente - qual é o propósito de "logout remotamente" aqui?

  • 0

Meu caso de uso atual passado para mim no trabalho de screenuso é sshpara servidor, supara conta de usuário técnico, então screen -RD. Quando ssha sessão é perdida automaticamente devido ao tempo limite, repito as etapas e tenho meu "status do terminal" no servidor para essa conta técnica com a mesma aparência de se nenhuma redefinição de conexão tivesse acontecido.

Eu queria entender a importância dos -RDsinalizadores e na página de manual da tela que li (ênfase minha):

-D -R

Anexe aqui e agora. Em detalhes, isso significa: Se uma sessão estiver em execução, reconecte. Se necessário, desconecte e faça logout remotamente primeiro. Se não estava em execução, crie-o e notifique o usuário. Este é o favorito do autor.

Eu tentei pesquisar na web por logout remotely screen, o resultado principal relevante foi apenas https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/ , onde li sobre desanexação:

Desanexando uma tela

Apenas quando você deseja sair da sessão remota, mas deseja manter a sessão que você criou nessa máquina ativa, apenas o que você precisa fazer é desanexar a tela do terminal para que não tenha mais terminal de controle. Depois de fazer isso, você pode sair com segurança.

No SE, encontrei Como desconectar remotamente uma tela de outro terminal e https://askubuntu.com/questions/526972/remotely-log-out-of-graphical-gnome-session , mas essas são outras perguntas específicas.

Eu tentei ler o wiki sobre como fazer login, sair etc, mas ainda não está claro. Em qual sessão posso sair remotamente? Estou executando screenno servidor... Talvez esses sinalizadores sejam irrelevantes no meu caso de uso específico? Qual é o caso de uso mais comum para -RD(logout remoto)?

ssh
  • 1 respostas
  • 761 Views
Martin Hope
Alexei Martianov
Asked: 2019-10-24 21:33:01 +0800 CST

bash: FOO_VARIABLE=foo;./test não passa a variável foo para teste - por que não herdado?

  • 0

Eu fiz uma pesquisa na web e li vários artigos sobre o uso de variáveis ​​​​no bash, incluindo o wiki , mas não consegui entender por que a execução no bash FOO_VARIABLE=foo;./testnão resulta no teste $FOO_VARIABLEsendo foo:

Por padrão, quando um processo é criado, ele herda um ambiente duplicado de seu processo pai, exceto pelas alterações explícitas feitas pelo pai ao criar o filho.

Também li que: Exceção de herança de variáveis ​​de ambiente

"exceto para alterações explícitas": FOO_VARIABLE=foo ./test- resulta no testconhecimento do script FOO_VARIABLE, mas por que, em primeiro lugar, não?

echo $0
-bash

cat ./test
echo $MY_TEST
MY_TEST=test$MY_TEST
echo $MY_TEST

MY_TEST=ret;./test

test

Testado no CentOS 7 e Mac OS.

ADICIONADO: https://stackoverflow.com/questions/9772036/pass-all-variables-from-one-shell-script-to-outra segunda maneira é a fonte (o segundo script é chamado a partir do primeiro), então não é exportnecessário - por que meu caso é diferente?

ALTERAR acima: foi minha pressa e não muita atenção aos detalhes: perdi .(ponto) na seção de sourcing, agora li: https://superuser.com/questions/176783/what-is-the-difference- entre-executando-a-bash-script-vs-sourcing-it e essa parte está tudo claro.

https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference Sim, o meu é local, mas por que não é passado por herança (chamada de fork)?

bash
  • 2 respostas
  • 192 Views
Martin Hope
Alexei Martianov
Asked: 2019-01-23 03:40:32 +0800 CST

O que 's=.*/==' faz no sed? [duplicado]

  • 12
Essa pergunta já tem respostas aqui :
Qual é o propósito de "~" no comando "sed 's~ ~~g'"? [duplicado] (2 respostas)
Fechado há 3 anos .

Eu vi sed 's=.*/=='no contexto do script sh e estou intrigado. Não consegui encontrar no manual do sed ou na pesquisa na web (para sed s=) como sé usado, não s///. Além de sver apenas um comando potencial aqui =(Imprimir o número da linha de entrada atual), mas nesse caso o que o resto está fazendo ...

A execução do comando no shell produz a mesma saída que a entrada para, por exemplo echo 'jkfdsa=335r34', , enquanto echo 'jkfdsa=335r34' | sed 's/=.*/==/'a substituição ocorre conforme o manual. Também modificando ligeiramente o comando para, por exemplo , echo 'jkfdsa=3' | sed 's798=.*/==/'dar
sed: -e expression #1, char 11: unterminated 's' command, então original deve ter algum significado correto. O que é isso?

sed
  • 3 respostas
  • 2786 Views
Martin Hope
Alexei Martianov
Asked: 2018-04-30 20:09:09 +0800 CST

NTFS $MFTMirr não corresponde a $MFT

  • 4

Eu estava copiando arquivos Linux Mintpara um disco NTFSexterno USBquando movi meu laptop, provavelmente a conexão USB foi perdida e agora recebi o erro $MFTMirr does not match $MFT. A mensagem de erro de montagem é usar o Windows para corrigir erros de unidade. No entanto, quero usar o Linux para corrigir esse erro comum IMHO.

mount ntfs
  • 2 respostas
  • 4205 Views
Martin Hope
Alexei Martianov
Asked: 2018-04-15 04:07:25 +0800 CST

Impedir que o sistema entre em hibernação/suspensão - como o Xviewer/VLC faz isso

  • 7

Quando Xviewerou VLCno modo de tela inteira no Linux Mint, meu laptop não entra em modo de suspensão. Alguns outros aplicativos, por exemplo, mpvem tela cheia, não impedem o sono.

Não há opções na XviewerGUI para manter o status acordado.

Como faz Xviewera prevenção e como desligar?

Como ativar a prevenção do sono para aplicativos em que considero esse comportamento benéfico, como Transmissionpor exemplo?

linux linux-kernel
  • 1 respostas
  • 9902 Views

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