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

Jim's questions

Martin Hope
Jim
Asked: 2019-08-29 12:02:33 +0800 CST

bash contém código executável/binário

  • 0

Encontrei esta ferramenta e quando baixei é um executável bash que contém código binário.
Primeiramente eu não sabia que isso era possível. Alguém sabe quem isso pode ser feito? Também não tenho certeza de quão seguro isso é geralmente, pois não posso ter certeza do que o arquivo bash contém

bash shell-script
  • 1 respostas
  • 461 Views
Martin Hope
Jim
Asked: 2018-07-17 23:40:05 +0800 CST

Passando um sinalizador booleano para uma função?

  • 11

Eu tenho uma função que dependendo de um argumento onde a funcionalidade muda.
Eu sei que posso fazer:

function foo {  
  PARAM1=$1  
  PARAM2="$2"  
  VAR=$3  
  if[[ -z "$VAR" ]]; then  
   # code here  
  else  
   # other code here  
  fi  
}  

Eu queria saber se existe uma abordagem mais apropriada para o bash. Isso funcionaria, mas eu não gostaria de ter algo como

foo "x" "y" "blah"  
foo "x" "y" "true"  
foo "y" "y" "1"

tudo para ser equivalente.

Existe uma abordagem mais adequada ao Bash?

bash shell-script
  • 3 respostas
  • 24079 Views
Martin Hope
Jim
Asked: 2018-07-07 07:01:47 +0800 CST

Como escapar de novos caracteres de linha para json?

  • 9

Eu tenho um arquivo que contém novos caracteres de linha.
Estou postando o arquivo via curlpara um servidor que iria analisá-lo como json.
Ele rejeita a solicitação devido aos novos caracteres de linha.
Mas quando eu faço:

$(echo "$MY_DATA" | sed 's/$//' | tr -d '\n\r')  

Funciona, mas os novos caracteres de linha sumiram.
Como posso escapar do texto para que ele mantenha os novos caracteres de linha?
Eu tentei tr '\n' '\\n'e sed 's/\n/\\n/ge nenhuma abordagem funcionou

bash shell-script
  • 2 respostas
  • 18444 Views
Martin Hope
Jim
Asked: 2018-06-08 14:03:03 +0800 CST

Obtendo diferenças de arquivo entre revisões/ramificações específicas

  • 1

Eu tenho 2 ramos diferentes A,B que têm uma versão (ligeiramente diferente) de um arquivo X.
Estou interessado em obter os commits que adicionaram alguns padrões específicos no ramo B.
O que eu faço aproximadamente: diff files| grep "^\+" | grep "$PATTERN" | for loop grep -n.. do git blame -L done
Isso funciona, mas eu queria saber se eu estou reinventando/indo uma rotatória para algo que é prontamente suportado no git.
Existe uma maneira melhor?

grep git
  • 1 respostas
  • 58 Views
Martin Hope
Jim
Asked: 2018-06-08 10:58:03 +0800 CST

Por que usar array e for loop quebra a linha em 2? [duplicado]

  • -1
Essa pergunta já tem respostas aqui :
Como fazer um loop sobre as linhas de um arquivo? (6 respostas)
Por que meu script de shell engasga com espaços em branco ou outros caracteres especiais? (6 respostas)
Fechado há 4 anos .

Por que o seguinte fornece a linha que estou procurando:

grep '<appointment-id internal:ref=1.2.3/>' test.xml  
OUTPUT is <appointment-id internal:ref=1.2.3/>  

Enquanto o seguinte o divide em 2 linhas?

a=($(grep '<appointment-id internal:ref=1.2.3/>' test.xml))  
for i in "${a[@]}"; do  
    echo "checking $i"   
    grep  -n "$i" delete.xml
done    

A saída é:

checking <appointment-id
checking internal:ref=1.2.3/>

O arquivo é:

<note>  
    <to>Jim</to>  
    <from>John</from>  
    <heading>Reminder</heading>  
    <body>Some text</body>  
    <appointment-id internal:ref=1.2.3/> 
</note>
bash shell-script
  • 1 respostas
  • 67 Views
Martin Hope
Jim
Asked: 2018-06-06 03:16:57 +0800 CST

Interpolar entre aspas simples

  • 2

Eu tenho o seguinte:

COMMENT="A random comment"  
TEXT_JSON='{"person" : "Jim","comment" : "$COMMENT"}'    
echo "$TEXT_JSON" | jq .  

