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 / unix / 问题

All perguntas(unix)

Martin Hope
MrSnrub
Asked: 2024-11-04 21:01:07 +0800 CST

Extrair caminho do arquivo da saída do diff do Git

  • 7

Tenho o seguinte comando:

git diff branch1..branch2 | grep '^diff'

...que produzirá arquivos que contêm diferenças entre dois branches. A saída de exemplo é assim:

diff --git a/path-to-file1/file1.php b/path-to-file1/file1.php
diff --git a/path-to-file2/file2.php b/path-to-file2/file2.php
diff --git a/path-to-file3/file3.php b/path-to-file3/file3.php

Como eu altero esse comando para obter apenas o caminho do arquivo? Eu quero filtrar o "diff --git a/" e "b/path-to-file1/file1.php". Então, eu quero que a saída final fique assim:

path-to-file1/file1.php
path-to-file2/file2.php
path-to-file3/file3.php

Suponha que ambos os branches tenham a mesma estrutura de diretório. Então, pegue os caminhos "a/" ou "b/".

bash
  • 1 respostas
  • 284 Views
Martin Hope
Privet Privet
Asked: 2024-11-04 20:27:53 +0800 CST

Como leio dados de firmware UEFI de um chip?

  • 5

Preciso implementar um programa executado fora do sistema operacional no mesmo nível do BIOS, que lerá todos os dados do firmware UEFI do chip do BIOS, quais endereços de memória precisam ser lidos (existe algum tipo de API para obter todos os dados do firmware UEFI?) e onde exatamente está o firmware UEFI?

uefi
  • 1 respostas
  • 53 Views
Martin Hope
JanKanis
Asked: 2024-11-04 19:07:15 +0800 CST

No bash, como capturar o stdout e o código de saída de um comando quando o sinalizador -e está ativo?

  • 7

Para capturar stdout e o código de saída quando o -esinalizador (sair do shell imediatamente quando um comando falha) não estiver definido, eu usaria

OUTPUT="$(my_command)"
exit_code=$?

Para capturar o código de saída com -eset, eu usaria

exit_code=0
my_command || exit_code=$?

Mas combinar as duas abordagens não funciona:

exit_code=0
OUTPUT="$(my_command || exit_code=$?)"

Isso não é definido exit_codeporque é atribuído em um subshell e a cópia no shell pai não é atualizada.

Então, como eu capturo stdout e o código de saída? Eu poderia unset -eou, por exemplo, escrever o código de saída em um tempfile, mas eu gostaria de algo mais simples.

bash
  • 3 respostas
  • 151 Views
Martin Hope
Martian2020
Asked: 2024-11-04 17:10:10 +0800 CST

Artefatos quando o MPV reproduz o mesmo arquivo localizado em outro disco

  • 5

Estou enfrentando um problema peculiar. Copiei o arquivo de mídia para o flash USB (usando o Linux Mint). Agora, quando esses arquivos são reproduzidos em mpvum ponto, ele congela por algum tempo, exibindo o que parecem símbolos verdes de línguas estrangeiras por toda a tela (e nenhuma legenda após o descongelamento). Quando reproduzido do disco inicial, ele reproduz bem. Os hashes calculados no terminal são os mesmos.

Gostaria de saber como reproduzir o mesmo arquivo pode levar a resultados diferentes.

linux
  • 2 respostas
  • 19 Views
Martin Hope
Nickers
Asked: 2024-11-04 15:47:39 +0800 CST

Problema com uname -r no servidor VPS

  • 5

Estou tentando instalar o amneziawg (wireguard) em um servidor VPS com debian 11

Quando ele inicia, recebo esse erro

