Contrôle des fichiers à afficher

10

J'ai récemment modifié ma configuration emacs pour masquer les fichiers de sauvegarde en ajoutant un point au nom du fichier. Cela m'a fait penser - existe-t-il un moyen prêt de changer le comportement dans Bash pour utiliser une liste de globes arbitraires pour quels fichiers cacher? Une analyse rapide des pages de manuel bash et ls n'a rien révélé.

Tim Brigham
la source
Vous voulez dire, par exemple, lsignorer tous les fichiers commençant par ignore-ou tous les fichiers se terminant par .bak?
Kevin
Oui, de préférence avec la possibilité de faire également des correspondances avec des caractères génériques, ignorez - *. Bak, etc.
Tim Brigham

Réponses:

9

lsa une --hide=PATTERNoption qui semble faire ce que vous voulez et peut être remplacée pour les afficher avec -aou -A. Si vous souhaitez que cela se produise automatiquement, ajoutez un alias dans votre ~/.bashrc(ou, dans le cas probable où il existe déjà un alias pour cela, ajoutez-le à cet alias).

$ touch {a,b,c}-{1,2,3}
$ ls
a-1  a-2  a-3  b-1  b-2  b-3  c-1  c-2  c-3
$ ls --hide=a*
b-1  b-2  b-3  c-1  c-2  c-3
$ ls --hide=*1
a-2  a-3  b-2  b-3  c-2  c-3
$ ls --hide=a*1
a-2  a-3  b-1  b-2  b-3  c-1  c-2  c-3
$ ls --hide=a*1 -A
a-1  a-2  a-3  b-1  b-2  b-3  c-1  c-2  c-3

Il y a aussi un --ignore=PATTERNqui n'est pas remplacé par les options -aet -A.

Kevin
la source
Merci pour la réponse, je n'ai qu'une question: pourquoi ne ls --hide=*1 a*cache-t-il rien, mais répertorie toujours les trois a-1 a-2 a-3? Je me serais attendu à ce qu'il cache le a-1?
sdaau
1
Le a*est développé par le shell et inclut a-1. L'option masquer n'ignore pas les fichiers nommés explicitement comme arguments.
Kevin
0

Voici mon alias pour ls:

alias ls="ls --color=auto --hide='*~' --hide='#*#'"

Cela cache des fichiers comme backup.c~et #autosave.h#. (Et, opiniâtre que je suis, j'aime les couleurs, donc ça fait ça aussi.)

Jackson
la source