Logo Hardware.com.br
warcanjow
warcanjow Membro Senior Registrado
163 Mensagens 1 Curtida

Combinação de opções de comandos

#1 Por warcanjow 27/12/2006 - 02:48
É tolo, mas me deixou com uma pulga atraz da orelha.
Muitos comandos têm opções que vêm acompanha das por - e -- certo?
E é comum entre opções com - haver um agrupamento de opções, por exemplo:

$ ls -l -a -t, tem o mesmo efeito que;$ ls -lta

Tava lendo num livro que opções com -- naum podem ser combinadas mas ai eu fiz um teste e obtive resultado contrario ao que rezava o livro. O teste foi o seguinte:

segundo o livro a combinação $ ls -lt --all seria valida enquanto acombinação $ ls -lalllt seria invalida para o shell.
Experimentei os dois modos e o resultado foi o mesmo, aproveitei e tentei tb $ ls -allt e recebi uma resposta valida do sistema.

Amigos, o que aconteceu foi um caso isolado? O livro esta mesmo errado? Ou isso so é possivel no Debian 3.1? Existe alguam explicação pra o que aconteceu?

Abraço!big_green.png
Jose Monteiro
Jose Monteir... General de Pijama Registrado
4.1K Mensagens 135 Curtidas
#2 Por Jose Monteir...
27/12/2006 - 07:34
Acabei de fazer a mesma experiência aqui em uma máquina com Fedora 6. Esta distro usa o bash versão 3.1.17 e o resultado é o mesmo seu, aceitando portanto as combinações de comando e contrariando o que seu livro disse. A diferença pode estar na versão do interpretador de comandos.
Caso mais alguem aí obtenha um resultado diferente, pode ver sua versão do bash usando em um terminal a combinação de teclas ctrl + x e depois ctrl + v.
Existem 10 tipos de pessoas: aquelas que entendem binário e aquelas que não entendem.
pflynn
pflynn Ubbergeek Registrado
5.5K Mensagens 122 Curtidas
#4 Por pflynn
27/12/2006 - 10:22
igor.oliveira disse:
quando você deu um ls -allt ele interpretou o l duas vezes, seria a mesma coisa que fazer ls -a -l -l -t onde você queria que ele um ls --all -l -t


Exatamente. E se o livro mencionou que a combinação ls -lallt seria inválida para o shell, ele está errado, pois não é o shell que interpreta essas opções, mas sim o programa ls, e o ls intrerpreta tudo o que começa com um - como opção "simples", e o que começa com -- como opção longa (também conhecidas como opções em estilo GNU). Portanto:

ls -allt é a mesma coisa que ls -a -l -l -t, bem diferente de ls --allt. ls --allt não existe.
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
remar
remar Membro Junior Registrado
102 Mensagens 2 Curtidas
#5 Por remar
27/12/2006 - 10:27
warcanjow disse:

segundo o livro a combinação $ ls -lt --all seria valida enquanto acombinação $ ls -lalllt seria invalida para o shell.
Experimentei os dois modos e o resultado foi o mesmo, aproveitei e tentei tb $ ls -allt e recebi uma resposta valida do sistema.


é exatamente o que o igor.oliveira disse, com certeza não foi um exemplo muito bom do livro!!stick_out_tongue.png
Uhuuu... Sony Vaio PCG-V505BX com Kubuntu Hardy Heron!!cap_feceiro.png:

Linux user #440855
pflynn
pflynn Ubbergeek Registrado
5.5K Mensagens 122 Curtidas
#9 Por pflynn
27/12/2006 - 19:06
Slacker disse:
Não seria o caso de uma versão anterior ou até mesmo outro
interpretador de comandos que não seja o bash??


Não, amigo, porque essas opções são passadas de forma transparente para o shell. O shell simplesmente as repassa para o processo, no caso, o ls, ou seja, quem le e interpreta as opções é o ls. O Bash (e nem outro shell) não sabe nada sobre elas.
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal