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

Allan's questions

Martin Hope
Allan
Asked: 2023-06-16 02:46:46 +0800 CST

Bash: convertendo uma string com espaços e aspas em uma matriz

  • 6

Eu tenho uma função (não criada por mim) que gera uma série de strings entre aspas:

command <args>

“Foo”
“FooBar”
“Foo Bar”
“FooBar/Foo Bar”

Quando tento atribuí-lo a um array (Bash; BSD/Mac), em vez de 4 elementos, obtenho 7. Por exemplo, para ${array[2]}eu deveria obter “Foo Bar”, mas em vez disso, obtenho ”Foocom o próximo elemento sendo Bar”. Qualquer elemento sem o espaço funciona corretamente (ou seja ${array[0]}= “Foo”)

Como pode atribuir cada um desses elementos entre aspas incluindo o espaço para uma matriz que os elementos são separados por espaços (?) próprios?

No momento, estou pensando em usar sed/awk para “retirar” as aspas, mas acho que deve haver uma maneira melhor e mais eficiente.

Atualmente, estou atribuindo a saída do comando (parece exatamente com a saída acima, incluindo as aspas) a uma variável temporária e, em seguida, atribuindo-a a uma matriz.

_tempvar=“$(command <args>)”

declare -a _array=(${_tempvar})
bash
  • 3 respostas
  • 72 Views
Martin Hope
Allan
Asked: 2020-01-14 03:03:38 +0800 CST

Usando awk para extrair uma string entre diferentes caracteres

  • 5

Estou tentando escrever uma função bash que obtém o UUID de uma VM do VirtualBox. Eu sou muito novo, awkentão estou tentando me concentrar em aprender como resolver o problema usando-o. Estou ciente de que posso usar sedou até mesmo cutpara resolver isso.

Minha saída "raw" do VBoxManage list vmsé a seguinte:

$ VBoxManage list vms
"FreeBSD" {1aac7062-bd59-47ee-9261-2f6aa8d9ef53}
"Windows 10" {64942de7-beb9-418c-9f52-5befcb6f577b}
"High Sierra" {07f73e1a-a0c4-4190-ade1-79a2e432b4d6}
"Test Machine" {9d0953a7-ca2a-4667-8c5b-1a9f550b2956}

Minha saída desejada é apenas obter o UUID de uma determinada VM. Usando "Test Machine" para este caso, estou procurando 9d0953a7-ca2a-4667-8c5b-1a9f550b2956(sem os colchetes {e }).

Depois de muito pesquisar e testar, cheguei a

$ VBoxManage list vms | awk '/Test Machine/{ sub("{" ,""); sub("}", "");  print $3 }'

9d0953a7-ca2a-4667-8c5b-1a9f550b2956 

Funciona, mas tenho que usar subcomandos para extraí-lo.


Minha pergunta é, existe uma maneira de simplificar a parte de substituição da ação com um oroperador de tipo para que eu não precise usar dois subcomandos?

Por exemplo, se eu tentar awk '/Test Machine/{ sub("{" || "}", ""); print $3', não funciona - ele imprime todo o campo, incluindo os colchetes.

 {9d0953a7-ca2a-4667-8c5b-1a9f550b2956}

Existe uma maneira melhor de extrair essa string?

bash awk
  • 6 respostas
  • 7542 Views
Martin Hope
Allan
Asked: 2018-03-06 06:43:21 +0800 CST

Verificando o usuário root em sh e bash [duplicado]

  • 2
Esta pergunta já tem respostas aqui :
Como impedir que um script seja executado se não for root (e echo "Não está sendo executado como root! Saindo ...") (4 respostas)
Fechado há 4 anos .

Estou tentando escrever um script que automatize a instalação de portas/pacotes em novas instalações do FreeBSD. Para isso, o usuário que executa o script deve ser o root.

O sistema é "suposto" para ser virgem bashe sudopode ou não ser instalado; então estou tentando contabilizar isso. Para fazer isso, estou verificando se o ID do usuário é igual a 0.