Isso imprime

{  
  "person": "Jim",  
  "comment": "$COMMENT"  
} 

que não é o que eu quero. Como posso interpolar a string aqui?

string quoting
  • 2 respostas
  • 3112 Views
Martin Hope
Jim
Asked: 2018-05-22 23:53:19 +0800 CST

Passe parâmetros para getopt de um script que não usa getopt

  • 0

Eu tenho um script (vamos chamá-lo scriptC) que usa getoptpara analisar opções curtas e longas e funciona bem.

Este script está sendo chamado assim:
scriptAexecuta scriptBquais chamadas scriptCcom os parâmetros apropriados.

Pergunta: É possível passar os mesmos parâmetros como argumentos para scriptAe depois esses serem passados ​​eventualmente para scriptC?
Os scripts são chamados como:
scriptB "$@"e scriptBeventualmente fazscriptC —param1 —param2

linux shell-script
  • 1 respostas
  • 132 Views
Martin Hope
Jim
Asked: 2018-04-05 23:51:18 +0800 CST

Concat campos específicos separados por espaço(s)

  • -1

Tenho uma string separada por espaços e preciso concatenar a 2ª e a 3ª “palavra”/campo certificando-me de que se mais de um espaço separar as palavras/campos seja tratado corretamente.
O seguinte funciona bem:

tr -s " " |cut -d ' ' -f2 -f3 | tr " " "-"  

Eu queria saber se existe uma maneira ainda mais sucinta de fazer isso?

text-processing command-line
  • 1 respostas
  • 190 Views
Martin Hope
Jim
Asked: 2018-03-31 03:20:34 +0800 CST

Adicionando scrabbles de saída de depuração resultam da função

  • 1

Tenho uma função que retorna um valor.
Mas eu gostaria de adicionar alguns echos para facilitar a depuração. Mas isso atrapalha o resultado.
Exemplo:

function foo {
   echo "In foo"
   VAR="1234"
   echo "Calculated item"
   echo "$VAR"
}

RESULT=$(foo)
echo "RESULT=$RESULT"

Eu estava esperando para obter 1234.
Em vez disso, a saída é:

RESULT=In foo  
Calculated item  
1234

Qual é a maneira correta de corrigir isso?

bash shell-script
  • 1 respostas
  • 55 Views
Martin Hope
Jim
Asked: 2018-03-30 00:35:07 +0800 CST

Concatenando campos e removendo espaços em branco à direita em uma linha

  • 1

Eu tenho uma string com 3 campos separados por espaços em branco. Eu gostaria de concatenar os 2 últimos campos -certificando-se de que a nova linha no final seja removida.

As seguintes obras:

echo -n "abc 1234 5679" | tr -s "" |cut -d ' ' -f2 -f3 | tr " " "-"  

Eu queria saber se existe um perlonliner para isso?

perl
  • 2 respostas
  • 54 Views
Martin Hope
Jim
Asked: 2018-03-29 04:52:53 +0800 CST

Substitua uma linha específica mantendo a identificação

  • 3

Eu tenho um arquivo que tem recuo.
Eu quero substituir uma linha específica, mas manter o recuo.
O arquivo tem uma linha como

   \t\t     customerId = "123" // has indentation in the start of line

Eu estou executando isso:

sed  -e 's:^\s*customerId = "'${OLD_ID}'": customerId = "'${NEW_ID}':' file

Isso não faz nada. Também estou ciente de que, mesmo que funcionasse, eu estragaria o recuo. Como posso consertar isso?
Nota: A solução não precisa ser sed, mas eu gostaria que fosse multiplataforma

ATUALIZAÇÃO
Resposta testada de @Gilles Quenot:

OLD_ID="1234"  
NEW_ID="5678"  
sed -E -i.bk "s:^(\s*)versionName = \"$OLD_ID\":\1versionName = \"$NEW_ID\":"   testfile   

Teste de amostra:

name="Jim"
    customerId = "1234"

O número não foi substituído

text-processing sed
  • 2 respostas
  • 2647 Views
Martin Hope
Jim
Asked: 2018-03-29 02:17:37 +0800 CST

Rolando o incremento do número no bash

  • 0

Eu tenho uma string que representa um tipo de versão. Eu gostaria de incrementá-lo e se a segunda parte exceder 9 para ir para o próximo número mais alto O seguinte parece funcionar. Eu queria saber se existe uma maneira mais sucinta de fazer isso

