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

Flux's questions

Martin Hope
Flux
Asked: 2023-11-20 14:44:52 +0800 CST

Como converter todas as novas linhas para “\n” em strings POSIX sh

  • 6

Eu tenho uma string que contém caracteres de nova linha. Quero escapar de todas as novas linhas nessa sequência, substituindo todos os caracteres de nova linha por uma sequência de dois caracteres: "\n". Como posso fazer isso no POSIX sh?

Aqui está o objetivo:

$ printf 'a\nb\nc\nd' | escape_newlines | od -a
0000000   a   \   n   b   \   n   c   \   n   d
        141 134 156 142 134 156 143 134 156 144
0000012

Como posso definir escape_newlines?

Métodos que tentei:

  • tr— Problema: não é possível converter um único caractere em vários caracteres.

  • awk 'BEGIN{ORS="\\n"} {print}'— Problema: sempre insere a string de dois caracteres "\n" no final da string, mesmo que a string não termine com um caractere de nova linha. Exemplo:

    $ printf 'hi\n' | awk 'BEGIN{ORS="\\n"} {print}' | od -ab
    0000000   h   i   \   n
            150 151 134 156
    0000004
    $ printf 'hi' | awk 'BEGIN{ORS="\\n"} {print}' | od -ab
    0000000   h   i   \   n
            150 151 134 156
    0000004
    
  • sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/\\n/g'— Problema: se houver um caractere de nova linha no final da string, ele não será convertido. Exemplo:

    $ printf 'h\ni' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/\\n/g' | od -ab
    0000000   h   \   n   i
            150 134 156 151
    0000004
    $ printf 'h\ni\n' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/\\n/g' | od -ab
    0000000   h   \   n   i  nl
            150 134 156 151 012
    0000005
    
shell-script
  • 1 respostas
  • 47 Views
Martin Hope
Flux
Asked: 2023-11-07 23:30:47 +0800 CST

Como passar a entrada padrão de um script de shell para um comando em segundo plano

  • 5

Em um script de shell, estou tentando iniciar um comando em segundo plano que possui o mesmo stdin do script de shell.

#!/bin/sh
# ...

the-program &

No entanto, the-programacima não terá acesso à mesma entrada padrão do shell script. De acordo com o manual do meu shell ( dash(1) ):

Se o shell não for interativo, a entrada padrão de um comando assíncrono será definida como /dev/null.

Eu tentei the-program & <&0, mas não parece surtir o efeito pretendido; a entrada padrão de the-programstill é /dev/null.

Pensei em criar um novo descritor de arquivo duplicando a entrada padrão do shell script e de alguma forma passar esse novo descritor de arquivo para o processo em segundo plano. No entanto, o processo em segundo plano deve então redirecionar de alguma forma esse novo descritor de arquivo para sua entrada padrão (substituindo /dev/null). Não tenho ideia se essa ideia é possível e não sei como implementá-la no POSIX sh.

shell-script
  • 1 respostas
  • 57 Views
Martin Hope
Flux
Asked: 2023-10-30 20:09:20 +0800 CST

Como classificar e filtrar imagens por hora de modificação e visualizá-las no nsxiv no FreeBSD

  • 6

Estou usando o nsxiv para visualizar imagens JPEG e PNG no FreeBSD. No entanto, não consigo encontrar uma maneira de classificar e filtrar as imagens por hora de modificação para visualizá-las no nsxiv no FreeBSD. No Linux com GNU coreutils e GNU findutils, posso usar o comando abaixo para visualizar imagens modificadas após 01/10/2023, classificadas por horário de modificação.

find . -maxdepth 1 -type f \
    \( -iregex '.+\.jpe?g$' -o -iregex '.+\.png$' \) \
    -newermt 2023-10-01 \
    -exec ls -t --zero -- {} + | \
        nsxiv -0 -

Não consigo encontrar um comando equivalente no FreeBSD que seja capaz de lidar com nomes de arquivos que contenham espaços, novas linhas e outros caracteres incomuns. O problema é que o FreeBSD lsnão tem --zeroopção de gerar nomes de arquivos separados por NUL para canalizar para nsxiv. Outro problema é que o FreeBSD findnão possui nenhum arquivo -printf0que possa ser útil para obter tempos de modificação de arquivos que podem ser passados ​​para sort -z. Como classifico e filtro imagens por hora de modificação e as visualizo no nsxiv no FreeBSD?

