ls
Es gibt keine Möglichkeit, dies zu tun, aber eines der schönen Dinge an Unix & Linux ist, dass langatmige und unelegante Pipelines leicht in ein Shell-Skript, eine Funktion oder einen Alias umgewandelt werden können. und diese können wiederum wie jedes andere Programm in Pipelines verwendet werden.
(HINWEIS: Es gibt einige Probleme mit dem Gültigkeitsbereich von Funktionen und Aliasen. Für alle ausführbaren Dateien, die diese lesen und ausführen können, stehen Skripts zur Verfügung. Aliase und Funktionen sind nur in der aktuellen Shell verfügbar, auch wenn das .profile / .bashrc usw. einer Sub-Shell möglicherweise neu definiert wird Außerdem kann ein Skript in einer beliebigen Sprache geschrieben werden - einschließlich bash / sh, awk, perl, python und anderen - je nachdem, welche Sprache für den Job am besten geeignet ist oder mit welcher Sie am vertrautesten sind.
z.B
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
Ich habe xargs hinzugefügt, damit Sie alle üblichen ls
Optionen verwenden können, zlsf -lrS
Da es verwendet wird find
, werden alle normalerweise ausgeblendeten Punktedateien angezeigt und allen Dateinamen wird das Präfix ./ vorangestellt - das ist der einzige Unterschied, den Sie bemerken werden.
Sie könnten Punktedateien mit ausschließen, ! -iname '.*'
aber dann müssten Sie zwei Versionen des Alias haben - eine, die Punktedateien anzeigt, und eine, die keine hat.
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
Wenn lsf
es sich um ein Skript und nicht um einen Alias handelt, können Sie die Optionen auch analysieren (z. B. mit getopts oder / usr / bin / getopt oder ähnlichem) und Punktdateien ausschließen, sofern diese nicht -a
vorhanden sind.
find
Befehl der beste Weg, um das zu tun, was Sie wollen. Für einige zuverlässige andere Optionen sollten Sie sich die Shell-spezifischen Befehle ansehen (und diese sind alles andere als portabel)!