ls
у него нет возможности сделать это, но одна из приятных особенностей unix & linux заключается в том, что длинные и неэлегичные конвейеры можно легко превратить в сценарий оболочки, функцию или псевдоним. и они, в свою очередь, могут использоваться в конвейерах, как и любая другая программа.
(ПРИМЕЧАНИЕ. Существуют некоторые проблемы с областями действия для функций и псевдонимов. Сценарии доступны любому исполняемому файлу, который может их читать и выполнять. Псевдонимы и функции доступны только в текущей оболочке, хотя .profile / .bashrc и т. Д. Вложенной оболочки могут переопределять и, таким образом, сделать их доступными. Кроме того, сценарий может быть написан на любом языке - включая bash / sh, awk, perl, python и другие - в зависимости от того, какой из них лучше подходит для работы или с которым вы наиболее знакомы)
например
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
Я добавил xargs, чтобы вы могли использовать все обычные ls
опции, напримерlsf -lrS
Поскольку он использует find
, все обычно скрытые точечные файлы будут отображаться, и все имена файлов будут иметь префикс ./ - это единственное отличие, которое вы заметите.
Вы можете исключить точечные файлы с помощью, ! -iname '.*'
но тогда вам понадобится две версии псевдонима: одна отображает точечные файлы, а другая - нет.
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
В качестве альтернативы, если это lsf
был сценарий, а не псевдоним, вы можете проанализировать параметры (возможно, с помощью getopts или / usr / bin / getopt или аналогичных) и исключить точечные файлы, если они -a
отсутствуют.
find
команда - лучший способ сделать то, что вы хотите. Для некоторых других надежных опций вы должны изучить команды, специфичные для оболочки (и это не портативные программы)!