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
terdon
Asked: 2023-12-11 18:32:10 +0800 CST

Por que o wget funciona e o curl falha com um URL REST específico?

  • 15

Ao responder uma pergunta em outro site, me deparei com uma estranha discrepância entre curle wgetao tentar buscar neste URL: https://www.uniprot.org/uniprot/A2Z669.fasta

Por algum motivo, curlo download falha silenciosamente e wgetbusca o arquivo corretamente A2Z669.fasta:

$ ls -la
total 300
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:22 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..

$ curl https://www.uniprot.org/uniprot/A2Z669.fasta
$ ls -la
total 300
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:22 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..

Definir explicitamente um arquivo de saída não ajuda, apenas cria um arquivo vazio:

$ curl -o file "https://www.uniprot.org/uniprot/A2Z669.fasta"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

$ ls -la
total 300
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:25 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..
-rw-r--r--   1 terdon terdon      0 Dec 11 12:25 file
$ cat file
$ 

E ainda assim, wgetfunciona muito bem:

$ wget https://www.uniprot.org/uniprot/A2Z669.fasta
--2023-12-11 12:24:42--  https://www.uniprot.org/uniprot/A2Z669.fasta
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving www.uniprot.org (www.uniprot.org)... 193.62.193.81
Connecting to www.uniprot.org (www.uniprot.org)|193.62.193.81|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://rest.uniprot.org/uniprot/A2Z669.fasta [following]
--2023-12-11 12:24:42--  https://rest.uniprot.org/uniprot/A2Z669.fasta
Resolving rest.uniprot.org (rest.uniprot.org)... 193.62.193.81
Connecting to rest.uniprot.org (rest.uniprot.org)|193.62.193.81|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://rest.uniprot.org/uniprotkb/A2Z669.fasta [following]
--2023-12-11 12:24:43--  https://rest.uniprot.org/uniprotkb/A2Z669.fasta
Reusing existing connection to rest.uniprot.org:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘A2Z669.fasta’

A2Z669.fasta            [ <=>               ]     314  --.-KB/s    in 0s      

2023-12-11 12:24:43 (6.65 MB/s) - ‘A2Z669.fasta’ saved [314]

$ ls -la
total 304
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:24 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..
-rw-r--r--   1 terdon terdon    314 Dec 11 12:24 A2Z669.fasta