FIRST=$(echo -n "$VERSION"| cut -d "." -f 1)  
SECOND=$(echo -n "$VERSION"|cut -d "." -f 2)  
SECOND=$((SECOND + 1))  
if [[ $SECOND -ge 10 ]]; then  
    SECOND="0"  

fi  
FIRST=$(($FIRST + 1))

NEW_NUMBER=$FIRST.$SECOND  

Exemplos:

Input: 102.8 Output: 102.9     
Input: 102.9 Output: 103.0  
bash shell-script
  • 1 respostas
  • 627 Views
Martin Hope
Jim
Asked: 2018-03-28 02:14:58 +0800 CST

Adicione alguma opção de simulação ao script

  • 0

Eu tenho um script que aceita um argumento e, se não for definido, usa um padrão.

VALUE=$1
if [[ -z "$VALUE" ]];  
   VALUE=foo #some function returns the default  
fi  

Então o script continua fazendo algumas coisas.
Eu gostaria de "melhorá-lo" e fornecer algumas dry runopções. Para que, se isso for aprovado, teríamos algo como

if [[ -z "$DRY" ]];  
  echo "command x y z"  
else 
  command "x" "y" "z"  
fi  

Como posso fazer isso?

bash shell-script
  • 1 respostas
  • 10597 Views
Martin Hope
Jim
Asked: 2018-03-27 03:36:37 +0800 CST

O parâmetro especial bash $@ é tratado como um loop em printf?

  • 5

Então estou testando o seguinte:

foo() {  
  printf "\nAll the parameters, each on a separate line:\n"  
  printf "param: %s\n" "$@"  
}  

foo The "nicely colored" rainbow  

A saída é:

All the parameters:  
param: The
param: nicely colored
param: rainbow

Portanto, se entendi corretamente, porque IFSestá definido para \t\nobtermos os parâmetros separados por tabulação (o primeiro caractere de IFS).
Mas por que eles são impressos em linhas separadas?
É o printf executado para cada parâmetro. Ou seja, o bash converte isso em um loop for?
Além disso, o seguinte (sem aspas duplas) gera o mesmo resultado:

printf "param: %s\n" $@

bash shell-script
  • 1 respostas
  • 1233 Views
Martin Hope
Jim
Asked: 2018-03-22 03:04:09 +0800 CST

O que essa expansão de parâmetro faz?

  • 1

O que exatamente o seguinte faz?

MY_VAR=${MY_INPUT##*$'\n'}
bash shell-script
  • 1 respostas
  • 64 Views
Martin Hope
Jim
Asked: 2018-03-17 05:54:11 +0800 CST

Por que o regex no bash funciona apenas se for uma variável e não diretamente? [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
teste de shell se a string de várias linhas contém o padrão especificado na última linha (3 respostas)
Fechado há 4 anos .

Então, por que o seguinte funciona, ou seja, imprime a correspondência:

THE_REGEX='^test\/version[0-9]+([.][0-9]+)+$'
if [[ "$SOME_VAR" =~ $THE_REGEX ]]; then
    echo "Match!"
fi

Mas o seguinte NÃO:

if [[ "$SOME_VAR" =~ '^test\/version[0-9]+([.][0-9]+)+$' ]]; then
    echo "Match!"
fi  

Qual é a diferença? É o mesmo regex

bash shell-script
  • 1 respostas
  • 7104 Views
Martin Hope
Jim
Asked: 2017-12-14 11:54:17 +0800 CST

Descobrir qual processo bifurca muitos threads

  • 6

Eu tenho um processo em uma instalação do Linux que em algum momento apresenta algum tipo de pico e passa o número máximo permitido de threads/processos permitidos pelo sistema. Eu descobri isso verificando ps -elfT | wc -lrepetidamente.

Mas o que não sei é o que exatamente causa esse pico.
A saída de ps -elfTtem muitas informações, mas não consigo entender facilmente se existe algum processo filho que faz algum tipo de "blurp" na bifurcação e faz uma bagunça.

Como eu poderia descobrir isso?

Exemplo: ps -elfT | cut -d' ' -f3 | sort |uniqme dá os processos em execução no momento. Como eu poderia adicionar uma contagem para ver quanto cada um contribui para o total?

monitoring process
  • 1 respostas
  • 3410 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