Управление тем, какие файлы отображать


10

Недавно я изменил конфигурацию emacs, чтобы скрыть файлы резервных копий, добавив точку к имени файла. Это заставило меня задуматься - есть ли готовый способ изменить поведение в Bash, чтобы использовать список произвольных глобусов для скрытых файлов? Быстрое сканирование страниц bash и ls man ничего не показало.


Вы имеете в виду, например, lsигнорировать все файлы, которые начинаются с ignore-или все файлы, которые заканчиваются .bak?
Кевин

Да, желательно с возможностью сопоставления шаблонов, игнорируйте - *. Bak и т. Д.
Тим Бригам

Ответы:


9

lsимеет --hide=PATTERNпараметр, который выглядит так, как будто он делает то, что вы хотите, и может быть переопределен, чтобы показать их с помощью -aили -A. Если вы хотите, чтобы это происходило автоматически, добавьте псевдоним в свой ~/.bashrc(или, в вероятном случае, если для него уже есть псевдоним, добавьте его в этот псевдоним).

$ 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

Также есть параметр, --ignore=PATTERNкоторый не переопределяется параметрами -aи -A.


Спасибо за ответ, у меня только один вопрос: почему ничего ls --hide=*1 a*не скрывает, а все три списка перечисляет a-1 a-2 a-3? Я бы ожидал это, чтобы скрыть a-1?
sdaau

1
a*Расширяется за счет оболочки и включает в себя a-1. Опция скрытия не игнорирует файлы, явно названные в качестве аргументов.
Кевин

0

Вот мой псевдоним для ls:

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

Это скрывает файлы, как backup.c~и #autosave.h#. (И, как бы я ни был самоуверен, мне нравятся цвета, и это тоже так.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.