Według strony podręcznika bash:
bash skanuje każde słowo w poszukiwaniu znaków *,? i [. Jeśli pojawi się jeden z tych znaków, to słowo jest traktowane jako wzór i zastępowane alfabetycznie uporządkowaną listą nazw plików pasujących do wzorca
i z węzła informacyjnego dla ls
Program `ls 'wyświetla informacje o plikach (dowolnego typu, w tym katalogach). Opcje i argumenty pliku można jak zwykle mieszać dowolnie.
W przypadku nieopcyjnych argumentów wiersza polecenia, które są katalogami, domyślnie „ls” wyświetla zawartość katalogów, nie rekurencyjnie, i pomija pliki o nazwach rozpoczynających się od „.”. W przypadku innych argumentów, które nie są opcjami, domyślnie `ls 'wyświetla tylko nazwę pliku. Jeśli nie podano żadnych argumentów nie będących opcjami, „ls” wyświetla zawartość bieżącego katalogu.
więc kiedy dajesz ls d*
, d * jest rozwijane do posortowanej listy wszystkich nazw plików / katalogów zaczynających się na d. Więc rozkaz staje się
ls dump
a ponieważ zrzut jest nazwą katalogu, więc otrzymujesz listę wszystkich plików w katalogu „zrzut”, ale kiedy dajesz ls D*
, D * jest rozwijane do „ Dropbox Dokumentów do pobrania ”, więc polecenie staje się
ls Desktop Documents Downloads Dropbox
a ponieważ wszystkie są katalogami, otrzymujesz listę plików w indywidualnym katalogu. Gdyby w bieżącym katalogu znajdował się plik rozpoczynający się na literę D , byłby wymieniony osobno.
ls p*
i pojawił się plik, ponieważ istnieje i Als P*
pokazuje Pictures ogólnodostępnych Folder jak nie ma pliku zaczynając P . A kiedy utworzyłem katalog o nazwie poo , pojawił się onls p*
Zarówno d *, jak i D * wyświetlają listę plików i folderów pasujących odpowiednio do d * i D *, zachowanie jest takie samo, musiał być błąd w teście.
Jeśli chcesz wyświetlić tylko nazwy folderów, a nie zawartość folderu, musisz użyć „-d”:
źródło
Jak zasugerowano powyżej,
-d
opcja jest już dostępna. Dodawaniedo mojego
~/.bashrc
pliku działa dobrze dla mnie.źródło
ld - The GNU linker
, co uniemożliwi OP kompilowanie i łączenie programów. Użyjalias lsd='ls -d'
zamiast tego. Przed aliasingiem czegoś, jakfoo
zawsze,type foo
sprawdź, czyfoo
jest już używany jako nazwa czegoś i zdecyduj, czy wygoda aliasu zastępuje utratę dostępu do poprzedniejfoo