tipo ls comando [duplicado]

2
    

Esta pergunta já tem uma resposta aqui:

    

então eu estudei em algum lugar sobre o comando type e vim saber que o comando type pode fornecer a localização do comando usado com ele, mais especificamente a localização do arquivo executável associado ao comando, então eu tentei o type comando com alguns comandos básicos como ps , wc , date etc e tenho seus locais, mas quando eu usei type com ls eu tenho algo diferente

ls is aliased to 'ls --color=auto'

mas eu estava esperando por um local.

    
por Noshiii 23.09.2018 / 20:57

3 respostas

3

O comando type faz mais do que apenas fornecer a localização de um executável. Deixe-me citar a saída de help type :

Display information about command type.

For each NAME, indicate how it would be interpreted if used as command name.

Ou seja, o comando type informa, para o argumento fornecido, como ele seria interpretado pelo shell se usado como um comando. Para executáveis em seu caminho, ele lhe dará a localização deles. Mas existem outros tipos de comandos que não são executáveis. Entre esses são bash builtins. Por exemplo, o comando cd é um bash embutido:

$ type cd
cd is a shell builtin

Em outras palavras, não há nenhum executável chamado cd . Pelo contrário, é um comando diretamente interpretado pelo shell; é uma parte da linguagem da shell. Da mesma forma, o comando type é um bash embutido:

$ type type
type is a shell builtin

Outro tipo de comandos são aliases. Os aliases podem ser usados como atalhos convenientes personalizáveis pelo usuário para comandos que, de outra forma, seriam longos para serem digitados. Você pode digitar alias para ver os aliases atualmente definidos no seu shell. Para mim, dá:

$ alias 
alias ll='ls -la'
alias ls='ls --color=auto'

(e mais alguns que eu mesmo configurei, mas eu ignorei-os pela simplicidade)

Portanto, se eu digitar type ls , recebo as informações de que ls é um alias, assim como no seu caso:

$ type ls
ls is aliased to 'ls --color=auto'

Isso ocorre simplesmente porque sua distribuição definiu esse alias em algum lugar na configuração do shell de seu usuário (por exemplo, em .bashrc se você estiver usando o bash). A razão é que, desta forma, a saída do comando ls é sempre colorida (não é por padrão). Se você quiser descobrir o que ls significaria se esse alias não estivesse lá, você pode simplesmente unalias ls em sua sessão de shell atual e, em seguida, usar type ls :

$ unalias ls
$ type ls
ls is hashed (/bin/ls)
    
por 23.09.2018 / 21:45
0

Um monte de shell de comando tem um alias para ls set. Você pode verificar em seu diretório home o arquivo rc do shell que você usa. (para csh isso seria .cshrc). O alias provavelmente está lá. Se você remover a entrada, efetue logout e faça login novamente. Em seguida, digite para fornecer as informações que você deseja.

    
por 23.09.2018 / 21:22
0

"pode fornecer a localização do comando usado com ele, mais especificamente a localização do arquivo executável associado ao comando"

Você também pode usar os comandos which e whereis para encontrar o local dos executáveis, se isso ajudar você.

robert@pip2:/tmp$ which ls
/bin/ls

robert@pip2:/tmp$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
    
por 23.09.2018 / 21:53