Como eu substituo "ls -l" com o mesmo em "dir"?

2

Estou usando o servidor Ubuntu usando apenas acesso local SSH, mas quando eu emito o comando dir tudo que consigo é uma lista única de arquivos e pastas sem detalhes, mas usar dir -l me dá a lista longa mas ainda nada comparado ao uso de ls -l , que mostra as cores correspondentes às permissões, como obtenho a mesma exibição usando dir , sem ter que continuar anexando opções de linha de comando? como dir -l .

Anteriormente, usar dir mostraria a longa lista automaticamente, mas com o tempo e uma infinidade de atualizações, a exibição automática da lista longa dir não está lá agora.

    
por Micheal Saunders 20.04.2018 / 20:29

2 respostas

2

Você pode adicionar um alias a .bashrc para informar ao shell no servidor para executar ls -l sempre que você digitar dir , basicamente, apenas a seguinte linha:

alias dir='ls -l'

Salve e saia e execute source .bashrc para recarregar.

    
por mikewhatever 20.04.2018 / 20:33
1

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).

    
por Eliah Kagan 20.04.2018 / 22:24