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 або подібних) і виключити dotfiles, якщо -a
немає.
find
команда - це найкращий спосіб робити те, що ти хочеш. Для деяких надійних інших параметрів вам слід ознайомитись з командними специфічними командами (і це все, крім портативного)!