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

s.k's questions

Martin Hope
s.k
Asked: 2024-03-10 03:10:38 +0800 CST

Uma nova linha é equivalente a && em um script bash?

  • 5

Estou simplesmente me perguntando se, em um script bash, uma nova linha é funcionalmente 100% equivalente a &&?

por exemplo:

#!/bin/bash

7z x "${file}"

mv "${file}" "${new_file}"

contra

#!/bin/bash

7z x "${file}" && mv "${file}" "${new_file}"

GNU bash, versão 5.1.16(1)-release (x86_64-pc-linux-gnu)

bash
  • 1 respostas
  • 58 Views
Martin Hope
s.k
Asked: 2024-02-28 18:03:33 +0800 CST

Substitua a string ${FOO} por ${'$'}{BAR} por sed

  • 5

Eu tenho essa string ocorrendo N vezes em um arquivo: ${FOO} que preciso substituir por esta string:${'$'}{BAR}

Este é o meu estado atual:

sed "s/\\${FOO}/\\${'\\$'}{BAR}/" file.txtmas gera "má substituição".

Como eu poderia conseguir isso corretamente com sed(versão 4.8)?

sed
  • 1 respostas
  • 27 Views
Martin Hope
s.k
Asked: 2023-03-30 20:27:22 +0800 CST

Como obter o ID do terminal atual

  • 14

Relacionado: Como obter o nome do terminal atual?

Mas eu quero apenas o ID do terminal atual, por exemplo, quando ttyretornar /dev/pts/11, quero apenas imprimir 11.

A ideia é adicionar essa informação no prompt do shell após o nome de usuário \una PS1variável do meu .bashrcarquivo:

Resultado desejado:username11@localhost:~$

No momento tenho:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u$(tty)@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

que dá:username/dev/pts/11@localhost:~$

bash
  • 1 respostas
  • 515 Views
Martin Hope
s.k
Asked: 2023-03-11 01:43:20 +0800 CST

Alinhando visualmente as colunas de um arquivo CSV

  • 8

Usando sedou awk, é possível alinhar visualmente colunas em um arquivo CSV?

Por exemplo:

por exemplo de:

a,b,c,some stuff,"some, other, stuff",d,2023-03-10 18:37:00
y,x,z,t,cool,thing,2022-04-12 21:44:00

para:

a, b, c, some stuff,"some, other, stuff",     d, 2023-03-10 18:37:00<EOL>
x, y, z,          t,                cool, thing, 2022-04-12 21:44:00<EOL>

Existem alguns campos com aspas duplas contendo texto e vírgulas.

Eu tentei column, mas aparentementebsdmainutils não é capaz de lidar com esses dados.

csv
  • 3 respostas
  • 285 Views
Martin Hope
s.k
Asked: 2022-10-31 07:12:50 +0800 CST

Encontrando caminhos para ambos: variável wxWidgets_LIBRARIES e wxWidgets_INCLUDE_DIRS necessária para compilação C++

  • 5

No sistema operacional baseado em Debian, como eu poderia descobrir os caminhos wxWidgets_LIBRARIES e wxWidgets_INCLUDE_DIRS?

Na verdade, estou enfrentando esse erro com cmake ao tentar compilar um software:

CMake Error at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
  Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
  wxWidgets_INCLUDE_DIRS)
Call Stack (most recent call first):
  /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.18/Modules/FindwxWidgets.cmake:1008 (find_package_handle_standard_args)
  src/pacakge_core/CMakeLists.txt:16 (find_package)

Portanto, estou procurando os caminhos corretos para passar ao meu comando cmake.

debian
  • 1 respostas
  • 15 Views
Martin Hope
s.k
Asked: 2022-10-31 05:32:56 +0800 CST

Instalando uma compilação de arquivo deb com checkinstall no Ubuntu em um contêiner docker baseado no Debian

  • 5

Eu compilei um software C++ no meu laptop Ubuntu 22.04 e costumava checkinstallinstalá-lo. Isso cria o .debarquivo correspondente e isso é bom.

Mas agora eu quero instalar esse .debarquivo em um contêiner docker baseado em "Debian GNU/Linux 11 (bullseye)" e dpkgmostra este erro:

