Se você for tornar dir
um alias, sugiro alias dir='dir --color=auto -l'
. Esse é provavelmente o comportamento que você está procurando. Isso tem o benefício de manter os outros aspectos de como dir
é diferente de ls
e de não depender ou ser afetado por qualquer ls
alias que você possa ter.
Você pode definir aliases e funções de shell com o mesmo nome que o nome de um comando externo (como ls
e dir
), e eles podem ser definidos para chamar esse comando externo com opções adicionais passadas para ele. Isso é o que o alias sugerido acima faz. Então, talvez você tenha usado um dir
alias (ou função shell) que executou dir -l
.
Quando isso não é No entanto, dir
funciona como ls -Cb
. Os comandos ls
e dir
são diferentes. A finalidade do comando dir
é ser um comando como ls
cujo comportamento não é afetado pelo fato de estar ou não sendo executado em um terminal. Por esse motivo, você pode considerar não fazer dir
um alias, e simplesmente usar ls
ou ll
. ll
é um alias comumente definido para ls -l
.
Embora a expansão de alias não seja determinada pelo fato de a saída ser ou não um terminal, ela é determinada principalmente se o shell no qual você executa o comando é interativo. (Existem maneiras de substituir isso, mas geralmente você não deseja.) Além disso, --color=auto
é colorido apenas quando o dispositivo de saída é um terminal, para que você não obtenha normalmente códigos de cor indesejados se você (por exemplo) redirecionar a saída para um arquivo.
No entanto, se você quiser alterar o que acontece quando você executa dir
, o motivo pelo qual sugiro que seja um alias de dir --color=auto -l
é que isso adiciona as opções que você está solicitando , embora ainda esteja usando implicitamente -C
e -b
. A presença de -C
não é importante, pois é substituída por -l
. -C
significa exibir em colunas e -l
significa exibir como uma lista detalhada. Ele não pode fazer as duas coisas, então faz o que a opção último que você passa diz para ele fazer. Mas -b
ainda é significativo; faz com que caracteres estranhos em nomes de arquivos sejam escapados, de modo que você normalmente pode copiar nomes de arquivos mostrados em comandos de terminal sem modificação.
Claro, você poderia usar alias dir='ls -bl --color=auto'
. Isso vai conseguir o mesmo efeito (você não precisa incluir -C
, já que ele é substituído por -l
, como explicado acima). Ou pelo menos teria o mesmo efeito se você não tivesse ls
alias. A expansão de alias não é totalmente recursiva, e é por isso que você pode alias ls
para um comando que começa com ls
(ou dir
para um comando que começa com dir
). Mas a expansão de alias continua, no entanto, até que o resultado não seja um alias ou que uma expansão posterior produza um ciclo recursivo. A definição do dir
alias não em termos de ls
libera você de efeitos inesperados resultantes de qualquer ls
que tenha alias.
Quanto a onde colocar a definição de alias , você certamente pode colocá-la diretamente no arquivo .bashrc
que reside em seu diretório home, como músque que sugerir . Nesse caso, você provavelmente terá quase todas as definições de alias para ls
nesse arquivo, e poderá colocar seu dir
alias por perto. Seu arquivo .bashrc
pode até ter aliases comentados (com #
) que você pode remover o comentário e usar.
No entanto, sugiro colocar novas definições de alias - as que você mesmo escreve - em .bash_aliases
. Os arquivos .bashrc
padrão no Ubuntu irão fornecer esse arquivo se ele existir. Ou seja, .bashrc
geralmente contém:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Se por algum motivo o arquivo .bashrc
não tiver isso, você poderá adicioná-lo (ou apenas as linhas que não começarem com #
, se você não quiser reproduzir os comentários).