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
jrw32982
Asked: 2024-04-27 00:23:20 +0800 CST

Shebang pode fazer referência a um script no Linux

  • 18

Sempre ouvi dizer que o alvo de uma linha shebang (por exemplo #!/bin/bash) deve ser um executável binário, não um script. E isso ainda é verdade para muitos sistemas operacionais (por exemplo, MacOS). Mas fiquei surpreso ao ver que isso não é verdade no Linux, onde até 4 níveis de scripts podem ser usados, onde o quarto script faz referência a um executável binário em sua linha shebang. No entanto, se forem usados ​​5 níveis de scripts, o programa falhará com o erro Too many levels of symbolic links.

Consulte o artigo do LWN "Como os programas são executados" e o código a seguir, que não foi mostrado nesse artigo.

$ cat wrapper2
#!./wrapper

Quando ocorreu essa mudança (assumindo que em algum momento ela não foi permitida)?

linux
  • 1 respostas
  • 1156 Views
Martin Hope
rhuanpk
Asked: 2023-11-16 19:08:33 +0800 CST

O usuário normal é capaz de modificar um arquivo de propriedade do root

  • 18

Se o arquivo for um arquivo de texto simples criado pelo root com:

echo 'foo' > ./file.txt

O seu ls -lé:

-rw-r--r-- root root ./file.txt

Mas como um usuário comum, posso mudar isso salvando o vim com :w!ou com um comando sed e quando isso acontece o usuário e grupo que possui este arquivo é alterado para:

-rw-r--r-- user user ./file.txt

Depois percebi que quando removido outros leram permissão com chmod o-r ./file.txtnão consigo mais fazer as alterações, mas quando restaurado com chmod o+r ./file.txtconsigo novamente.

O que esta acontecendo aqui? Por que a permissão de leitura "outros" me permite alterar um arquivo de propriedade do root e também alterar a propriedade do usuário e do grupo?

Por que isso está acontecendo?

PS: Eu uso o Debian SID.

files
  • 2 respostas
  • 631 Views
Martin Hope
Ed Morton
Asked: 2023-07-04 01:39:25 +0800 CST

O `head` pode ler/consumir mais linhas de entrada do que as saídas?

  • 18

Dados os 3 scripts a seguir:

  1. printf 'a\nb\nc\n' > file && { head -n 1; cat; } < file
  2. printf 'a\nb\nc\n' | { head -n 1; cat; }
  3. { head -n 1; cat; } < <(printf 'a\nb\nc\n')

Eu esperaria que a saída de cada um fosse:

a
b
c

mas para alguns deles, em alguns sistemas, esse não é o caso. Por exemplo, no cygwin:

$ printf 'a\nb\nc\n' > file && { head -n 1; cat; } < file
a
b
c

$ printf 'a\nb\nc\n' | { head -n 1; cat; }
a

$ { head -n 1; cat; } < <(printf 'a\nb\nc\n')
a

O que está causando a saída diferente desses scripts?


Informações adicionais - aparentemente, isso não é apenas um headproblema:

$ printf 'a\nb\nc\n' | { sed '1q'; cat; }
a
$ printf 'a\nb\nc\n' | { awk '1;{exit}'; cat; }
a

$ { sed '1q'; cat; } < <(printf 'a\nb\nc\n')
a
$ { awk '1;{exit}'; cat; } < <(printf 'a\nb\nc\n')
a

Qual seria uma maneira POSIX robusta no shell (ou seja, sem apenas invocar awk ou similar uma vez para fazer tudo) para ler um certo número de linhas da entrada e deixar o restante para um comando diferente, independentemente de a entrada vir de um canal ou um arquivo?


Esta pergunta foi inspirada por comentários em uma resposta para classificar todo o .csv com base no valor de uma determinada coluna .

bash
  • 1 respostas
  • 724 Views
Martin Hope
Weijun Zhou
Asked: 2023-04-01 16:53:49 +0800 CST

Por que os espaços não são necessários em torno de alguns operadores de comparação de strings em expressões condicionais no bash?

  • 18

Achei algo surpreendente quando estou escrevendo para algum script bash hoje. Eu o fixei neste exemplo mínimo.

[[ a>b ]]; echo $?

Com base no meu entendimento, como não há espaços ao redor do >, isso deve testar se a string a>bnão está vazia e deve retornar um código de erro de 0. No entanto, o comando acima ecoa 1em ambas as versões do bash que testei (detalhes abaixo).

Eu também testei usando o antigo testcomando "good",

[ a>b ]; echo $?echos 0(testa se a string anão está vazia e cria um arquivo vazio bno meu diretório de trabalho atual, aparentemente >bé tratado como um redirecionamento, o que é compreensível).

Então eu tentei mais algumas outras coisas

  • [[ b>a ]]; echo $?ecos 0e nenhum arquivo é criado.
  • [[ b<a ]]; echo $?ecos 1e nenhum arquivo é criado.
  • [[ a<b ]]; echo $?ecos 0e nenhum arquivo é criado.
  • [ b>a ]; echo $?echos 0e cria um arquivo vazio a.
  • [ b<a ]; echo $?relata um erro de arquivo ausente ae ecos 1devido a esse erro.
  • [ a<b ]; echo $?relata um erro de arquivo ausente be ecos 1devido a esse erro.
  • [[ a=b ]]; echo $?echos 0porque está testando se a string a=bnão está vazia como eu esperava.
  • [ a=b ]; echo $?ecos 0pelo mesmo motivo.
  • [[ a==b ]]; echo $?ecos 0pelo mesmo motivo.
  • [ a==b ]; echo $?ecos 0pelo mesmo motivo.
  • [[ a!=a ]]; echo $?e [ a!=a ]; echo $?ambos ecoam 0(esperado)

Portanto, parece que apenas os espaços ao redor de <e >podem ser omitidos em uma expressão condicional, mas não =ou ==ou !=se a intenção for fazer comparação de strings. Mas por que ele é projetado dessa maneira? Também pode ser minha omissão, mas isso não parece estar documentado em nenhum lugar do manual do bash.

Meu problema original é tentar usar >sem escape como parte de um padrão em uma expressão condicional ( [[ ... ]]). Originalmente, pensei que, desde que não envolvesse o >com espaços, poderia usá-lo sem escape sem problemas, porque não faz sentido (e acaba sendo impossível após alguns testes) fazer redirecionamentos dentro de um condicional expressão também.

No entanto, verifica-se que não é o caso. É claro que a solução simples é apenas escapar disso >e escrever \>, mas não entendo por que isso é necessário.

Aqui estão as versões do bash que usei para testar,

GNU bash, version 5.2.2(1)-release (aarch64-unknown-linux-android)

e

GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)

