ls
n’a pas le choix, mais l’un des avantages de unix et linux est que les pipelines longs et inélégants peuvent facilement être transformés en script shell, en fonction ou en alias. et ceux-ci peuvent, à leur tour, être utilisés dans les pipelines comme tout autre programme.
(REMARQUE: il existe des problèmes de portée avec les fonctions et les alias. Les scripts sont disponibles pour tout exécutable capable de les lire et de les exécuter. Les alias et les fonctions ne sont disponibles que dans le shell actuel - bien que les fichiers .profile / .bashrc etc. puissent être redéfinis. En outre, un script peut être écrit dans n’importe quelle langue - y compris bash / sh, awk, perl, python, et d’autres - quelle que soit celle qui convient le mieux à votre travail ou que vous connaissez le mieux)
par exemple
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
J'ai ajouté xargs pour pouvoir utiliser toutes les ls
options habituelles , par exemplelsf -lrS
Parce qu'il utilise find
, tous les fichiers de points normalement masqués seront affichés et tous les noms de fichiers porteront le préfixe ./, c'est à peu près la seule différence que vous remarquerez.
Vous pouvez exclure les fichiers de points avec, ! -iname '.*'
mais vous devez alors avoir deux versions de l’alias - une qui affiche les fichiers de points et une autre qui ne l’a pas.
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
Alternativement, si lsf
était un script plutôt qu'un alias, vous pouvez analyser les options (peut-être avec getopts ou / usr / bin / getopt ou similaire), et exclure les fichiers de points sauf s'ils -a
étaient présents.
find
commande est la meilleure façon de faire ce que vous voulez. Pour certaines autres options fiables, vous devriez vous pencher sur les commandes spécifiques au shell (et celles-ci sont tout sauf portables)!