Também não parece ser específico para esse arquivo específico. Tentei outro URL da mesma API REST ( https://www.uniprot.org/uniprot/P05067.fasta ) e obtive o mesmo comportamento.

Estou executando isso em um sistema Arch com:

$ wget --version | head -n1
GNU Wget 1.21.4 built on linux-gnu.

$ curl --version | head -n1
curl 8.4.0 (x86_64-pc-linux-gnu) libcurl/8.4.0 OpenSSL/3.1.4 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.11.0 nghttp2/1.58.0

O que está acontecendo aqui? O que funcionaria wgetquando curlfalhasse?

curl
  • 1 respostas
  • 1870 Views
Martin Hope
justsome631
Asked: 2023-09-10 22:30:12 +0800 CST

Por que o loop for POSIX permite um `for name in ; sintaxe do` (sem palavras na lista)?

  • 15

Estou tentando entender a sintaxe do loop for nas regras gramaticais do shell POSIX :

for_clause       : For name                                      do_group
                 | For name                       sequential_sep do_group
                 | For name linebreak in          sequential_sep do_group
                 | For name linebreak in wordlist sequential_sep do_group

O último (praticamente o padrão) e os dois primeiros fazem sentido, citando posix:

Omitindo: in word... será equivalente a: in "$@"

então os dois primeiros estão apenas repetindo os argumentos do script de shell.

Eu simplesmente não entendo como um loop for que consiste em for name in; do echo $name; donefaz sentido. Achei que ainda estava apenas repetindo os argumentos do script de shell, mas criar um script pequeno não parece ser o caso. O loop for parece ser ignorado. Então, qual é o propósito dessa terceira variação?

bash
  • 2 respostas
  • 1352 Views
Martin Hope
Blockchain Office
Asked: 2023-03-09 19:09:50 +0800 CST

Use o comando 'cp' em um script Bash e exclua um diretório específico

  • 15

Preciso executar este comando em um script de shell para copiar origem > destino e excluir uma pasta.

Sem rsync, tar, find, mv, etc.

Exatamente este comando:

cp -var test/!(test2) testbkp

  1. No shell funciona
  2. Execute a partir de um script Bash sem excluir como cp -var test testbkpfunciona.

Quando tento executar a partir de um script Bash com a opção de exclusão

cp -var test/!(test2) testbkp, não funciona.

Não há nenhuma saída, nada e nenhuma mensagem de erro.

Eu verifiquei esta postagem também, mas nenhum resultado: o comando cp não será executado se for executado a partir do script de shell

Como posso executar este comando cp em um script Bash e excluir pastas?

linux
  • 1 respostas
  • 729 Views
Martin Hope
drahnoel
Asked: 2023-02-10 08:22:17 +0800 CST

Por que algo como syscalls compostos não é implementado?

  • 15

Syscalls (chamadas de sistema) causam alguma penalidade de desempenho devido ao isolamento entre o kernel e o espaço do usuário. Portanto, parece uma boa ideia reduzir as syscalls.

Então, o que eu pensei é que poderíamos agrupar syscalls em um único. Então, a ideia é colocar as syscalls e argumentos em uma estrutura de dados simples na memória. Então poderíamos introduzir uma nova syscall, que damos a essa estrutura de dados. O kernel poderia, então, disparar toda a funcionalidade em paralelo e retomar o thread se uma (ou todas) syscalls terminassem.

Acho que essa abordagem seria uma boa base para programação simultânea (E/S assíncrona) e melhoraria as soluções existentes de select/poll/epoll, permitindo a simultaneidade em qualquer syscall e reduzindo as trocas de contexto gerais.

Por que isso não é feito?

system-calls
  • 3 respostas
  • 2012 Views
Martin Hope
Garid Z.
Asked: 2023-01-02 21:01:53 +0800 CST

Como posso obter o número de bytes a serem gravados por linha para o FrameBuffer?

  • 15

Objetivo : Estou escrevendo um visualizador de imagens muito simples para framebuffer /dev/fb0(algo como fbi ).

Estado atual:

  1. Meu software obtém a resolução de pixel de /sys/class/graphics/fb0/virtual_size(como 1920,1080).
  2. E então (para cada linha) ele gravará 4 bytes (BGRA) para cada 1920 pixels de linha (total 4x1920 = 7680 bytes) para /dev/fb0. Isso funciona perfeitamente bem no meu laptop com resolução de 1920 x 1080.
  3. Mais precisamente: definir um pixel em y-row x-col => arr[y * 1920 * 4 + x * 4 + channel]onde o valor channelé 0,1,2,3(para B, G, Re A, respectivamente).

Problema :

Quando tento o mesmo software em meu laptop antigo com ( /sys/.../virtual_size-> 1366,768resolução), a imagem não é exibida corretamente (um pouco distorcida). Então eu brinquei com o valor da largura do pixel e descobri que o valor era 1376 (não 1366).

Perguntas :

  1. De onde vêm esses 10 bytes extras?
  2. E como posso obter esse valor de 10 bytes extras em máquinas diferentes (automaticamente, não ajustando manualmente)?
  3. Por que algumas máquinas precisam desses 10 bytes extras, quando outras não precisam?
display
  • 2 respostas
  • 644 Views
Martin Hope
ChennyStar
Asked: 2022-11-01 00:03:10 +0800 CST

O espaço não é usado como separador de argumentos pelo script de shell (alguém poderia explicar essa pequena diferença de arquivo?)

  • 15

VERSÃO CURTA (TL;DR)

Eu tenho 2 pequenos arquivos de uma linha, aparentemente idênticos:

$ cat f1 f2
./cconv.sh 100 EUR USD
./cconv.sh 100 EUR USD

Mas eles não são, há uma diferença de 1 byte no tamanho:

$ ls -l f1 f2
(...) 24 oct.  30 16:19 f1
(...) 23 oct.  30 16:19 f2

$ diff f1 f2
1c1
< ./cconv.sh 100 EUR USD
---
> ./cconv.sh 100 EUR USD

Eu costumava dhexdescobrir a diferença hexadecimal. Parece que :

  • f1termina comc2 a0 55 53 44 0a
  • f2termina com 20 55 53 44 0a

Alguém tem ideia do que está acontecendo aqui? Qual é a diferença e, mais importante, de onde poderia vir? Aqui está um link para um arquivo zip contendo os 2 arquivos e uma captura de tela do dhexresultado.

VERSÃO LONGA (EXPLICAÇÕES ADICIONAIS)

Os 2 arquivos são trechos do meu arquivo ~/.bash_history file.

Percebi um comportamento muito estranho das minhas conchas. Pegue o seguinte script muito básico:

#!/bin/sh
echo $#
echo "$1"
echo "$2"
echo "$3"
exit 0

Sob certas circunstâncias (mas quais ???), ele não usa o espaço como separador de argumentos:

$ ./cconv.sh 100 EUR USD
2
100
EUR USD

Mas às vezes funciona exatamente como deveria:

$ ./cconv.sh 100 EUR USD
3
100
EUR
USD

Isso me deixa louco! Passei várias horas tentando descobrir o que estava acontecendo. Aqui estão alguns testes que fiz para tentar reduzi-lo:

  • Eu trabalho em um laptop com Debian 11, Gnome 3.38. Mas acontece que também tenho uma máquina virtual com exatamente o mesmo sistema operacional (D11, G3.38), e na VM tudo funciona bem. Então, obviamente, devo ter feito algo no meu laptop bare metal para que ele se comportasse mal. Mas o que ???
  • Percebi que o problema ocorre apenas em uma sessão gráfica. Se eu abrir um tty (Ctrl+Alt+F n ), funciona bem
  • Suspeitei do meu emulador de terminal. Mas o comportamento é o mesmo em emuladores diferentes (tentei Gnome Terminal, Terminator e Konsole, mesmo resultado)
  • Suspeitei da concha. Mas o comportamento é o mesmo com Bash ou Dash
  • Desativei todas as personalizações que pude pensar:
    • Eu removi temporariamente /etc/bashrc, /etc/profilee/etc/inputrc/etc/rc.local
    • Eu removi temporariamente ~/.bashrce~/.profile~/.inputrc
    • Desativei todas as extensões do Gnome Shell
  • Eu até suspeitei do teclado e conectei um teclado USB. Mesmo resultado.

Estou realmente confuso, e não tenho a menor idéia do que está acontecendo. Eu finalmente notei essa pequena diferença entre os 2 comandos em ~/.bash_history: um vem da minha sessão do Gnome, o outro vem da minha sessão tty. Obviamente, há uma diferença, mas o que é exatamente e qual poderia ser a causa?

shell-script
  • 1 respostas
  • 807 Views
Martin Hope
alper
Asked: 2022-09-30 12:11:54 +0800 CST

Como posso desabilitar a combinação de teclas `v` em menos?

  • 15

Quando eu uso lesse pressiono vele muda para o editor atualmente definido (Emacs ou vim).

MISCELLANEOUS COMMANDS
v    Edit the current file with $VISUAL or $EDITOR.

É possível evitar esse comportamento em que não quero que o arquivo atual seja aberto no editor?

less
  • 2 respostas
  • 838 Views
Martin Hope
Brian
Asked: 2022-09-26 07:51:14 +0800 CST

Por que 'scp 10.0.0.11:/home/someuser/.*' começou a copiar de /home também?

  • 15

Estou fazendo minha primeira movimentação de arquivos de usuário de um sistema antigo para um novo. Meu objetivo é usar SCP por sua sintaxe simples de scp -r source destination. Eu tentei o seguinte comando para copiar os arquivos primeiro:

scp -r [email protected]:/home/someuser/* .

Em retrospecto, e com base em experiências anteriores, isso copiou todos os arquivos sem um .. Na minha tentativa de corrigir isso, eu fiz isso:

scp -r [email protected]:/home/someuser/.* .

significando curinga para qualquer coisa que comece com um .. Obviamente (por que estou fazendo a pergunta) não fez o que eu queria. O resultado observado foi que ele interpretou o .como subindo um nível no caminho e começou a copiar /home/*, também (eu acho) colocando os arquivos um nível acima do meu diretório de trabalho, em vez do próprio diretório de trabalho.

Minha interpretação da execução do segundo comando está correta? Eu acho que foi fácil de consertar desde que eu estava ~/backup, então um nível acima foi ~. Eu apenas rm -rf ~/someuserem cada nome de usuário que havia copiado antes interrompeu o comando. Esses someuserdiretórios deveriam estar em~/backup

Desde então, aprendi a copiar os arquivos que queria especificando apenas o diretório, não os arquivos contidos no diretório.

directory path
  • 1 respostas
  • 2654 Views
Martin Hope
Ben
Asked: 2022-07-12 03:47:12 +0800 CST

Por que existem pacotes pré-compilados nos repositórios?

  • 15

Eu amo (o jeito) como o Linux & Co. permite que os usuários instalem muitos pacotes de diferentes repositórios. AFAIK, eles também vêm com pacotes-fonte, para que você possa compilá-los sozinho.

Mas por que se preocupar em "manter/oferecer" pacotes pré-compilados, quando você pode compilá-los sozinho? Quais são as intenções de mantê-los/oferecê-los?

É possível configurar o Linux, para baixar apenas pacotes de origem e deixar o sistema operacional fazer o resto? (Assim como uma instalação de pacote pré-compilado?)

Obrigado por suas respostas.

linux repository
  • 5 respostas
  • 4226 Views
Martin Hope
Peter Petigru
Asked: 2022-07-01 04:28:16 +0800 CST

Ter senha de root para sudo é considerado uma prática recomendada ou o contrário?

  • 15

Eu configurei o meu sudoerspara que ele peça a senha do root em vez da senha do usuário toda vez que eu uso sudo. Principalmente porque acredito que faz sentido que, se você deseja executar um comando de root, saiba a senha do root.

No entanto, isso pode ser considerado um risco de segurança?

E se não for, por que essa não é a configuração padrão na maioria das distros?

Edit: Estou executando uma máquina Linux pessoal, onde sou o único usuário. A justificativa faz mais sentido neste contexto? Eu acho que isso pode não se aplicar a sistemas multiusuário.

Contexto: Minha experiência com sudosistemas onde sudoera simplesmente um "sinônimo" para su. Pode-se executar qualquer comando root simplesmente digitando sua senha de usuário, o que eu pensei que derrotou o propósito do root para começar. Daí o meu raciocínio para pedir-lhe a senha de root. Tendo dito que eu não sabia do poder de sudoers, alguns usuários mencionaram que você poderia especificar quais comandos podem ser executados sudo(deixando de fora alguns comandos restritos apenas ao usuário root). Isso eu acho que é um ótimo meio termo

sudo root
  • 7 respostas
  • 3401 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