Meus experimentos são realizados sob env -i bash --norc --noprofile.

bash
  • 1 respostas
  • 713 Views
Martin Hope
Ciprian Tomoiagă
Asked: 2023-01-10 00:07:40 +0800 CST

Por que 'ls' só exibe o conteúdo quando estou em um determinado diretório?

  • 18

Estou enfrentando um comportamento muito confuso que lsnão consigo procurar. Ele mostra que há conteúdo em um diretório, mas apenas quando estou no diretório de onde eles foram criados.

Deixe-me te mostrar:

ciprian Documents $ pwd
/Users/ciprian/Documents

ciprian Documents $ ls ../Downloads/rss22/
22rss-USB/

ciprian Documents $ ls ../Downloads/rss22/22rss-USB/
HTML/

ciprian Documents $ cd ../Downloads/rss22

ciprian rss22 $ ls

ciprian rss22 $ ls 22rss-USB/
gls: cannot access '22rss-USB/': No such file or directory

Depois que eu cded to ../Downloads/rss22, seu conteúdo é exibido como vazio. Também é mostrado vazio if I cd ~/Desktope then I ls ../Downloads/rss22/, como no primeiro caso aqui.

Para mim, isso indica que pode haver uma pasta chamada ../Downloads/rss22 dentro de Documents . Mas não consigo descobrir como exibi-lo. ls -a ~/Documentsnão mostra nada relacionado a essas pastas.

O que está acontecendo?

Os arquivos foram criados tentando uma extração parcial de um arquivo:unzip 22rss-USB.zip "22rss-USB/HTML/**/*" -d ../Downloads/rss22/

Para referência, estou no macOS , embora não ache isso relevante (é um Unix, certo?). Estou usando o Bash 5.1.16 (alterado do zsh padrão).

Saída de type pwd: pwd é um shell embutido.

Acontece que, se eu fizer cd -P ../Downloads/igarss22/isso, ele mostrará o conteúdo que eu espero. Onde posso ver mais sobre isso? man cdnão mostra nada sobre -P.

Agora, depoiscd -P ../Downloads/igarss22/

ciprian Documents $ cd -P ../Downloads/igarss22

ciprian igarss22 $ pwd
/Users/ciprian/Library/CloudStorage/OneDrive/Downloads/igarss22