Starting WireGuard via wg-quick(8) for awg0...  
[#] ip link add awg0 type amneziawg  
RTNETLINK answers: Operation not supported  
Unable to access interface: Protocol not supported  
[#] ip link delete dev awg0 
Cannot find device "awg0" 
[email protected]:  Main process exited, code=exited, status=1/FAILURE

Durante a instalação, houve um comando que não consegui executar

sudo apt-get install linux-headers-$(uname -r) :

E: Unable to locate package linux-headers-4.19.0 
E: Couldn't find any package by glob 'linux-headers-4.19.0' 
E: Couldn't find any package by regex 'linux-headers-4.19.0'

(Eu reiniciei) Alguns comandos que tentei:

sudo modprobe amneziawg :

modprobe: FATAL: Module amneziawg not found in directory /lib/modules/4.19.0

uname -a :

Linux example.com 4.19.0 #1 SMP Wed Jul 12 12:00:44 MSK 2023 x86_64 GNU/Linux

diretório /lib/modules/ :

4.19.0  5.10.0-33-amd64  5.10.0-33-rt-amd64

sudo apt-get install linux-headers-5.10.0-33-amd64 :

linux-headers-5.10.0-33-amd64 is already the newest version (5.10.226-1). 
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Como você deve ter adivinhado, não tenho ideia do que estou fazendo ou como resolver esse problema.

Parece-me que o problema está na pasta de módulos 4.19.0

Posso de alguma forma mudar para a versão 5.10.0 se for um serviço NAT VPS?

Provavelmente tem um kernel para cada servidor virtual ou algo assim...

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
reboot

Não faz nada

O que eu faço? Qualquer sugestão é bem-vinda.

debian
  • 1 respostas
  • 7 Views
Martin Hope
user447274
Asked: 2024-11-04 13:37:27 +0800 CST

Substitui a string de prefixo das linhas em um arquivo e coloca em uma matriz bash

  • 7

No arquivo groupAfiles.txtestão as linhas:

file14
file2
file4
file9

Preciso de uma maneira de convertê-los para remover filee adicionar /dev/loope colocá-los todos em uma linha com um espaço entre eles.

/dev/loop14 /dev/loop2 /dev/loop4 /dev/loop9

Então preciso colocar isso em uma matriz.

(mas os números mudam)

Como faço isso?

bash
  • 3 respostas
  • 307 Views
Martin Hope
user447274
Asked: 2024-11-04 11:38:36 +0800 CST

Formatar saída e colunas

  • 5

No Linux em Bash em um loop for eu faço:

... ; do echo "$i --> $i-new" ; ...

A saída é algo como isto:

file1  -->  file1-new
file2  -->  file2-new
...
file9  -->  file9-new
file10  -->  file10-new
file11  -->  file11-new

como se tornar uma saída como esta:

file1   -->   file1-new
file2   -->   file2-new
...
file9   -->   file9-new
file10  -->  file10-new
file11  -->  file11-new

?

linux
  • 1 respostas
  • 18 Views
Martin Hope
Dair
Asked: 2024-11-04 04:58:57 +0800 CST

Instalando o Alpine no DC Roma Laptop II (RISC-V): Como posso criar uma imagem de um "Mini Root Filesystem"?

  • 5

Recentemente, fiz uma pergunta no Reddit sobre como instalar o Arch no meu DC Roma Laptop II. Uma das sugestões foi usar o Alpine, pois ele tem suporte para RISC-V. Olhando a página de downloads, há de fato um RISC-V "Mini Root Filesystem" disponível para download. Depois de baixar isso, tentei convertê-lo em um iso usando (semelhante ao que descrevi no tópico do Reddit):

mkisofs -o alpine_riscv.iso ~/Downloads/alpine-minirootfs-3.20.3-riscv64

E para copiá-lo para o cartão Micro SD que pretendo inicializar, executei:

sudo dd if=alpine_riscv.img of=/dev/sdb bs=64M conv=fsync oflag=direct status=progress

Depois de tentar inicializar o computador com o Micro SD inserido, só aparece uma tela em branco. Não tenho muita certeza do que fazer com um "Mini Root Filesystem" para realmente construir uma imagem correta. (Estou acostumado a apenas fazer flash de arquivos ISO pré-construídos. Suspeito que estou fazendo algo gravemente errado.) Existe algum utilitário de linha de comando para ajudar a converter Mini Root Filesystems em imagens ISO que eu possa usar para inicializar?

boot
  • 1 respostas
  • 42 Views
Martin Hope
MamboDee
Asked: 2024-11-04 01:21:31 +0800 CST

SSH Match EXEC aparentemente não tem efeito

  • 5

No momento, tenho dois controles remotos nos meus repositórios git, um apontando para git quando estou em casa e um apontando para git-ext quando estou fora. Quero simplificar isso. A configuração ssh abaixo funciona com git e git-ext (observe que a declaração match está comentada). Se eu descomentei o bloco match, pelo que posso dizer, não há nenhuma mudança no comportamento do bloco git. Quando estou em casa, funciona, quando estou fora, não.

Não importa se eu uso exec ou !exec. Aparentemente nada muda. Não tenho certeza do que está acontecendo, mas eu diria que o exec não está realmente em execução. Qualquer ajuda seria apreciada.

Isso está sendo executado no Windows WSL2, Debian 11, OpenSSH_8.4p1. Embora eu tenha tentado no meu laptop Linux executando Debian 12 também, com os mesmos resultados.

host git
  hostname 192.168.1.10
  user git
  identityfile ~/.ssh/id_rsa_git

#match host git !exec "/usr/bin/ping -c1 192.168.1.1"
#  proxyjump  bastion

host example.com
  hostname example.com
  user user
  identityfile ~/.ssh/id_rsa_cloud

host bastion
  hostname 192.168.1.5
  user jump
  identityfile ~/.ssh/id_rsa_bastion
  proxyjump  example.com

host git-ext
  hostname 192.168.1.10
  user git
  identityfile ~/.ssh/id_rsa_git
  proxyjump  bastion
ssh
  • 1 respostas
  • 26 Views
Martin Hope
HappyFace
Asked: 2024-11-04 00:34:00 +0800 CST

Impedir a propagação do SIGINT do subshell para o shell pai no Zsh

  • 5

Preciso evitar que SIGINT (Ctrl-C) se propague de um subshell para suas funções de shell pai no Zsh.

Aqui está um exemplo mínimo:

function sox-record {
    local output="${1:-$(mktemp).wav}"
    (
        rec "${output}" trim 0 300  # Part of sox package
    )
    echo "${output}"  # Need this to continue executing after Ctrl-C
}

function audio-postprocess {
    local audio="$(sox-record)"
    # Process the audio file...
    echo "${audio}"
}

function audio-transcribe {
    local audio="$(audio-postprocess)"
    # Send to transcription service...
    transcribe_audio "${audio}"  # Never reached if Ctrl-C during recording
}

A solução alternativa atual requer capturar SIGINT em todos os níveis, o que leva a um código repetitivo e sujeito a erros:

function sox-record {
    local output="${1:-$(mktemp).wav}"
    setopt localtraps
    trap '' INT
    (
        rec "${output}" trim 0 300
    )
    trap - INT
    echo "${output}"
}

function audio-postprocess {
    setopt localtraps
    trap '' INT
    local audio="$(sox-record)"
    trap - INT
    # Process the audio file...
    echo "${audio}"
}

function audio-transcribe {
    setopt localtraps
    trap '' INT
    local audio="$(audio-postprocess)"
    trap - INT
    # Send to transcription service...
    transcribe_audio "${audio}"
}

Quando o usuário pressiona Ctrl-C para parar a gravação, eu quero: 1. Que o recsubprocesso termine (funcionando) 2. Que as funções pai continuem executando (requer captura de SIGINT em cada chamador)

Eu sei que:

  • SIGINT é enviado a todos os processos no grupo de processos em primeiro plano
  • O uso setsidcria um novo grupo de processos, mas impede que os sinais cheguem ao filho
  • Adicionar trap '' INTo pai requer que todos os chamadores também capturem SIGINT para evitar propagação.

Existe uma maneira de isolar SIGINT apenas para o subshell sem exigir tratamento de sinal em todas as funções pai? Ou isso é fundamentalmente impossível devido a como os grupos de processos Unix e a propagação de sinal funcionam?


Dei uma olhada nesta pergunta e tentei isto:

function sox-record {
    local output="${1:-$(mktemp).wav}"

    zsh -mfc "rec "${output}" trim 0 300" </dev/null >&2 || true

    echo "${output}"
}

Embora isso funcione quando eu apenas chamo sox-record, quando eu chamo uma função pai como audio-postprocess, Ctrl-C não faz nada. (E eu tenho que usar pkillto kill rec.)

function audio-postprocess {
    local audio="$(sox-record)"

    # Process the audio file...
    echo "${audio}"
}

zsh
  • 1 respostas
  • 14 Views
Prev
Próximo

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