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-296048

finefoot's questions

Martin Hope
finefoot
Asked: 2025-03-09 21:34:27 +0800 CST

Duplicar stdout para canalizar para outro comando com pipe nomeado na função de script de shell POSIX

  • 9
mkfifo foo
printf %s\\n bar | tee foo &
tr -s '[:lower:]' '[:upper:]' <foo
wait
rm foo

Este é um script de shell POSIX funcional do que eu quero fazer:

  • printf %s\\n baré simbólico para um programa externo que produz stdout
  • tr -s '[:lower:]' '[:upper:]'é simbólico para outro comando que deve receber o stdout e fazer algo com ele
  • teeduplica stdout para pipe nomeado foo

E a saída é como esperado:

bar
BAR

Agora eu gostaria de arrumar o código para que ele se torne external_program | my_function. Algo assim:

f() (
  mkfifo foo
  tee foo &
  tr -s '[:lower:]' '[:upper:]' <foo
  wait
  rm foo
)
printf %s\\n bar | f

Mas agora não há saída alguma.

shell-script
  • 2 respostas
  • 58 Views
Martin Hope
finefoot
Asked: 2023-08-06 09:38:53 +0800 CST

O status de saída do canal se comporta de maneira diferente no shell interativo versus script de shell

  • 8

shSessão shell interativa :

$ sh
$ timeout 1 yes | sed -n s/a/b/p ; echo $?
Terminated
143
$ 

Script não interativo via sh -c:

$ sh -c 'timeout 1 yes | sed -n s/a/b/p ; echo $?'
0
$ 

Por que esses dois exemplos produzem códigos de saída diferentes?

shell-script
  • 1 respostas
  • 210 Views
Martin Hope
finefoot
Asked: 2023-04-13 10:04:21 +0800 CST

Quais caminhos de ponto de montagem aparecerão automaticamente no navegador de arquivos em dispositivos?

  • 6

Alguns exemplos:

  • Se eu conectar uma unidade USB externa, ela será montada /media/$USER/<device-id>e meus navegadores de arquivos listarão automaticamente o ponto de montagem em dispositivos.
  • O mesmo acontecerá se eu montar algo manualmente em uma pasta regular em meu diretório inicial. No entanto, meus navegadores de arquivos não listarão o ponto de montagem se essa pasta estiver oculta.
  • O navegador de arquivos também não listará os pontos de montagem que estão em /tmp, por exemplo.

Então, quais são as condições para um ponto de montagem aparecer automaticamente em navegadores de arquivos em dispositivos? Como o PCManFM e o Nautilus aparentemente se comportam exatamente da mesma forma, acredito que possa haver regras gerais para isso? Posso "forçar" um ponto de montagem (que é uma pasta oculta ou em /tmp, por exemplo) a aparecer em dispositivos?

mount
  • 2 respostas
  • 31 Views
Martin Hope
finefoot
Asked: 2023-02-25 22:03:02 +0800 CST

Como uma armadilha afeta programas externos?

  • 5

Quando um subshell é inserido, as armadilhas que não estão sendo ignoradas devem ser definidas para as ações padrão

Fonte: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_28

Aparentemente, isso também é verdade para programas externos que estou chamando do meu shell. trap "" SIGNALfunciona para interceptar (ignorar) esse sinal. Mas trap action SIGNALnão chama action, não faz nada e o tratamento do sinal parece estar definido para o padrão original.

Onde esse comportamento é definido?

shell-script
  • 1 respostas
  • 20 Views
Martin Hope
finefoot
Asked: 2021-10-07 06:09:56 +0800 CST

Usando statvfs para obter o tamanho total e livre do sistema de arquivos

  • 0

Eu quero usar os valores de retorno de statvfs para obter o tamanho total e livre do sistema de arquivos.

unsigned long  f_bsize;    /* Filesystem block size */
unsigned long  f_frsize;   /* Fragment size */
fsblkcnt_t     f_blocks;   /* Size of fs in f_frsize units */
fsblkcnt_t     f_bfree;    /* Number of free blocks */
...

Fonte: https://man7.org/linux/man-pages/man3/statvfs.3.html

Então, para obter o tamanho total do sistema de arquivos, parece que eu quero f_blocks * f_frsize, já que o comentário para f_blocksdiz que é o tamanho "em f_frsizeunidades". No entanto, f_bfreeé o número de blocos livres. Então, para o tamanho do sistema de arquivos gratuito, tenho que usar f_bsize? Ou f_frsizenovamente?

linux filesystems
  • 2 respostas
  • 173 Views