O problema é que, entre bash e sh, as variáveis ​​de ambiente são diferentes:

  • bash -> $EUID (todos em maiúsculas)
  • sh -> $euid (todos inferiores)

Existe uma maneira diferente da variável de ambiente para verificar o usuário root ou devo apenas ajustar a verificação do usuário com base no ambiente?

bash freebsd
  • 2 respostas
  • 3625 Views
Martin Hope
Allan
Asked: 2017-12-31 06:19:07 +0800 CST

a geometria do terminal xfce4 é dimensionada extremamente pequena

  • 1

Eu tenho um problema muito interessante com o xfce4-terminal e não sei como consertar.

As configurações de geometria são dimensionadas extremamente pequenas. Com isso, quero dizer que tenho uma geometria de 80 cols por 40 cols e obtenho uma janela que é efetivamente 27x3 (veja abaixo), que acho que é o mínimo que ela abrirá. Se eu especificar 120 x 80, é praticamente o mesmo.

insira a descrição da imagem aqui

No entanto, se eu alterar as configurações nas preferências para algo ultrajante como 5000x750, obtenho uma janela de tamanho normal que não precisa ser redimensionada para funcionar. --geometrybandeira:

/usr/local/bin/xfce4-terminal --geometry 5000x750

Estou usando a fonte regular Monospaced 12pt, mas já tentei mudar para outras para ver se surtia efeito, mas nada dá.

Não tenho esse problema no Xterm - recebo uma janela de 80 x 40 ao iniciá-lo. Também não tenho esse problema com nenhum outro aplicativo que lanço; apenas xfce4-terminal.

Se alguém souber como posso resolver isso, ficarei muito agradecido.

FreeBSD 11.1, Xfce 4.12.

xfce freebsd
  • 1 respostas
  • 385 Views
Martin Hope
Allan
Asked: 2017-12-29 17:50:21 +0800 CST

FreeBSD com duas interfaces de rede e domínios diferentes

  • 0

Eu tenho uma máquina FreeBSD com duas NICs configuradas da seguinte forma:

  • em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
  • em1 ---> IP set statically (10.0.0.2). "lab" domain

Para todos os efeitos, meu domínio doméstico funciona bem. Posso acessar a Internet e fazer ping em qualquer host da rede. O roteamento também funciona, posso fazer ping em qualquer host de qualquer domínio da máquina FreeBSD via IP, mas só posso resolver nomes na rede doméstica.

Criei um /etc/resolvconf.confarquivo para anexar o domínio de pesquisa e o servidor de nomes ao resolv.confarquivo da seguinte maneira:

search_domains="lab"
name_servers="10.0.0.10" 

Em seguida, atualizo o resolv.conf com o comando:

$ sudo resolvconf -u

Agora posso resolver nomes na labrede, mas não mais na homerede. Editar manualmente o arquivo resolv.conf e inverter a ordem dos domínios e servidores de nomes resulta na resolução, homemas não lab- exatamente o oposto.

Como posso dizer resolv.confpara usar um servidor DNS para um domínio específico (o IP definido estaticamente) e permitir que ele obtenha as informações de DNS para o outro IP via DHCP?


Somente para referência....

/etc/rc.conf:

hostname="beastie1"
ifconfig_em0="DHCP"
ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

/etc/resolv.conf

# Generated by resolvconf
search lab home.
nameserver 10.0.0.10
nameserver 192.168.1.1

O "servidor" DNS no labdomínio 10.0.0.0 nada mais é do que um roteador Netgear de consumo barato que fornece concessões de DHCP. Eu só tenho isso definido estaticamente porque é um servidor TFTP para bootimages e eu propositalmente o defini como 10.0.0.2 para facilitar o uso ao tentar fazer flash de atualizações de firmware em alguns equipamentos Cisco.

networking freebsd
  • 1 respostas
  • 1425 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