Estou usando /bin/sh(dash) no Linux e /bin/shno FreeBSD.

shell-script
  • 4 respostas
  • 81 Views
Martin Hope
Flux
Asked: 2022-04-18 00:26:24 +0800 CST

Como vincular usando -lfoo quando existem nomes versionados de libfoo, mas não libfoo.so

  • 0

Suponha que /usr/lib/x86_64-linux-gnu/contenha libfoo:

  • libfoo.so.2-> libfoo.so.2.0.0(link simbólico)
  • libfoo.so.2.0.0

Notavelmente falta é libfoo.so.

Suponha que haja um programa /usr/local/bin/sillyprogque compila coisas usando algo como gcc somefile.c -lfoo. Toda vez que tento usar sillyprog, ele falha /usr/bin/ld: cannot find -lfooporque libfoo.soestá faltando.

Supondo que eu não tenha permissão para editar nenhum arquivo /usr, quais soluções alternativas posso usar para vincular com êxito o libfoo durante a execução sillyprog?

linux gcc
  • 1 respostas
  • 46 Views
Martin Hope
Flux
Asked: 2022-04-12 01:04:25 +0800 CST

Como verificar a impressão digital SSH e conectar-se sem adicionar a impressão digital ao arquivo known_hosts

  • 1

Suponha que eu tente me conectar a um computador remoto via SSH:

$ ssh [email protected]
The authenticity of host 'example.com (<IP address>)' can't be established.
ECDSA key fingerprint is <key fingeprint>.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Verifico se a impressão digital exibida está realmente correta e quero continuar me conectando. Se eu digitar sim no prompt, continuarei conectando, mas o SSH adicionará a impressão digital a ~/.ssh/known_hosts. Não quero que o SSH adicione automaticamente a impressão digital ao arquivo known_hosts. Existe uma maneira de impedir que o SSH adicione automaticamente a impressão digital ao arquivo known_hosts se eu inserir sim ? Quero receber este mesmo prompt na próxima vez que tentar me conectar a esse mesmo host.

Não estou procurando ssh -o StrictHostKeyChecking=no ..., pois quero verificar a impressão digital da chave do host (ou seja, quero que ela seja exibida e quero ser solicitada).

ssh
  • 1 respostas
  • 282 Views
Martin Hope
Flux
Asked: 2022-03-24 19:12:11 +0800 CST

Detectar a última iteração do loop em POSIX sh

  • 2

No POSIX sh, é possível detectar a última iteração de um forloop dentro do loop?

Estou tentando preencher o espaço em branco neste código de exemplo:

#!/bin/sh

items='1 2 3'
for item in $items; do
    echo "$item"
    # TODO:
    # How do I check whether or not this is the last iteration?
done
shell-script shell
  • 1 respostas
  • 169 Views
Martin Hope
Flux
Asked: 2021-12-19 22:15:26 +0800 CST

Modo detalhado SSH: como visualizar a quantidade de dados transferidos sem todas as linhas "debug1"?

  • 0

No OpenSSH, o modo detalhado ( ssh -v ...) mostra algumas estatísticas úteis sobre a saída (por exemplo Transferred: sent 3532, received 3076 bytes, in 5.5 seconds, ). No entanto, o modo detalhado também imprime muitas debug1: ...linhas com as quais não me importo. Por exemplo:

$ ssh -v -N -D localhost:12345 [email protected]
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 5: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
--- snip ---
debug1: channel 0: free: port listener, nchannels 4
debug1: channel 1: free: port listener, nchannels 3
debug1: channel 2: free: port listener, nchannels 2
debug1: channel 3: free: port listener, nchannels 1
Transferred: sent 3532, received 3076 bytes, in 5.5 seconds
Bytes per second: sent 638.4, received 556.0
debug1: Exit status 0

Como removo todas as debug1: ...linhas para mostrar apenas as estatísticas de uso de dados? Eu só quero ver as linhas Transferred: ...e . Bytes per second: ...Eu tentei ssh -v ... 2>&1 | sed '/debug1/d', mas isso não funciona porque Ctrlcproduz um SIGINT que é enviado para todos os processos do grupo de processos em primeiro plano. sedé encerrado antes que as estatísticas de uso sejam enviadas para sua entrada padrão, portanto, as estatísticas de uso nunca são impressas.