Martin Hope
finefoot
Asked: 2020-03-10 11:00:04 +0800 CST

O `cp --no-clobber` é vulnerável à condição de corrida?

  • 35

A página man para cp(1)diz

--no-clobbernão sobrescreva um arquivo existente

No entanto, o cenário a seguir não seria possível?

  1. cpverifica a existência do arquivo, vamos supor que o arquivo não exista (ainda)
  2. Algum outro processo grava no mesmo caminho, então agora há dados gravados no arquivo anteriormente não existente
  3. Como cpnão está ciente do arquivo agora existente, ele substitui os dados

É cp --no-clobbervulnerável a esta condição de corrida? E se não, como cpevitar a situação acima?

linux shell
  • 1 respostas
  • 3404 Views
Martin Hope
finefoot
Asked: 2019-11-20 10:02:47 +0800 CST

Como posso saber mais sobre a história dos comandos GNU coreutils?

  • 2

Posso de alguma forma descobrir mais sobre a história do processo de desenvolvimento dos comandos GNU coreutils? Por exemplo, sue runuser(que fornecem funções semelhantes, mas foram decididos a serem divididos em dois comandos) sempre coexistiram ou um precedeu o outro? Eu realmente não sei por onde começar a procurar. info runuserno meu Ubuntu 18.04 tem

julho de 2014

na parte inferior da página. Acho que essa data tem algo a ver com quando a infopágina foi escrita ou modificada, já runuserque, é claro, terá que ser muito, muito mais antiga. Então, sem sorte lá ou na manpágina. O site GNU vinculado parece confuso para mim, mas talvez eu simplesmente falhe em navegar corretamente.

Eu só escolhi sue runusercomo exemplo. Estou interessado em todo o desenvolvimento do GNU coreutils.

Por onde devo começar a procurar? O que é um bom recurso? A documentação existe mesmo tão longe?

linux
  • 1 respostas
  • 212 Views
Martin Hope
finefoot
Asked: 2019-11-05 15:52:43 +0800 CST

Posso usar `diff` para exibir não as partes diferentes, mas as correspondentes?

  • 0

man diffdiz:

diff - compara arquivos linha por linha

Então diffvai comparar os arquivos. No entanto, eventualmente, ele mostrará a diferença, se houver. Como posso comparar os arquivos e mostrar as partes correspondentes?

linux
  • 1 respostas
  • 155 Views
Martin Hope
finefoot
Asked: 2019-07-14 07:31:45 +0800 CST

Obtenha o timestamp mtime Epoch com milissegundos de `stat`

  • 5

Se estou usando statpara exibir o mtime, recebo uma data com milissegundos:

$ stat -c '%y' test.log 
2019-07-04 14:32:10.730059167 +0200

No entanto, se eu quiser exibir o timestamp Epoch, não recebo mais milissegundos:

$ stat -c '%Y' test.log 
1562243530

Estou faltando alguma coisa ou terei que remendá-la em ambas as saídas?

timestamps stat
  • 1 respostas
  • 6122 Views
Martin Hope
finefoot
Asked: 2019-06-19 16:27:18 +0800 CST

Se eu executar um comando com `sudo`, ele ainda será "invocado por um usuário comum"?

  • 1

Citação da página de manual de davfs2.confpara mount.davfs:

Existe um arquivo de configuração de todo o sistema /etc/davfs2/davfs2.conf e arquivos de configuração do usuário ~/.davfs2/davfs2.conf. Quando mount.davfs é invocado pelo root, apenas o arquivo de configuração de todo o sistema é lido. Quando invocado por um usuário comum, o arquivo de configuração do usuário também é lido.

Se eu ligar mount.davfscom sudolike

sudo mount -t davfs ...

Isso ainda contará como "invocado por um usuário comum" e, portanto, lerá meu ~/.davfs2/davfs2.conf? Ou faz sudoessa chamada "invocada pelo root" e ~/.davfs2/davfs2.confserá ignorada?

sudo process
  • 1 respostas
  • 63 Views
Martin Hope
finefoot
Asked: 2019-05-17 07:31:04 +0800 CST

Usar `printf` para imprimir a variável contendo o sinal de porcentagem `%` resulta em "bash: printf: `p': caractere de formato inválido"

  • 25

Eu quero usar printfpara imprimir uma variável. Pode ser possível que essa variável contenha um %sinal de porcentagem.

Exemplo mínimo:

