-
Se você quiser fazer um octal dump de todos os arquivos dentro e abaixo do diretório atual, use
find
, por exemplo:od -c 'find -type f'
Veja man find
ou google para um tutorial sobre encontrar para mais informações.
Estou lendo o livro Ambiente de programação Unix . Eu me deparei com o comando od
. O comando funciona para o conteúdo do arquivo, mas não para os diretórios quando eu o executo. No entanto, este comando parece funcionar em diretórios quando demonstrado pelos autores do livro.
Quando eu executo o seguinte comando:
od -c .
Recebo uma mensagem de erro que diz:
od: .: read error: Is a directory
0000000
Por que estou recebendo esse erro?
Se você quiser fazer um octal dump de todos os arquivos dentro e abaixo do diretório atual, use find
, por exemplo:
od -c 'find -type f'
Veja man find
ou google para um tutorial sobre encontrar para mais informações.
od -c directory
não funciona Um diretório aponta para zero, um ou vários arquivos, não é realmente um arquivo em si, portanto, não pode ser processado por od
ou hd
. A maioria dos programas do tipo Unix processa arquivos, não diretórios inteiros.
Você pode listar o conteúdo do diretório com ls
e, em seguida, usar o comando od -c
ou hd -b
para despejar cada arquivo que deseja examinar. Ao fazê-los um por um, você saberá o que cada arquivo contém.
( od -c file1 file2
enche o arquivo1 e o arquivo2 juntos e, em seguida, despeja a coisa toda. Isso faz com que ele ouça onde o primeiro termina e o próximo começa).
Você também pode escrever um pequeno script para fornecer a você, um por um, o nome de cada arquivo em um diretório e depois copiá-lo em octal ou hexadecimal. Aqui está um exemplo:
for f in *; do echo $f; od -c $f; done | less
for f in *
atribui cada arquivo no diretório atual a $ f por vez; echo $f
fornece o nome do arquivo em seu terminal antes de cada arquivo de despejo; od -c $f
produz o despejo; e done
diz para continuar com o próximo arquivo ou terminar se não houver mais. |less
diz: pegue todas as opções acima e envie a saída pelo programa "less", que permite que você analise pouco a pouco, em vez de fazer com que tudo saia do topo da tela.
Um script como este é interpretado por um programa chamado por um "shell". Quando você está digitando comandos no terminal, você está falando com um "shell". Por padrão, o Ubuntu usa o shell "bash".
Se você preferir ver a saída hexadecimal, pode usar od -t x1 filename
ou hd filename
. Use man od
ou man hd
para mais opções.
od [options] [files] od --traditional [file] [[+] offset [[+] label] ]
Descarrega os arquivos especificados para a saída padrão. O padrão é despejar formato octal, mas outros formatos podem ser especificados. Com vários arquivos, concatene-os na ordem especificada. Se nenhum arquivo for especificado ou arquivo é -, leia a partir da entrada padrão. Com o segundo formulário, usando o - opção tradicional, somente um arquivo pode ser especificado. 1
1 Fonte: diretório de comandos do Linux
Talvez isso seja mais apropriado como comentário. Mas aqui vai.
Para poder ler diretórios como arquivos, como mostrado no livro, o Ambiente de programação Unix (página 51) não é possível em versões recentes do Linux.
Como mencionado nesta resposta ( Quando os diretórios pararam de ser legíveis como arquivos? ) no Unix & amp; Sub-site do Linux, isso parece ser uma quebra do padrão POSIX, que permite que os diretórios sejam lidos como arquivos, desde que sejam abertos no modo somente leitura.
Também relevante: Como se inspeciona a informação da estrutura de diretório de um arquivo unix / linux?
Tags directory