Estou usando /bin/sh(não bash) como meu shell.

ssh openssh
  • 1 respostas
  • 331 Views
Martin Hope
Flux
Asked: 2021-12-13 19:43:05 +0800 CST

Como alterar o número da versão de uma revisão no RCS

  • 2

Suponha que um arquivo tenha 4 revisões (1.1 a 1.4). Excluí as revisões 1.2 e 1.3 usando rcs -o1.2:1.3 myfile.txt. Agora eu quero mudar o número de revisão 1.4 para se tornar o número de revisão 1.2. Como faço isso usando o RCS?

version-control rcs
  • 1 respostas
  • 47 Views
Martin Hope
Flux
Asked: 2021-11-16 00:43:05 +0800 CST

Como rolar para trás em ed

  • 0

BSD ed e GNU ed têm o zcomando para rolagem. No entanto, usar o comando repetidamente zparece apenas rolar para frente. Existe algo semelhante a zisso pode rolar para trás em vez de para frente?

ed
  • 1 respostas
  • 53 Views
Martin Hope
Flux
Asked: 2021-11-15 20:50:03 +0800 CST

Como habilitar o modo de ajuda por padrão no ed

  • 0

Depois de iniciar ed, o modo de ajuda pode ser ativado usando o Hcomando. Existe uma maneira de habilitar o modo de ajuda por padrão, para que eu não precise digitar Htoda vez que usar ed?

ed
  • 1 respostas
  • 47 Views
Martin Hope
Flux
Asked: 2021-11-13 22:53:50 +0800 CST

Como cancelar a entrada atual em ed

  • 1

No GNU ed, existe uma maneira de cancelar a entrada atual? Por exemplo:

$ ed myfile.txt
1234
a
Wrong speling.
Bad sentance.

Neste ponto, quero cancelar a entrada. Não quero mais inserir as duas linhas que digitei. É possível? Pensei em continuar assim:

.
u

O uso de "desfazer" é o método usual para cancelar uma entrada? Existem outras maneiras?

ed
  • 1 respostas
  • 55 Views
Martin Hope
Flux
Asked: 2021-11-13 06:46:30 +0800 CST

Como passo para uma linha no ed sem imprimir a linha?

  • 1

No GNU ed, como passo para uma linha sem imprimi-la? Se eu quiser passar para a linha 123, eu inseriria 123 Enter, mas isso também imprimiria o conteúdo da linha. Existe uma maneira de não imprimir ao passar para uma linha?

ed
  • 1 respostas
  • 50 Views
Martin Hope
Flux
Asked: 2021-11-11 03:59:23 +0800 CST

Como faço para exibir um prompt bash ao usar o SSH sem um pseudo-terminal?

  • 1

Quando a conexão está lenta, eu me conecto a computadores remotos usando SSH sem alocar um pseudo-terminal (por exemplo, ssh -T [email protected]ou ssh [email protected] bash). Embora eu possa usar o shell, o shell não exibe um prompt. Existe uma maneira de fazer o shell exibir um prompt (por exemplo $ ) ao conectar via SSH sem um pseudo-terminal?

Eu poderia executar o script bash abaixo no computador remoto, mas gostaria de saber se há algo embutido que eu possa usar para obter um prompt.

#!/bin/bash
# or #!/bin/sh

PS='$ '

prompt() {
    printf '%s' "$PS"
    read -r line
    # Exit if EOF (Ctrl-d).
    [ "$?" -ne 0 ] && echo && exit
    eval "$line"
}

# Handle Ctrl-c.
trap 'echo && prompt' INT

while :
do
    prompt
done