$ TEST="contains % percent"
$ echo "${TEST}"
contains % percent
$ printf "${TEST}\n"
bash: printf: `p': invalid format character
contains $

( echofornece a saída desejada.)

bash variable
  • 3 respostas
  • 26044 Views
Martin Hope
finefoot
Asked: 2019-05-15 13:49:11 +0800 CST

Copiar o conteúdo de uma pasta via SCP resulta em `scp: erro: nome de arquivo inesperado: .`

  • 4

Eu estava usando um script para copiar o conteúdo de uma pasta via SCP, sem copiar a própria pasta. Algo assim:

scp -i id_rsa -P "$PORT" -r "$HOST:/folder1/folder2/." "backup"

(Não consigo usar *porque também quero incluir arquivos de ponto.)

Isso parou de funcionar recentemente e estou recebendo o seguinte erro:

scp: error: unexpected filename: .

Acho que a causa disso são essas mudanças no SCP a partir de novembro de 2018.

Isso significa que não posso mais copiar o conteúdo de uma pasta via SCP sem copiar a própria pasta?

shell-script scripting
  • 1 respostas
  • 6703 Views
Martin Hope
finefoot
Asked: 2019-04-28 04:09:42 +0800 CST

Baixe o arquivo ZIP do repositório privado do GitHub usando `wget` como `curl`

  • 0

Já existem algumas perguntas com respostas de como baixar o arquivo ZIP dos repositórios do GitHub, mas não funcionam se o repositório for privado.

Eu sei que deve funcionar de wgetalguma forma, pois funciona com curl:

curl -u <USER> -L -o <FILENAME> https://github.com/<USER>/<REPO>/archive/master.zip

A linha acima pedirá <USER>a senha, baixe o arquivo ZIP do branch master e salve-o como <FILENAME>. No entanto, o wgetequivalente não funciona:

wget --user=<USER> --ask-password --output-document=<FILENAME> https://github.com/<USER>/<REPO>/archive/master.zip

Resulta emERROR 404: Not Found.

wget curl
  • 1 respostas
  • 5123 Views
Martin Hope
finefoot
Asked: 2019-04-20 06:27:44 +0800 CST

Como desabilitar temporariamente o tempo limite do timestamp de credenciais sudo?

  • 6

Digamos que eu tenha o seguinte script bash:

#!/bin/bash
sudo command1
command2
sudo command3

Eu não quero rodar command2como root, então não vou rodar o script em si com sudo. Portanto, assim que executo o script, sudo command1pede minha senha. Infelizmente, command2leva cerca de 2 horas para ser concluído. Portanto, o timestamp de credenciais sudo expirou e, quando o script atinge sudo command3, sou solicitado a inserir a senha novamente.

Não quero desabilitar permanentemente o tempo limite do timestamp de credenciais sudo, conforme descrito em https://superuser.com/a/149740 , por exemplo. Eu só quero desabilitar o tempo limite temporariamente, manter efetivamente as credenciais para esta sessão de bash até que ela termine.

sudo scripting
  • 4 respostas
  • 1578 Views
Martin Hope
finefoot
Asked: 2019-04-06 16:01:43 +0800 CST

Como fazer com que o XTerm small-vt-font() e large-vt-font() usem etapas mais suaves?

  • 0

Estou usando smaller-vt-font()e larger-vt-font()para alterar rapidamente o tamanho da fonte. No entanto, as etapas nas quais o tamanho da fonte muda são muito grandes e eu quero que elas sejam mais suaves para que os tamanhos de fonte resultantes fiquem mais próximos do tamanho de fonte padrão.

Depois de fazer algumas pesquisas, acho que tenho que redefinir os tamanhos de fonte "Ilegível", "Pequeno", "Pequeno", "Médio", "Grande" e "Enorme". Há essa pergunta específica que descreve o problema. No entanto, terminus-12e terminus-14assim por diante não funcionará, porque xlsfontsnão lista esses aliases de fonte de bitmap para mim:

$ xlsfonts
-misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
-misc-fixed-medium-r-semicondensed--13-100-100-100-c-60-iso8859-1
-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
6x13
cursor
fixed

Atualmente, o meu .Xresourcesestá assim:

XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 12
XTerm.vt100.translations: #override \n\
  Ctrl <Key> minus: smaller-vt-font() \n\
  Ctrl <Key> plus: larger-vt-font()

O que preciso adicionar para definir os tamanhos de "Ilegível", "Pequeno", "Pequeno", "Médio", "Grande" e "Enorme" para 9, 10, 11, 12, 13 e 14, por exemplo ?

fonts xterm
  • 1 respostas
  • 769 Views
Martin Hope
finefoot
Asked: 2019-04-06 13:02:05 +0800 CST

Por que não é possível ler de `stdin` com `read` ao canalizar um script para bash?

  • 5

Eu não estou procurando soluções alternativas ou soluções para o problema. Eu estou bem com isso não funcionar assim em bash. Só não entendo porque não funciona.

Estou procurando uma resposta detalhada por que o script a seguir não funciona. Todos os resultados de pesquisa anteriores na Internet, incluindo postagens de unix.stackexchange.com, não conseguiram esclarecer isso completamente. Tem algo a ver com a readleitura da stdinqual não funciona porque stdinjá é "tirada" (?) pela catalimentação bashpelo cano?

Exemplo de script bash test.sh:

echo "Please say name:"
read NAME
echo "Hello $NAME"

Método 1 chamando o script com bash test.sh:

$ bash test.sh
Please say name:
XYZ
Hello XYZ
$

Método 2 executando o script via tubulação para bash:

$ cat test.sh | bash
Please say name:
$

Assim, o script retorna imediatamente ao prompt, sem esperar pela entrada ou mesmo imprimir a segunda linha.

bash scripting
  • 1 respostas
  • 10501 Views
Martin Hope
finefoot
Asked: 2018-12-09 03:29:46 +0800 CST

A gravação constante em "arquivos" em `/proc` ou `/sys` reduz a vida útil do meu SSD devido ao seu número limitado de ciclos de gravação?

  • 0

Meu laptop tem uma unidade SSD e eu executo um script que grava a cada dois segundos em arquivos /sys/class/thermal/cooling_device4/cur_state. Eu não acho que isso contaria como gravação no SSD e, assim, reduzindo o número restante de ciclos de gravação, pois procfse sysfssão sistemas de arquivos virtuais.

Ou estou ignorando algo e isso é um problema?

linux files
  • 1 respostas
  • 190 Views
Martin Hope
finefoot
Asked: 2018-07-27 05:10:54 +0800 CST

Como posso desabilitar o histórico em `xclipboard`?

  • 0

Se eu rodar xclipboardpara manter um persistente CLIPBOARD, automaticamente é criado um histórico de todo o conteúdo que estava no arquivo CLIPBOARDem algum momento.

insira a descrição da imagem aqui

Como posso desabilitar o histórico?

linux x11
  • 1 respostas
  • 299 Views
Martin Hope
finefoot
Asked: 2018-06-19 12:53:54 +0800 CST

Como manter o conteúdo `CLIPBOARD` do XTerm após fechá-lo? (Como o Firefox ou o Leafpad, por exemplo.)

  • 2

Eu queria usar CTRLSHIFTCe CTRLSHIFTVpara Copiar e Colar no XTerm e em outros aplicativos, então adicionei

XTerm*vt100.translations: #override \
    Shift Ctrl <Key> C: copy-selection(CLIPBOARD) \n\
    Shift Ctrl <Key> V: insert-selection(CLIPBOARD)

ao meu ~/.Xresources. Copiar e colar funciona bem, desde que eu não feche o XTerm. Então, todo o CLIPBOARDconteúdo é perdido. O mesmo problema ocorre ao usar

XTerm*vt100.selectToClipboard: true

onde assim que o texto é selecionado, ele é copiado diretamente para CLIPBOARD(em vez de para PRIMARY- ou talvez para ambos?) mas está disponível apenas enquanto o XTerm estiver em execução.

Então, eu li um pouco mais sobreCLIPBOARD

  • https://www.jwz.org/doc/x-cut-and-paste.html
  • https://mutelight.org/subtleties-of-the-x-clipboard
  • https://en.wikipedia.org/wiki/X_Window_selection
  • Como fazer a seleção de pasta Shift + Insert após fechar a janela com a seleção?
  • https://burrows.svbtle.com/universal-copy-paste-in-linux

... mas não consegui encontrar uma resposta definitiva. Parece que existem ferramentas, que são capazes de sincronizar CLIPBOARDe PRIMARYpor exemplo. Ou torne o CLIPBOARDconteúdo persistente. Ou algum tipo de CLIPBOARDhistória. Mas não tenho certeza se é isso que estou procurando aqui.

Por exemplo: Se CLIPBOARDo conteúdo não sair realmente do aplicativo e outros programas tiverem que "pedir" ao aplicativo original o conteúdo de CLIPBOARD, faz sentido que isso só seja possível enquanto esse programa estiver em execução. No entanto, como o CLIPBOARDtexto selecionado do Firefox ou Leafpad permanece disponível, mesmo que o programa tenha sido fechado? Como o Firefox/Leafpad faz isso? Eles não usam uma ferramenta externa, não é?!

xorg x11
  • 1 respostas
  • 1863 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