Existe algum comando para listar o conteúdo se passar por um diretório, mas gerar o conteúdo se for um arquivo?
Por exemplo, muitas vezes, quando estou navegando na estrutura de diretórios, vou começar a digitar no terminal algo como
ll /etc/path/ # I see a file in tab-completion that interests me, called myfile.txt
ll /etc/path/myfile.txt # I do the auto-completion to get it into the command line
less /etc/path/myfile.txt # Now I have to go back and change 'll' to 'less'
Como alternativa, se estou procurando um arquivo, começo com
less /etc/path # I see in tab-completion several files that might interest me, so I need to know more
ll /etc/path # See more info about file sizes, etc, so I can choose the file I want. Have to change 'less' to 'll'
less /etc/path/myfile.txt # Now that I know which file I want, I have to go back and change 'll' to 'less'
Isso é algo que eu acabo fazendo dezenas de vezes por dia e começa a me atrasar. Existe um comando ou script que faz o cenário mais provável para você? Por exemplo
some-program /etc/path/to/file/or/directory
Se o destino for um arquivo de texto ou um link simbólico para um arquivo de texto, 'less / etc / path / to / .....' será executado. Mas se fosse qualquer outra coisa, por exemplo diretório, arquivo binário, dispositivo de bloco, ele faria 'll / etc / path / to /......'
Claro que se ele fizer algo que você não quer, como 'less' em um link simbólico de arquivo, mas você quer ver o próprio link simbólico com 'll', você simplesmente executa 'll' manualmente.
Qualquer coisa assim existe (aposto que está lá fora, parece uma tarefa tão comum)? Ou eu estou apenas usando a linha de comando do Linux de uma maneira ineficiente e há maneiras melhores de navegar através dela ... como você faz isso? Ou eu sou realmente o único indo e voltando na linha de comando o tempo todo mudando 'menos' para 'll' e vice-versa?
Eu tentei escrever algo, mas sou um novato básico, então definitivamente não está funcionando, e bem desajeitado, mesmo que fosse. Certamente há uma maneira melhor lá fora, algum comando mágico que eu não ouvi falar?
some-program() {
if [[ $# > 1 ]]; then
echo "Only one argument supported at this time"
exit 1
fi
if [[ $# == 0 ]]; then
ELEMENT="."
else
ELEMENT="$1"
fi
if [[ -d $ELEMENT ]]; then
ls --color=auto -alF "$ELEMENT"
else
less "$ELEMENT"
fi
}