J'essaie de créer un alias dans bash. Ce que je veux faire est la carte ls -la
dels -la | more
Voici ce que j'ai essayé dans mon fichier .bashrc:
alias 'ls -la'='ls -la | more'
Cependant, cela ne fonctionne pas car (je suppose) il y a des espaces dans le nom d'alias. Y a-t-il un moyen de contourner ce problème?
alias lsm='ls -la | more'
Réponses:
La documentation de Bash indique "Dans presque tous les cas, les fonctions du shell sont préférées aux alias". Voici une fonction shell qui remplace la
ls
sortie et la dirige versmore
la sortie si l'argument est constitué de (uniquement)-la
.En une ligne:
Tuyau automatiquement la sortie:
la source
command
empêche l' appel de la fonction de manière récursive.De la page de manuel d'alias :
Ainsi, seul le premier mot est vérifié pour les correspondances d'alias, ce qui rend impossible les alias multi-mots. Vous pourrez peut-être écrire un script shell qui vérifie les arguments et appelle votre commande s'ils concordent et sinon appelle la normale
ls
(Voir la réponse de @Dennis Williamson )la source
Une approche légèrement améliorée tirée de la réponse de Dennis:
Ou le one-liner:
Cela permet d’ajouter d’autres options / arguments après la commande, si nécessaire, par exemple
ls -la -h
la source
ls -lat
être exclu de ce traitement? J'aurais besoin de mettre un cas pour le gérer au-dessus de l'-la*
entrée, oui?Vous pouvez toujours invoquer cet alias, mais vous avez besoin d'une citation pour que l'espace fasse partie du mot de commande. Alors
"ls -la" -p pattern
passera l'-p pattern
option àmore
, pasls
.la source