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[shell](unix)

Martin Hope
Ivoirians
Asked: 2025-04-24 04:29:39 +0800 CST

Como excluir texto armazenado em buffer escrito no terminal durante a execução do script

  • 14

Digamos hipoteticamente que eu esteja executando um script bash de longa duração e, enquanto ele estiver em execução, eu acidentalmente clico com o botão direito do mouse no terminal e colo uma senha sensível (recém-copiada de um gerenciador de senhas) no terminal.

~$ process_data.sh
[useful data 1]
[useful data 2]
...
[useful data N-1]
hunter2[useful data N]
[useful data N+1]

Existe alguma maneira de remover o texto (hunter2) de exibição no terminal, preservando os dados úteis? Ctrl-L e clearapaga tudo na tela. Ctrl-H funciona para apagar caracteres na linha atual, mas não consigo mover o cursor para cima.

Não preciso excluir o texto de ~/.bash_history, só quero que os dados úteis apareçam no terminal sem o texto ofensivo.

Presumo que a resposta possa depender das capacidades/implementação do terminal. Estou usando o Ubuntu 18, mas soluções para qualquer terminal comum seriam apreciadas.

shell
  • 3 respostas
  • 772 Views
Martin Hope
TimSO
Asked: 2025-04-21 21:50:40 +0800 CST

Analisar a saída do console e emitir um sinal sonoro de erro

  • 9

Estou testando o aplicativo executando mycommanda saída no console e diretamente em /tmp/mycommand.log. Usar zsh. mycommandé, na verdade, uma função com parâmetros, mas consigo obter o mesmo resultado executando no console. mycommandO comando é executado enquanto testo o aplicativo no navegador. Ao terminar, pressiono Ctrl+C para finalizar a execução.

Pode ocorrer um erro no programa, que retorna no console como " ERROR: Fatal signal! Attach debugger with: Como não estou olhando para o console e isso não está no log, gostaria de receber uma notificação quando isso acontecer". É necessário um simples som de error, não deve ler a longa saída do log do aplicativo.

Eu estava olhando Como exibir a saída do comando e também analisá-la?, mas isso não parece se aplicar aqui da mesma forma.

shell
  • 3 respostas
  • 518 Views
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
rdong8
Asked: 2025-04-15 16:19:59 +0800 CST

O que é esse ícone (pontos sobre uma linha cinza curva) que aparece momentaneamente na minha barra de status do GNOME?

  • 14

Captura de tela dos ícones da barra de status do GNOME

O ícone mais à esquerda ( thunderbolt-acquiring-symbolic.svg) é o que está em questão.

Para contextualizar, tenho um par de fones de ouvido Bluetooth multiponto conectados simultaneamente ao meu iPhone e ao meu laptop Linux. Quando ouço música no meu celular, vejo periodicamente este ícone aparecer no meu laptop, mesmo quando não estou reproduzindo nenhum áudio. O ícone normalmente desaparece em alguns segundos, mas minha música fica inaudível (mas ainda tocando no meu celular) por um tempo. Depois, tudo volta ao normal.

shell
  • 2 respostas
  • 1401 Views
Martin Hope
LuckyJollyMoments
Asked: 2025-04-13 20:00:00 +0800 CST

Por que `sudo -E` não preserva `PERL5LIB`?

  • 16

Estou enfrentando um comportamento estranho relacionado à preservação de variáveis ​​de ambiente com sudo no macOS (15.2): sudo -Enão preserva a variável de ambiente PERL5LIB.

Etapas de reprodução

  1. Defina uma variável de ambiente no shell: export PERL5LIB=foo . O comando env | grep PERL5LIB retorna como esperado: PERL5LIB=foo .

  2. No entanto, o comando sudo -E env | grep PERL5LIB , não retorna nada. Em contraste, isto funciona: sudo --preserve-env=PERL5LIB env | grep PERL5LIB . Ele preserva PERL5LIB. com sucesso.

Isso é confuso porque eu esperava sudo -Epreservar todas as variáveis ​​de ambiente do shell de chamada, incluindo PERL5LIB. Mas, claramente, não está funcionando dessa forma para esta variável específica.

Pergunta

  • Por que não é PERL5LIBpreservado sudo -Eno macOS?
  • Esse comportamento é específico de PERL5LIBou afeta outras variáveis ​​também?
  • Qual é a maneira recomendada e confiável de garantir que isso PERL5LIBseja preservado ao usar o sudo?
shell
  • 1 respostas
  • 972 Views
Martin Hope
Persimmonium
Asked: 2025-04-04 19:10:21 +0800 CST

é possível invocar o mc com um caminho tar.gz como parâmetro para abrir o mc diretamente dentro do tar.gz?

  • 5

Estou tentando o óbvio:

mc file.tar.gz

mas o tar.gz não abre

alguma ideia?

shell
  • 1 respostas
  • 13 Views
Martin Hope
Fravadona
Asked: 2025-03-14 21:49:20 +0800 CST

Qual é a origem da opção -E do comando `realpath` no POSIX edição 8?

  • 7

O realpathutilitário de comando agora é definido pelo POSIX em sua edição 8 (2024): realpath — resolver um nome de caminho

realpath [-E|-e] arquivo

O utilitário realpath deve canonizar o nome do caminho especificado pelo operando do arquivo da seguinte forma:

