viniciusalopes
(usa Ubuntu)
Enviado em 08/02/2017 - 04:49h
msoliver escreveu:
Desconheço um comando que exiba dessa maneira, portando, montei um script...
(...)
Att.:
marcelo oliver
OPA!
É uma idéia..., mas identifiquei os seguintes pontos negativos no seu script:
- executa duas vezes o comando '
ls ' (linhas 2 e 3);
- não funcionou em arquivos com espaços no nome;
- exibe as colunas de informação desalinhadas;
- código visualmente poluído;
- impossível de entender o código sem conhecer a fundo, as expressões regulares.
SAÍDA DO SEU SCRIPT:
755 1 root root 0 Fev 7 21:07 arquivo1
ls: não é possível acessar 'arquivo2': Arquivo ou diretório não encontrado
ls: não é possível acessar 'com': Arquivo ou diretório não encontrado
ls: não é possível acessar 'espaco': Arquivo ou diretório não encontrado
ls: não é possível acessar 'no': Arquivo ou diretório não encontrado
ls: não é possível acessar 'nome': Arquivo ou diretório não encontrado
777 1 root root 0 Fev 7 21:07 arquivo3
Construí um
fork a partir da sua idéia, sem expressões regulares (porque não sei como usá-las), com variáveis legíveis, identado para facilitar a compreensão, e sem executar duas vezes o comando '
ls '.
MEU SCRIPT:
#!/bin/bash
exec 3< <(ls -l)
while read arquivo <&3; do
permissao=(${arquivo:1:3} ${arquivo:4:3} ${arquivo:7:3})
for ((x=0;x<3;x++)) do
case ${permissao[x]} in
--) permissao[$x]=0 ;;
--x) permissao[$x]=1 ;;
-w-) permissao[$x]=2 ;;
-wx) permissao[$x]=3 ;;
r--) permissao[$x]=4 ;;
r-x) permissao[$x]=5 ;;
rw-) permissao[$x]=6 ;;
rwx) permissao[$x]=7 ;;
esac
done
if [ ${arquivo:0:5} != "total" ]; then
echo "${permissao[0]}${permissao[1]}${permissao[2]} ${arquivo:11}"
fi
done
exec 3<&-
SAÍDA DO MEU SCRIPT:
755 1 root root 0 Fev 7 21:07 arquivo1
741 1 root root 0 Fev 8 01:44 arquivo2 com espaco no nome
777 1 root root 0 Fev 7 21:07 arquivo3
Além de conseguir exibir os nomes de arquivos com espaço, meu script traz as colunas alinhadas, porque não reescreve a saída do
ls ; ele só extrai a substring da string.
Achei que ficou bom e funciona, mas ainda é um código visualmente poluído e deselegante.
Sendo assim, vou optar pela sugestão do
amarildosertorio , afinal, "
BOM é POUCO para quem busca O MELHOR "!
Mesmo assim valeu pela idéia!