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

Perguntas[directory](unix)

Martin Hope
the_eraser
Asked: 2024-07-25 00:27:38 +0800 CST

Bash `cd -L` vs. `cd -P` vs. Descrição do manual de referência do Bash

  • 6

Premissa

Eu li o que está listado na bibliografia sobre cd, pwd, set -P.

Por padrão, ou quando a -Lopção é fornecida, os links simbólicos no diretório são resolvidos após cdprocessar uma instância de ' ..' no diretório. (ref. Manual de referência do Bash - seção " 4 comandos integrados do Shell" - cdparágrafo )

Se ' ..' aparecer em directory , ele será processado removendo o componente do nome do caminho imediatamente anterior, de volta a uma barra ou ao início de directory . (ibid.)

Minha versão do Bash é

GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)

Problema

Para testar as coisas, tenho o seguinte esquema de arquivos em meu diretório de trabalho atual que é a raiz do meu experimento ( dir111é um link simbólico para dir010).

dir010/
dir020/
dir110/dir111 -> ../dir010
my_dir="$PWD"
cd dir110/dir111              # 1
cd ..                         # 2
cd dir111                     # 3
cd ../dir020                  # 4
cd "$my_dir"                  # 5
cd dir110/dir111/../dir020    # 6
cd -                          # 7
cd dir110/dir111/../../dir020 # 8
  1. define o diretório de trabalho atual como "$my_dir"/dir110/dir111, conforme esperado[^1].
  2. define o diretório de trabalho atual como "$my_dir"/dir110, conforme esperado[^1].
  3. de volta para 1.
  4. define o diretório de trabalho atual "$my_dir"/dir020como inesperado . Eu esperaria cdfalhar em "$my_dir"/dir110/dir020(veja a explicação abaixo).
  5. de volta à raiz do meu experimento.
  6. o mesmo que 4 .
  7. de volta à raiz do meu experimento.
  8. define o diretório de trabalho atual como "$my_dir"/dir020, conforme esperado[^1], mas em contraste com 6.

A linha 4 deve falhar pelo motivo do parágrafo seguinte.

O manual de referência e a página de manual (veja a citação na Premissa) dizem que ..make cdapenas remove o componente do nome do caminho anterior, em vez de olhar para a ..entrada do inode. Portanto, o diretório pai "$my_dir/dir110/dir111visto por cd(no comportamento padrão) é "$my_dir/dir110, que não contém dir020.

Achei que esse comportamento poderia ser uma exceção causada por ..ser o prefixo do «dirname»fornecido to cd «dirname». No entanto, usar ..como infixo (linha 6) contrasta com isso.

cdestá se comportando como se cd -Ptivesse sido executado (ou set -Pcomando (ou similar) emitido antes), ou seja, não seguindo links simbólicos. Com cd -P, em 1., o diretório de trabalho atual seria definido como $my_dir/dir010.

set -odiga-me

[omissis]
physical        off
pipefail        off
posix           off
[omissis]

A minha interpretação (e de outras pessoas como eu em outras perguntas postadas) do manual de referência está correta? o que estou perdendo? Como o comportamento de pode cdser descrito?

[^1]: O comportamento padrão cdé seguir links simbólicos

Bibliografia

  • Página de manual do Bash, segundo. "COMANDOS CONSTRUÍDOS DA SHELL"
  • Manual de referência do Bash, seção. "4 comandos internos do Shell"
  • Alterando o diretório pai (../) com links simbólicos
  • Resolução do caminho dependendo do pwd (diretórios com links simbólicos)
  • Como faço para subir e descer novamente com links simbólicos no bash?
directory
  • 1 respostas
  • 42 Views
Martin Hope
Boltzmann
Asked: 2024-06-24 04:15:33 +0800 CST

MacOS: tenho um diretório inicial dentro do meu diretório inicial

  • 4

executando ls

Nunca vi meu diretório inicial em meu diretório inicial até recentemente. É algo com que preciso me preocupar? Não sei se isso é algo problemático.

directory
  • 1 respostas
  • 32 Views
Martin Hope
Manuel Jordan
Asked: 2024-03-13 08:56:58 +0800 CST