Se uma chamada para a realpath()função com o caminho especificado como seu primeiro argumento for bem-sucedida, o caminho canonizado deverá ser o caminho que seria retornado por essa realpath()chamada. Caso contrário:

  • Se a opção -e for especificada, a canonização falhará.

  • Se a opção -E for especificada, então se uma chamada para a realpath()função com o caminho especificado como seu primeiro argumento encontrar uma condição de erro diferente de [ENOENT], a canonização falhará; se a chamada encontrar um erro [ENOENT], o realpath expandirá todos os links simbólicos que seriam encontrados em uma tentativa de resolver o caminho especificado usando o algoritmo especificado em XBD 4.16 Pathname Resolution, exceto que quaisquer <slash>caracteres finais que não sejam também <slash>caracteres iniciais serão ignorados. Se essa expansão for bem-sucedida e o prefixo do caminho do caminho expandido for resolvido para um diretório existente, o caminho canonizado será o caminho expandido. Em todos os outros casos, a canonização falhará. Se o caminho expandido não estiver vazio, não começar com um <slash>e tiver exatamente um componente de caminho, ele será tratado como se tivesse um prefixo de caminho de " ./".

  • Se nenhuma opção for especificada, o realpath canonizará o caminho especificado de uma maneira não especificada, de modo que o caminho absoluto resultante não contenha nenhum componente que faça referência a arquivos do tipo link simbólico e não contenha nenhum componente que seja ponto ou ponto-ponto.

Após a canonização bem-sucedida, o realpath gravará o nome do caminho canonizado, seguido por um <newline>caractere, na saída padrão.

Se a canonização falhar ou o caminho canonizado estiver vazio, nada será gravado na saída padrão, uma mensagem de diagnóstico será gravada no erro padrão e o realpath sairá com status diferente de zero.

[...]

Minha pergunta é: a -eopção de realpathjá é suportada pelo menos por GNU e Solaris, mas não consigo encontrar nenhuma menção à -Eopção em nenhuma realpathque eu pudesse verificar (macOS, FreeBSD, Solaris, GNU). O OpenGroup a inventou?

shell
  • 1 respostas
  • 122 Views
Martin Hope
An5Drama
Asked: 2025-03-07 16:32:05 +0800 CST

Como `find` substitui `{}` se ele contém caracteres especiais como `"`?

  • 5

Recentemente, quando li um QA , ele apresentou alguns comportamentos inesperados para mim:

~/findtest % echo three > file\ with\ \"double\ quotes\"
~ % find findtest -type f -exec sh -c 'set -x;cat "{}"' \;
+ cat 'findtest/file with double' quotes
cat: findtest/file with double: No such file or directory
cat: quotes: No such file or directory

IMHO quando a substituição estiver concluída, ela funcionará 'cat findtest/file\ with\ \"double\ quotes\"'se apenas substituir o nome do arquivo acima, file\ with\ \"double\ quotes\"o que funcionará. Se mantivermos o wrapper de citação, ele mostrará:

$ cat "findtest/file\ with\ \"double\ quotes\""
cat: 'findtest/file\ with\ "double\ quotes"': No such file or directory

P:

O que essa substituição realmente faz, causando o comportamento um pouco estranho acima com 2 substr 'findtest/file with double' e 'quotes', mas não 'findtest/file with' e 'double quotes' "como delimitador?

shell
  • 1 respostas
  • 59 Views
Martin Hope
luator
Asked: 2025-02-25 21:38:28 +0800 CST

Execute o comando em cada linha do arquivo CSV, usando campos em diferentes locais do comando

  • 10

Tenho um arquivo CSV e quero executar um comando para cada linha, usando os campos do arquivo como argumentos separados.

Por exemplo, dado o seguinte arquivo:

foo,42,red
bar,13,blue
baz,27,green

Quero executar os seguintes comandos um após o outro:

my_cmd --arg1 42 --arg2 foo --arg3 red
my_cmd --arg1 13 --arg2 bar --arg3 blue
my_cmd --arg1 27 --arg2 baz --arg3 green

Qual é a maneira mais fácil de conseguir isso? Parece que pode ser possível com xargs, mas não consegui descobrir como exatamente.

shell
  • 5 respostas
  • 340 Views
Martin Hope
Zoltan King
Asked: 2025-02-25 08:52:04 +0800 CST

Como executar um comando em todas as saídas de instantâneos do ZFS no FreeBSD?

  • 5

Quando eu inicializo no modo de usuário único e listo os snapshots do ZFS nos quais estou interessado, quero reverter para o snapshot "xfcedesktop". No entanto, isso requer que eu digite manualmente o comando zfs rollback snapshotname@xfcedesktoppara cada snapshot, assim:

# zfs list -t snapshot -o name | grep xfcedesktop
zroot@xfcedesktop
zroot/ROOT@xfcedesktop
zroot/ROOT/default@xfcedesktop
zroot/home@xfcedesktop
zroot/home/zoliky@xfcedesktop
zroot/tmp@xfcedesktop
zroot/usr@xfcedesktop
zroot/usr/ports@xfcedesktop
zroot/usr/src@xfcedesktop
zroot/var@xfcedesktop
zroot/var/audit@xfcedesktop
zroot/var/crash@xfcedesktop
zroot/var/log@xfcedesktop
zroot/var/mail@xfcedesktop
zroot/var/tmp@xfcedesktop

# now I need to type this for each line:
zfs rollback zroot@xfcedesktop
zfs rollback zroot/ROOT@xfcedesktop
zfs rollback zroot/ROOT/default@xfcedesktop
.. and so on

Isso consome tempo e é propenso a erros. Estou pensando se há um truque de shell ou um one-liner que me deixaria fazer um loop pela saída do grep e executar os comandos de rollback para cada snapshot. Estou usando sh (não bash) no FreeBSD, executando no modo de usuário único. Idealmente, eu gostaria que fosse um one-liner em vez de um script.

shell
  • 3 respostas
  • 31 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