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

db-inf's questions

Martin Hope
db-inf
Asked: 2021-11-28 02:52:21 +0800 CST

Perigos de tubulação para stdin de processo em outro terminal

  • 0

Por curiosidade maliciosa, abri 2 terminais, cada um executando o shell bash. Na primeira eu digito:

$ echo $$
11458

e na segunda:

$ echo -n "echo this command" >> /proc/11458/fd/0

Então este texto echo this commandé realmente canalizado para o prompt no primeiro terminal. Mas ao entrar nesse primeiro terminal, esse texto não é executado como um comando, apenas recebo um novo prompt.

Em uma segunda tentativa, executei este comando no primeiro terminal:

$ read line;echo $line

e enquanto a leitura está aguardando entrada, eu novamente ecoo algum texto /proc/11458/fd/0no segundo terminal. Esse texto aparece no primeiro terminal, mas ao pressionar <enter>no primeiro terminal, o readtermina e echo $linemostra que nenhuma entrada foi lida.

Então eu ainda não encontrei uma maneira de fazer mal; tudo o que posso fazer é modificar o texto no primeiro terminal, do segundo terminal. Leitores de tela nesse primeiro terminal, é claro, peguem isso. Por leitores de tela, estou pensando em seleção de mouse ou funções de terminal como Save Contents ...; Eu tentei ambos.

Mas se eu soubesse como também ecoar, por exemplo, um final de arquivo ou outros caracteres de controle para o primeiro terminal stdin, não poderia estragar as coisas terrivelmente para os processos no primeiro terminal?

pipe stdin
  • 2 respostas
  • 253 Views
Martin Hope
db-inf
Asked: 2021-11-18 03:01:55 +0800 CST

Teste unário -v em um elemento de matriz

  • 8

No bash, a expressão condicional com o teste unário -v myvariabletesta se a variável myvariablefoi definida. Observe que myvariablenão deve ser expandido prefixando-o com um dólar, portanto, não $myvariable . Agora acho que para elementos de matriz a expressão condicional -v myarray[index]também funciona bem, sem a sintaxe de expansão completa ${myarray[$index]}. Tente isto:

    myarray[2]=myvalue
    for i in 1 2 3
    do
        [ -v myarray\[i] ] && echo element $i is set
    done

(observe o escape \[para evitar globbing, como alternativa ao uso de aspas)

dá a saída desejada:

    element 2 is set

Pergunta Este comportamento é seguro para uso , também conhecido como este comportamento documentado?

Adendo Depois de ler a resposta https://unix.stackexchange.com/a/677920/376817 de Stéphane Chazelas, expandi meu exemplo:

    myarray[1]=val myarray[2]=val myarray[3]=val myarray[4]=val myarray[5]=val myarray[6]="" myarray[2]=""
    unset myarray[3] myarray[4] myarray[5]
    touch myarray4 myarrayi
    myarray4=val myarrayi=val

então

    for i in {0..7}; do [ -v myarray\[i] ] && echo element $i is set; done

dá

    element 1 is set
    element 2 is set
    element 6 is set

Sem citar ou escapar da expressão de índice [i]:

    for i in {0..7}; do [ -v myarray[i] ] && echo element $i is set; done

dá

    element 0 is set
    element 1 is set
    element 2 is set
    element 3 is set
    element 4 is set
    element 5 is set
    element 6 is set
    element 7 is set

O mesmo com a variável myarrayiunset :

    unset myarrayi
    for i in {0..7}; do [ -v myarray[i] ] && echo element $i is set; done

dá

    %nothing%

E finalmente com a expansão do índice as $i(ainda sem citar ou escapar do colchete):

    for i in {0..7}; do [ -v myarray[$i] ] && echo element $i is set; done

dá

    element 1 is set
    element 2 is set
    element 4 is set

Porque

    ls -l myarray*

mostra

    -rw-rw-r-- 1 me us 0 nov 17 15:37 myarray4
    -rw-rw-r-- 1 me us 0 nov 17 15:37 myarrayi
bash array
  • 1 respostas
  • 402 Views
Martin Hope
db-inf
Asked: 2020-02-18 07:59:34 +0800 CST

Posso montar o ext4 sem gravar o último ponto de montagem no sistema de arquivos?

  • 3

Eu tenho uma ext4partição de disco antiga que preciso investigar sem perturbá-la. Então copiei a partição completa para um arquivo de imagem e montei esse arquivo de imagem enquanto continuava minha investigação.

Agora, enquanto eu não escrevo no sistema de arquivos montado, tenho que montá-lo com acesso de leitura/gravação, porque um dos programas faz suposições sobre o que pretendo fazer e requer acesso de gravação, mesmo que eu não pretenda escrever para isso. Você conhece o tipo de programas 'inteligentes'.

Agora o problema é que, ao montar um sistema de arquivos ext4 de leitura/gravação, o último ponto de montagem é gravado no próprio sistema de arquivos, ou seja, o comando mount altera meu arquivo de imagem, incluindo o tempo de acesso ao arquivo e o tempo de modificação do arquivo. Isso é irritante por muitas outras razões. Não consigo encontrar uma opção em mount(8)nem em ext4(5)para evitar isso.

Existe outra maneira de montar com acesso de leitura/gravação, sem o comando mount gravar no sistema de arquivos?

mount ext4
  • 1 respostas
  • 393 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