(Adaptado com base em: https://tldp.org/LDP/abs/html/intandnonint.html )

Este script tem a desvantagem de não ser capaz de lidar com entradas de várias linhas.

bash ssh
  • 1 respostas
  • 134 Views
Martin Hope
Flux
Asked: 2021-11-01 01:50:02 +0800 CST

mbox: Diferença entre a linha "From_" e os cabeçalhos de email "From:" e "Date:"

  • 0

No formato mbox, cada e-mail começa com uma linha "De_" que contém um "endereço do remetente do envelope" e um carimbo de data/hora. Por exemplo:

From [email protected] Fri Jun 23 02:56:55 2000

Como o endereço e o carimbo de data/hora na linha "De_" são diferentes do endereço e da data nos cabeçalhos de e-mail "De:" e "Data:"?

email
  • 1 respostas
  • 53 Views
Martin Hope
Flux
Asked: 2021-10-11 13:52:21 +0800 CST

mail: Como faço para marcar um e-mail como não lido?

  • 1

Estou usando mailo GNU Mailutils para ler o conteúdo de um Maildir. Para e-mails que já foram marcados como lidos, existe uma maneira de marcá-los como não lidos em mail?

email mailx
  • 1 respostas
  • 218 Views
Martin Hope
Flux
Asked: 2021-09-05 21:06:44 +0800 CST

Por que o comando rcsfreeze está ausente de uma instalação do RCS?

  • 0

Eu instalei o RCS no Ubuntu 20.04 usando o sudo apt-get install rcs. Os comandos usuais do RCS como ci, co, rlog, rcsdiff, rcsclean, etc. funcionam como esperado. No entanto, rcsfreezeestá em falta. Quando eu tento correr rcsfreeze, eu recebo rcsfreeze: command not found. Por que está faltando? Como faço para obter o rcsfreezecomando?

version-control rcs
  • 1 respostas
  • 42 Views
Martin Hope
Flux
Asked: 2020-02-14 03:03:55 +0800 CST

Qual é a diferença entre as páginas de manual 'hier(7)' e 'file-hierarchy(7)'?

  • 7

Ambas as hier(7)páginas file-hierarchy(7)man afirmam descrever a hierarquia convencional do sistema de arquivos. No entanto, existem algumas diferenças entre eles. Por exemplo, hier(7)descreve /opte /var/crash, mas file-hierarchy(7)não. Quais são as diferenças entre essas duas descrições. Qual deles os sistemas Linux reais usam?

linux filesystems
  • 2 respostas
  • 991 Views
Martin Hope
Flux
Asked: 2019-02-17 17:04:09 +0800 CST

O que significa um sinal de mais (+) após os bits de permissão do arquivo? [duplicado]

  • 10
Essa pergunta já tem respostas aqui :
Modo de permissões de arquivo terminando em @ ou + (4 respostas)
Fechado há 3 anos .

Corri lse encontrei um diretório que tem o +bit definido:

$ ls -ld /var/log/journal
drwxr-sr-x+ 3 root systemd-journal 4096 Oct  1 01:23 /var/log/journal

Eu entendo drwxr-sr-x, mas o que é +? Como isso é chamado? O que isso faz?

permissions ls
  • 1 respostas
  • 10911 Views
Martin Hope
Flux
Asked: 2019-02-01 11:25:38 +0800 CST

Como saber se o rsync não alterou nenhum arquivo?

  • 0

Em um script bash, estou usando o rsync para fazer uma cópia exata de um diretório:

rsync --verbose --archive --update --delete \
    ~/cat-pics/ \
    ~/top-secret/

Mas como posso obter feedback sobre se alguma coisa foi transferida ou não? Como posso saber se algum arquivo foi alterado por essa operação? Em particular, desejo saber se algum arquivo foi adicionado, alterado ou excluído.

Eu vejo a --statsopção, mas sua saída parece ser feita para humanos em vez de scripts bash.

Alguma indicação?

shell-script rsync
  • 1 respostas
  • 632 Views
Martin Hope
Flux
Asked: 2018-11-25 06:43:45 +0800 CST

Como encontrar arquivos por tipo de arquivo?

  • 16

Eu sei que posso encontrar arquivos usando find: find . -type f -name 'sunrise'. Exemplo de resultado:

./sunrise
./events/sunrise
./astronomy/sunrise
./schedule/sunrise

Também sei que posso determinar o tipo de arquivo de um arquivo: file sunrise. Exemplo de resultado:

sunrise: PEM RSA private key

Mas como posso encontrar arquivos por tipo de arquivo?

Por exemplo, my-find . -type f -name 'sunrise' -filetype=bash-script:

./astronomy/sunrise
./schedule/sunrise
files find
  • 5 respostas
  • 63412 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