# dpkg --install mypackage-8.0.0_20221030-1_amd64.deb 
dpkg-deb: error: archive 'mypackage-8.0.0_20221030-1_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up
dpkg: error processing archive mypackage-8.0.0_20221030-1_amd64.deb (--install):
 dpkg-deb --control subprocess returned error exit status 2
Errors were encountered while processing:
 mypackage-8.0.0_20221030-1_amd64.deb

Como eu poderia instalar este .debarquivo em meu container sem ter que compilar o software novamente (o que significará instalar todas as ferramentas de construção C++ em meu container, o que eu quero evitar...)?

debian
  • 1 respostas
  • 26 Views
Martin Hope
s.k
Asked: 2022-02-17 05:34:13 +0800 CST

Qual é o endereço de ligação padrão usado ao abrir um túnel SSH sem especificá-lo explicitamente

  • 0

Ao abrir um túnel SSH, por exemplo, da seguinte forma no Ubuntu 21.10:

$ ssh -f -N -L 1234:127.0.0.1:5678 user@server

qual(is) é(são) o (s) endereço(s) de ligação padrão (is) usado(s) sob o capô (se houver)?

Isso é equivalente a:

$ ssh -f -N -L 127.0.0.1:1234:127.0.0.1:5678 user@server

ou

$ ssh -f -N -L 0.0.0.0:1234:127.0.0.1:5678 user@server

ou algo como

$ ssh -f -N -L *:1234:127.0.0.1:5678 user@server

?

sshd ssh
  • 1 respostas
  • 243 Views
Martin Hope
s.k
Asked: 2022-02-06 09:15:44 +0800 CST

Autossh não está funcionando da mesma forma localmente do que em um servidor remoto

  • 0

Se eu iniciar autosshna minha máquina local da seguinte forma:

autossh -M 20000 -f - nNT -L 192.168.144.1:5433:127.0.0.1:5432 remote-user@remote-server-B

ele inicia automaticamente o seguinte sshcomando sob o capô, que é o que eu espero:

ps aux | grep -i ssh
/usr/lib/autossh/autossh -M 20000 -f - nNT -L 192.168.144.1:5433:127.0.0.1:5432 remote-user@remote-server
/usr/bin/ssh -L 20000:127.0.0.1:20000 -R 20000:127.0.0.1:20001 -N -L 192.168.144.1:5433:127.0.0.1:5432 remote-user@remote-server-B

mas o mesmo comando lançado em um servidor remoto A só mostra isso com ps:

/usr/lib/autossh/autossh -M 20000 -f - nNT -L 192.168.144.1:5433:127.0.0.1:5432 remote-user@remote-server-B

parece que não iniciou o sshcomando subjacente.

(observe que, se eu iniciar o sshcomando manualmente no servidor remoto A, poderei me conectar corretamente ao servidor remoto B.)

Não consigo descobrir por que o comando se comporta de maneira diferente no controle remoto do que no meu computador local ...

Ambas as autosshversões estão 1.4gno meu computador local e no servidor remoto A.

E ambas as máquinas estão no Ubuntu 20.04.

EDITAR :

De acordo com o comentário de Stéphane Chazelas: Na verdade, noto dois comportamentos ligeiramente diferentes ao tentar o comando em duas máquinas remotas diferentes:

1.