Como funciona exatamente a opção d do comando ls? [duplicado]

  • 8
Esta pergunta já tem respostas aqui :
Qual é o significado de ls -d? (4 respostas)
Fechado ontem .

Tendo a seguinte estrutura simples:

project
 main
  aaa
  aaa 
 test
  ddd
  ddd 
 pom.xml  <--- unique regular file

Se o diretório atual for projecte se for executado o lscomando aparecerá

main  pom.xml  test

Até aqui está tudo bem. Agora, de acordo com man lsa dopção existe:

   -d, --directory

          list directories themselves, not their contents

Assim quando é executado o ls -dcomando aparece:

.

Por que? Para ser honesto, eu esperava apenas os diretórios e não os arquivos normais. Como

main test

Pergunta

  • Como funciona exatamente a dopção do comando?ls

Pergunta extra :

  • O que seu conteúdo não significa exatamente? É uma questão do conteúdo interno de cada diretório?
directory
  • 3 respostas
  • 211 Views
Martin Hope
Ana Nimbus
Asked: 2023-11-25 00:47:51 +0800 CST

Sobre quais subdiretórios do diretório inicial de um usuário o usuário tem controle total?

  • 2

Quais subdiretórios um usuário pode criar em seu diretório inicial ~com a intenção (e expectativa razoável de que a intenção será honrada) de que apenas esse usuário tenha privilégios de gravação? Por exemplo, talvez um novo usuário, ignorante do Vim , crie ~/.vime comece a colocar arquivos lá. Mais tarde, o novo usuário fica triste porque o vimprograma também deseja usar esse diretório.

directory
  • 1 respostas
  • 55 Views
Martin Hope
Estatistics
Asked: 2023-10-25 21:13:13 +0800 CST

Como encontrar diretórios ausentes entre duas estruturas de disco?

  • 6

Como encontrar diretórios ausentes entre duas estruturas de disco?

  • Digamos que o Disco A tenha dir A/, B/, C/, D/. (cópia mais recente)
  • Digamos que o disco B tenha dir A/, B/, D/, E/. (cópia mais antiga)

Quero descobrir quais diretórios estão faltando na cópia mais recente em comparação com a cópia mais antiga.

Resultados: "Dir E".

Como posso fazer isso? Não quero nenhum relatório sobre arquivos.

Isso pode criar apenas os diretórios ausentes de um destino específico:

find -type d -exec mkdir -p "/mnt/pics/Albums/{}" \; 

ATUALIZAÇÃO: O artigo sugerido na minha pergunta era sobre conteúdo e não sobre pastas. Além disso, não foi apresentada uma solução clara como resposta de "diff -rq path1 path2".

directory
  • 3 respostas
  • 427 Views
Martin Hope
Loop1
Asked: 2023-10-16 08:25:19 +0800 CST

Altere o horário da última modificação das subpastas para o arquivo mais antigo dentro

  • 6

Olá, gostaria de saber como verificar e alterar a data da última modificação de todas as subpastas com base no arquivo mais antigo de cada subpasta.

Exemplo de estrutura de pastas do Ubuntu:

home/incoming/media/Something.something.1234/

ou

/Soemthing Soemthing 1234/

O que significa que existem pastas com pontos e sem pontos. O mesmo vale para arquivos, alguns com pontos e outros sem.

Os arquivos são principalmente arquivos de mídia MKV, talvez alguns mp4.

Além disso, o script também deve pular todos os arquivos mkv ou mp4 na raiz da pasta de mídia porque eles não possuem subpastas.

directory
  • 1 respostas
  • 35 Views
Martin Hope
S. N.
Asked: 2023-07-28 20:24:22 +0800 CST

Quais diretórios de primeiro nível no Linux devem pertencer ao usuário?

  • 5

Hoje, notei acidentalmente que os seguintes diretórios do /são de minha propriedade, em vez do root:

  • /lar
  • /perdido+encontrado
  • /meios de comunicação
  • /mnt
  • /optar
  • /foto
  • /srv
  • /swapfile
  • /var

Não tenho ideia de como isso pode acontecer (parece estúpido, eu sei). Parece lógico que alguns deles, com a exceção óbvia de, /homesejam de propriedade do root. Se sim, quais são?