Certo. Então eu esqueci isso; my ~/Documentsé um link simbólico para uma pasta no meu OneDrive:

$ ll ~/ | grep Doc
lrwxr-xr-x    1 ciprian   38 May 19  2022 Documents -> /Users/ciprian/OneDrive/Documents

Que, devido a alguma mágica e mudanças no macOS v12 (Monterey), na verdade vive sob /Users/ciprian/Library/CloudStorage/OneDrive.

Eu ainda não tenho certeza do que exatamente está acontecendo

ls
  • 1 respostas
  • 1655 Views
Martin Hope
catwith
Asked: 2022-07-08 04:21:24 +0800 CST

Por que `echo 'hi' | tee > abc` cria vários arquivos, enquanto `echo 'hi' > abc` não?

  • 18

Meu ambiente: zsh, macOS


Comando em causa:

  1. echo 'hi' | tee > a b c
  2. echo 'hi' > a b c
  • O comando 1 cria arquivos nomeados ae bcom cconteúdo hi.
  • O comando 2 cria um arquivo chamado acom conteúdo hi b c.

AFAIK, apenas o uso do Comando 1 sem > está documentado na página de manual de tee:

echo 'hi' | tee a b c

Eu quero alguma ajuda para entender por que adicionar >o código acima (ou seja, Comando 1) ainda cria vários arquivos, enquanto o Comando 2 cria apenas um arquivo.

zsh io-redirection
  • 3 respostas
  • 2138 Views
Martin Hope
mikeb
Asked: 2018-02-15 08:46:23 +0800 CST

Qual é a opção .ssh/config correspondente para ssh -N

  • 19

Quero configurar um alias no meu arquivo de configuração que tenha o mesmo resultado deste comando:

ssh -N devdb -L 1234:127.0.0.1:1234

Minha entrada .ssh/config para devdb:

Host devdb
User someuser
HostName the_hostname
LocalForward 1234 127.0.0.1:1234

O que coloco na configuração acima para não iniciar um shell?

ssh ssh-config
  • 3 respostas
  • 6310 Views
Martin Hope
Rufus
Asked: 2018-01-14 11:19:45 +0800 CST

Por que preciso fazer resize2fs após lvextend?

  • 19

Para redimensionar a partição LVM2, é necessário executar os 2 comandos a seguir:

# lvextend -L+1G /dev/myvg/homevol
# resize2fs /dev/myvg/homevol

No entanto, quando executo lvextend, vejo que as alterações já estão aplicadas à partição (conforme mostrado em Gnome Disks). Então, por que eu ainda preciso fazer resize2fs?

partition resize2fs
  • 4 respostas
  • 43081 Views
Martin Hope
shirish
Asked: 2018-01-04 13:13:48 +0800 CST

É possível continuar filmes de onde sai em mpv como pode ser feito em vlc?

  • 19

Não sei como vlc é capaz de fazer isso; Eu acho que leva uma espécie de carimbo de tempo de um filme e o coloca no cache ou em algum lugar assim. É assim que funciona no vlc -

uma. Você vê um arquivo de mídia, diz que consiste em 1,5 horas, b. Em algum momento, digamos, após 15 a 30 minutos ou sempre que você sentir que parou porque tinha algum outro trabalho, recebeu uma ligação ou qualquer coisa que interrompeu sua visualização.

c. Depois de algum tempo, você inicia o arquivo de mídia novamente. Em vlc no canto superior direito daria um pequeno botão dizendo continuar de onde você parou.

d. Se você selecionar esse botão/opção, ele começará a reproduzir o arquivo de mídia de onde você parou.

Também vi o uso de 2 a 3 arquivos de mídia em sucessão e, mesmo assim, ele se lembra da posição.

É possível ter funcionalidade semelhante no mpv? Existe uma maneira de isso já funcionar ou seria uma solicitação de recurso que eu precisaria fazer no mplayer github?

vlc mpv
  • 2 respostas
  • 13882 Views
Martin Hope
a tired guy
Asked: 2017-12-19 20:23:59 +0800 CST

Qual é o propósito de /usr/lib/.build-id/dir?

  • 19

Depois de um novo inst de f27 (netinstall), notei que muitos pacotes colocam arquivos minúsculos no /usr/lib/.build-id/diretório. A princípio, pensei que de alguma forma havia ativado algum modo obscuro de "depuração" para dnf, mas mesmo

$ dnf download httpd

busca um rpm com /usr/lib/.build-id/*arquivos nele.

Não me lembro disso nas versões anteriores do Fedora.

fedora rpm
  • 1 respostas
  • 8813 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