$ strace -fe execve autossh -M 20000  -f  -nNT -L 192.168.144.1:5433:127.0.0.1:5432 remote-user@remote-server-B
execve("/usr/bin/autossh", ["autossh", "-M", "20000", "-f", "-nNT", "-L", "192.168.144.1:5433:127.0.0.1:5432", "remote-user@remote-server-B"], 0x7fff532c2f68 /* 40 vars */) = 0
strace: Process 23539 attached
[pid 23539] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=23539, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
strace: Process 23540 attached
[pid 23540] execve("/bin/egrep", ["egrep", "-q", "--", "-f?M ?[0-9]+"], 0x55b83714eae8 /* 38 vars */) = 0
[pid 23540] execve("/home/username/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/home/username/.local/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/home/username/anaconda3/condabin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/opt/blenderc/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/usr/local/sbin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/usr/local/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/usr/sbin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/usr/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/sbin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = -1 ENOENT (No such file or directory)
[pid 23540] execve("/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x55b692ae0a28 /* 38 vars */) = 0
[pid 23540] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=23540, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
execve("/usr/lib/autossh/autossh", ["/usr/lib/autossh/autossh", "-M", "20000", "-f", "-nNT", "-L", "192.168.144.1:5433:127.0.0.1:5432", "remote-user@remote-server-B"], 0x55b83714f470 /* 38 vars */) = 0
strace: Process 23541 attached
[pid 23538] +++ exited with 0 +++
strace: Process 23542 attached
[pid 23542] execve("/usr/bin/ssh", ["/usr/bin/ssh", "-L", "20000:127.0.0.1:20000", "-R", "20000:127.0.0.1:20001", "-nNT", "-L", "192.168.144.1:5433:127.0.0.1:5432", "remote-user@remote-server-B"], 0x7ffce7ca53e0 /* 38 vars */) = 0
[pid 23542] +++ exited with 255 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=23542, si_uid=1000, si_status=255, si_utime=2, si_stime=0} ---
strace: Process 23543 attached
[pid 23543] execve("/usr/bin/ssh", ["/usr/bin/ssh", "-L", "20000:127.0.0.1:20000", "-R", "20000:127.0.0.1:20001", "-nNT", "-L", "192.168.144.1:5433:127.0.0.1:5432", "remote-user@remote-server-B"], 0x7ffce7ca53e0 /* 38 vars */) = 0

(as últimas 3 linhas sendo repetidas infinitamente em intervalos regulares, cada vez com um ID de processo diferente)

2.

$ strace -fe execve autossh -M 20000  -f  -nNT -L 192.168.144.1:5433:127.0.0.1:5432 remote-user@remote-server-B
execve("/usr/bin/autossh", ["autossh", "-M", "20000", "-f", "-nNT", "-L", "192.168.144.1:5433:127.0.0.1:5432", "remote-user@remote-server-B"], 0x7fff7be64dc8 /* 34 vars */) = 0
strace: Process 3850 attached
[pid  3850] +++ exited with 0 +++
strace: Process 3851 attached
[pid  3849] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3850, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
[pid  3851] execve("/bin/egrep", ["egrep", "-q", "--", "-f?M ?[0-9]+"], 0x55690bd42a08 /* 32 vars */) = 0
[pid  3851] execve("/usr/local/sbin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x5637ad7d9958 /* 32 vars */) = -1 ENOENT (No such file or directory)
[pid  3851] execve("/usr/local/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x5637ad7d9958 /* 32 vars */) = -1 ENOENT (No such file or directory)
[pid  3851] execve("/usr/sbin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x5637ad7d9958 /* 32 vars */) = -1 ENOENT (No such file or directory)
[pid  3851] execve("/usr/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x5637ad7d9958 /* 32 vars */) = -1 ENOENT (No such file or directory)
[pid  3851] execve("/sbin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x5637ad7d9958 /* 32 vars */) = -1 ENOENT (No such file or directory)
[pid  3851] execve("/bin/grep", ["grep", "-E", "-q", "--", "-f?M ?[0-9]+"], 0x5637ad7d9958 /* 32 vars */) = 0
[pid  3851] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3851, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
execve("/usr/lib/autossh/autossh", ["/usr/lib/autossh/autossh", "-M", "20000", "-f", "-nNT", "-L", "192.168.144.1:5433:127.0.0.1:5432", "remote-user@remote-server-B"], 0x55690bd433a0 /* 32 vars */) = 0
strace: Process 3852 attached
[pid  3849] +++ exited with 0 +++
+++ exited with 1 +++

(e então retorna imediatamente o console para o usuário)

ubuntu ssh
  • 1 respostas
  • 100 Views
Martin Hope
s.k
Asked: 2022-01-30 10:50:16 +0800 CST

As opções de Autossh não são consistentes com o que está em sua página de manual?

  • 0

Eu tenho uma pergunta meio ingênua, mas lendo este tópico, por exemplo: https://superuser.com/questions/37738/how-to-reliably-keep-an-ssh-tunnel-open

Pode-se ver na resposta aceita como usar autossh, por exemplo:

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

Mas na página man de autossh https://manpages.ubuntu.com/manpages/focal/man1/autossh.1.html só consigo ver 3 opções disponíveis: -M, -fe -V.

Mesma coisa no meu sistema:

$ autossh --help
/usr/lib/autossh/autossh: invalid option -- '-'
usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]

    -M specifies monitor port. Overrides the environment
       variable AUTOSSH_PORT. 0 turns monitoring loop off.
       Alternatively, a port for an echo service on the remote
       machine may be specified. (Normally port 7.)
    -f run in background (autossh handles this, and does not
       pass it to ssh.)
    -V print autossh version and exit.

Environment variables are:
    AUTOSSH_GATETIME    - how long must an ssh session be established
                          before we decide it really was established
                          (in seconds). Default is 30 seconds; use of -f
                          flag sets this to 0.
    AUTOSSH_LOGFILE     - file to log to (default is to use the syslog
                          facility)
    AUTOSSH_LOGLEVEL    - level of log verbosity
    AUTOSSH_MAXLIFETIME - set the maximum time to live (seconds)
    AUTOSSH_MAXSTART    - max times to restart (default is no limit)
    AUTOSSH_MESSAGE     - message to append to echo string (max 64 bytes)
    AUTOSSH_PATH        - path to ssh if not default
    AUTOSSH_PIDFILE     - write pid to this file
    AUTOSSH_POLL        - how often to check the connection (seconds)
    AUTOSSH_FIRST_POLL  - time before first connection check (seconds)
    AUTOSSH_PORT        - port to use for monitor connection
    AUTOSSH_DEBUG       - turn logging to maximum verbosity and log to
                          stderr

De onde vêm as opções e -N? Não estou olhando para o lugar certo?-R-C

ubuntu autossh
  • 1 respostas
  • 198 Views
Martin Hope
s.k
Asked: 2021-09-24 05:18:11 +0800 CST

Escapando aspas simples dentro de um subcomando entre aspas simples, dentro de um comando entre aspas duplas

  • 1

O problema é simplesmente o seguinte:

watch "psql -d postgresql://user:pass@host:5432/dbname -c 'select id,name from table where name <> 'not available' order by id;'"

esta 'not available'comparação tem que ser entre aspas simples como é para o Postgres. Mas não consigo descobrir uma maneira de escapar dessas aspas simples corretamente, pois o comando psql (quer dizer, o select...) já está entre aspas simples e também está dentro das aspas duplas exigidas pela chamada de psqlfor watch.

Como resolver isso?
Eu quase vi todos os erros de sintaxe possíveis usando \ou várias aspas duplas/simples para escapar dessas aspas simples.

bash ubuntu
  • 2 respostas
  • 625 Views
Martin Hope
s.k
Asked: 2021-09-23 03:43:33 +0800 CST

`watch` uma consulta do PostgreSQL sem exibir a string de conexão completa

  • 0

Eu gostaria de compartilhar online, com os membros da equipe, algumas modificações ao vivo em um banco de dados PostgreSQL (hospedado em um Debian Bullseye dockerizado) usando watch(se você conhece alguma outra ferramenta, de preferência pgAdmin4 , mas não consegui descobrir uma maneira de assistindo para viver modificações com ele, por favor me avise).

No momento estou fazendo da seguinte forma:

$  PGPASSWORD=***************
$ reset
$ watch -n 1.0 "psql \
-d postgresql://postgres:${PGPASSWORD}@localhost:5432/dbname \
  -c 'select id,name,customer,order,product from public.table where id in (1,2,3,4) order by (id)';"

para que a senha não seja armazenada no histórico do bash (observe o espaço em branco na frente da primeira linha) e não fique mais visível na tela após a chamada para reset(a máquina host está no Ubuntu 18.04).

Mas quando o watchcomando é iniciado, ele realmente exibe a "tradução" da string de consulta de conexão completa em texto simples na parte superior da tela, exibindo a senha do banco de dados (ou qualquer outra variável):

Every 1.0s: psql -d postgresql://postgres:mysecretpassword@localhost:5439/dbname -c (...)
...

Existe alguma chance de escondê-lo?

debian ubuntu
  • 2 respostas
  • 22 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