Por outro lado, o sistema (Lubuntu 20.04 x64) roda normalmente. O mesmo acontece com o software instalado, não enfrento nenhum problema no momento. Pode ser o caso quando este ditado «Se não está quebrado, não conserte» deve ser lembrado?

directory
  • 1 respostas
  • 36 Views
Martin Hope
McGooks
Asked: 2023-07-10 20:18:55 +0800 CST

Itere subdiretórios e arquivos zip com o mesmo prefixo e remova os arquivos originais após a compactação

  • 5

Eu tenho o código atual:

for fname in *.*; do
    prefix=${fname%.*}
    [ ! -f "$fname" ] || [ -f "$prefix.zip" ] && continue
    zip "$prefix" "$prefix".*
done

Isso faz principalmente o que eu quero, mas tenho que excluir os arquivos originais. Existe uma modificação que pode ser feita para remover os arquivos originais após a compactação? Se possível, como posso executar isso em um diretório ou em seus subdiretórios?

A estrutura atual do arquivo é a seguinte:

-rootDir
|- Dir1
 |- file1.jpg
 |- file1.png
 |- file1.mp3
|- Dir2
 |- file2.jpg
 |- file2.png
 |- file2.mp3

Estou buscando a estrutura abaixo:

-rootDir
|- Dir1
 |- file1.zip
|- Dir2
 |- file2.zip

Conforme mencionado, o código acima funciona bem quando executado em um único diretório.

Agora tenho 300 subdiretórios e seria de grande ajuda se eu pudesse obter uma versão modificada do código acima para executar no nível do diretório raiz, bem como organizar os arquivos restantes.

directory
  • 1 respostas
  • 22 Views
Martin Hope
Tim50001
Asked: 2022-12-27 07:36:38 +0800 CST

O curinga não funciona em um "for f in ..." para um diretório (e partição) diferente

  • 5
testingfilesizecheck.sh: line 6: /media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/*

estou usando o comandofor f in "/media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/*"

Se eu for muito específico sobre isso e disser "/media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/ABRA.bin"que funcionará.

Sou novo no linux (Ubuntu) e no bash e estou lutando para usar o google-fu para diagnosticar isso. Cada site de exemplo que posso encontrar sugere que o que estou fazendo com um curinga deve funcionar, mas eles mantêm seus exemplos no mesmo diretório em que o script terminal / bash está trabalhando ativamente.

Antes de fazer esta postagem, criei uma solução alternativa usando ls que parecia muito indireta porque eu faço minha lista de arquivos na pasta e meio que vou "à mão" em vez de usar o loop for como um comando sucinto. Portanto, estou procurando uma resposta academicamente por que o curinga não se expande neste caso.

Editar: tentei a sugestão de colocar o asterisco fora das aspas duplas. Mas também não funcionou. Aqui está o que eu tenho ATÉ AGORA AS RESPOSTAS PÓS:

Este é o copiar e colar do meu terminal depois de inserir uma linha "bash testingfilesizecheck.sh" e pressionar enter:

doctor@doctor-X570-AORUS-ELITE:~/Documents$ bash testingfilesizecheck.sh
/media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/*
testingfilesizecheck.sh: line 24: /media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/*: No such file or directory

A linha 24 vem comentando todas as outras tentativas que fiz no script testinfilesizecheck.sh. Aqui está o script menos as linhas comentadas.

#!/bin/bash

for f in "/media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/"*
    do 
    echo "$f"
    actualsize=$(wc -c < "$f")
done
    echo $actualsize

Novamente, há um arquivo em /media/doctor/123A123E1A123456/Users/Tim/Downloads/PokemonRed/Binary House/Final Structure Directory/Category/ABRA.bin

Mas o curinga não está se expandindo para aceitar ABRA.bin. Em ambas as variações é apenas um asterisco literal. Eu pensei, sim, o asterisco como uma variável faz sentido que não possa estar em uma string entre aspas com base em minha compreensão rudimentar de outras linguagens de programação. Mas é claro que não funciona para mim.

directory
  • 2 respostas
  • 55 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

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