Potężne symbole wieloznaczne bash w Linuksie

Potężne symbole wieloznaczne bash - 2.0

Bez tych fajnych drobiazgów zwanych symbolami wieloznacznymi powłoki praca w linii poleceń Linuksa jest dość bolesna. Więc upewnij się, że użyjesz symboli wieloznacznych.

Czym są symbole wieloznaczne powłoki >

Symbole wieloznaczne to funkcja powłoki, która sprawia, że ​​wiersz poleceń jest znacznie potężniejszy niż jakikolwiek menedżer plików GUI. Widzisz, jeśli chcesz wybrać dużą grupę plików w graficznym menedżerze plików, zwykle musisz wybrać je za pomocą myszy. Może się to wydawać proste, ale w niektórych przypadkach może być bardzo frustrujące. Na przykład, załóżmy, że masz katalog z ogromną liczbą wszelkiego rodzaju plików i podkatalogów i decydujesz się przenieść wszystkie pliki HTML, które zawierają słowo „linux” gdzieś w środku ich nazwy, z tego dużego katalogu do inny katalog. Jaki jest prosty sposób na zrobienie tego? Jeśli katalog zawiera ogromną liczbę plików HTML o różnych nazwach, Twoje zadanie jest bardzo proste!

W Linuksowym interfejsie wiersza polecenia to zadanie jest równie proste do wykonania, jak przeniesienie tylko jednego pliku HTML, a dzięki rozszerzeniu symbole wieloznaczne powłoki. Symbole wieloznaczne to znaki specjalne, które pozwalają wybrać nazwy plików pasujące do określonych wzorców znaków. Pomaga to wybrać nawet dużą grupę plików za pomocą zaledwie kilku znaków, aw większości przypadków jest łatwiejsze niż wybieranie plików myszą.

Oto lista najczęściej używanych symboli wieloznacznych w bash:

wieloznaczny Mecze
* zero lub więcej znaków
? dokładnie jedna postać
[abcde] dokładnie jeden znak na liście
[ae] dokładnie jeden znak w podanym zakresie
[! abcde] dowolny znak, którego nie ma na liście
[! ae] dowolna postać, która nie mieści się w podanym zakresie
{debian, linux} dokładnie jedno całe słowo w podanych opcjach

Możesz użyć symboli wieloznacznych z dowolnym poleceniem, które akceptuje nazwy plików jako argumenty.

 

Przykłady wieloznaczne >

Spójrzmy na kilka przykładów. Prawdopodobnie znak * jest już ci znany, ponieważ jest również szeroko stosowany w wielu innych miejscach, nie tylko w Linuksie. Na przykład następujące czynności usuwają każdy plik z bieżącego katalogu:
rm *

Następujące polecenie przenosi wszystkie pliki HTML, które mają w nazwie słowo „linux”, z katalogu roboczego do katalogu o nazwie dir1:
mv *linux*.html dir1

Widziałem, mówiłem, że przenoszenie wielu plików może być tak proste, jak przenoszenie tylko jednego pliku!

Poniżej przedstawiono wszystkie pliki, które zaczynają się od d i kończ z .txt:
less d*.txt

Następujące polecenie usuwa wszystkie pliki, których nazwy zaczynają się od junk., po której następują dokładnie trzy znaki:
rm junk.???

Za pomocą tego polecenia możesz wyświetlić wszystkie pliki lub katalogi, których nazwy zaczynają się od hda, po której następuje dokładnie jedna cyfra:
ls hda[0-9]

Zawiera listę wszystkich plików lub katalogów zaczynających się od hda, po której następują dokładnie dwie cyfry:
ls hda[0-9][0-9]

Poniżej znajduje się lista wszystkich plików lub katalogów, których nazwa zaczyna się od albo hd or sd, po którym następuje dowolny pojedynczy znak między a i c:
ls {hd,sd}[a-c]

To polecenie kopiuje wszystkie pliki, które zaczynają się wielką literą, do katalogu dir2:
cp [A-Z]* dir2

Spowoduje to usunięcie wszystkich plików, które nie kończą się na ceh or g:
rm *[!cehg]

Mogłabym kontynuować i kontynuować z tymi przykładami, ale masz pomysł. Możesz używać prostych wzorów lub łączyć różne symbole wieloznaczne i konstruować bardzo złożone wzorce, i tak jak powiedziałem wcześniej, możesz ich używać z dowolnymi poleceniami, które przyjmują nazwy plików jako argumenty.