Bash rekurencyjne wyszukiwanie plików. Znajdź polecenie: rozbudowane możliwości wyszukiwania plików w systemie Linux. Akcje pliku

Niewątpliwie podczas pracy z Linuksem czasem jest taka potrzeba wyszukiwanie plików z pewnymi cechami. Tymi cechami mogą być rozmiar lub typ pliku, uprawnienia i inne.

Dostępność w Polecenia systemu Linux odnaleźćbardzo pomaga wyszukiwanie plików według różnych kryteriów.

Dzisiaj przeanalizujemy wyszukiwanie plików w systemie Linux i podaj główne opcje polecenia odnaleźćktóre możesz złożyć w swojej pracy.

Lista wszystkich plików zawartych w bieżącym katalogu i podkatalogach

Najważniejsze, co powinieneś wiedzieć, to jak używać tego polecenia i że streszczenie, które znajdziesz za pomocą polecenia „znajdź osobę”, nie jest bardzo ciche, ponieważ jeśli tak mówi. Znajdź gdzie szukać. To polecenie jest równoważne z wprowadzeniem dowolnego z poniższych.

Wyszukaj pliki według określonej ścieżki

Wyszukaj plik według nazwy

Odwróć kryteria wyszukiwania. Wyszukaj tylko pliki lub katalogi. Wyszukaj wiele katalogów. Bardzo przydatne jest jednoczesne wyszukiwanie kilku katalogów lub tras i dodawanie ich tylko do parametrów. Luis Armando Medina Śledź mnie na Twitterze.


Format polecenia odnaleźć:

odnaleźćsposóbopcje

gdzie sposób - To jest katalog do przeszukiwania. Możesz podać następujące wartości jako ścieżkę:

. - szukaj w bieżącym katalogu;

/ - wyszukiwanie z katalogu głównego;

~ - szukaj w katalogu domowym.

Jeśli chodzi o opcje, istnieje znacznie większa lista, która jest niezwykle konieczna do uważnego przeczytania (to bardzo pomoże w przyszłości!). Więc, główne opcje polecenia find:

Na początku będzie wyglądało, że list nie ma większego sensu i nigdy go nie zapamiętacie. Struktura poleceń wygląda następująco: znajdź ścieżkę wyrażenia. Ścieżka jest czysta - ten katalog będzie wyglądał poniżej. Często używany, na przykład typ, właściciel. Inną ważną opcją jest tak zwane działanie. Dzięki temu możemy uruchomić dowolne polecenie systemowe i przekazać je do pliku jako parametr. Wreszcie mamy operatory składania wyrażeń.

Skoncentrujemy się na praktycznych pokazach. Dostęp do napędu dla wszystkich katalogów zwanych eksperymentami. Musimy rozważyć ten rekord, aby nie był interpretowany przez powłokę. Jeśli chcemy znaleźć podkatalog w bieżącym katalogu i nie przechodzić rekurencyjnie.

-imię - wyszukiwanie plików według nazwy przy użyciu powyższego szablonu;

-użytkownik - wyszukaj pliki należące do określonego użytkownika;

-Grupa - wyszukaj pliki należące do określonej grupy;

-trwała ondulacja - wyszukaj pliki w określonym trybie dostępu;

-rodzaj - wyszukaj pliki określonego typu. Istnieje również wystarczająca liczba typów:

  • b - specjalny plik bloku;
  • d jest katalogiem;
  • c - plik znaków specjalnych;
  • f jest zwykłym plikiem;
  • l jest dowiązaniem symbolicznym;
  • p jest nazwaną rurą;
  • s jest gniazdem.
-rozmiar n - szukaj plików o rozmiarze n jednostek;

-mtime -n + n - szukaj plików, których zawartość zmieniła się mniej niż (-) lub więcej niż (+) dni temu.

Interesujące jest również wyszukiwanie według liczby plików i rozmiarów. W tym przykładzie znajduje się wszystko w katalogu domowym, które zostało zmienione w ciągu ostatnich siedmiu dni. Wszystko zmieniło się ponad siedem dni temu. Znajduje w bieżącym katalogu wszystkie pliki, które zostały zmodyfikowane przed plikiem.

Puste nawiasy klamrowe zostaną zastąpione ścieżką do znalezionego pliku. Odwrotny ukośnik przed średnikiem jest ważny. Ale średnik jest znakiem, który zwykle rozdziela polecenia. Po uruchomieniu średnik będzie rozumiany jako separator poleceń. Dlatego musimy go przetworzyć za pomocą \\\\ lub napisać, jak; Przykład znajdzie się w akcji. katalog i podkatalogi dla wszystkich szczegółów plików i list. Poprzedni przykład pokazuje nam siłę procesu.

Zastanów się przykłady poleceń odnaleźć :

Najczęściej stosowaną opcją jest opcja -imięktóry wyszukuje pliki według nazwy.

Przykłady z opcją -name :

$ find / mnt / usb -name "* .mp3" -print

wyszuka wszystkie pliki (oznacza to znak *) z rozszerzeniem .mp3 na urządzeniu USB zamontowanym w katalogu / mnt / usb.

$ znajdź ~ -name „test *” -print

wyświetla listę plików katalogu domowego rozpoczynających się od testu.

Jeśli chcesz znaleźć pliki zaczynające się od niektórych liter (na przykład od a do j), wygodnie będzie zastosować wyrażenia regularne, które są niezwykle wygodne w pracy:

$ znajdź / -name „*” -print

Powyższe polecenie pozwoli ci znaleźć wszystkie pliki w systemie zaczynające się od liter od a do j.

Wyszukaj pliki o określonych trybach dostępu

Jeśli chcesz znaleźć pliki, które mają określone tryby dostępu, ta opcja pomoże. -trwała ondulacjaco z łatwością pomoże w tym.

Na przykład będziemy wyszukiwać pliki w trybie dostępu 775 (właściciel i grupa mają pełne prawa a reszta wpisów ma innych użytkowników) znajdujących się w bieżącym katalogu:

$ odnaleźć. -perm 775 -druk

Przeprowadzanie wyszukiwania za pomocą odnaleźć możesz użyć innej metody z opcją -perm - możesz wstawić myślnik przed wartością trybu, a następnie wyszukiwane będą pliki, dla których ustawione są wszystkie określone bity uprawnień. Ponadto pozostałe bity w tym przypadku są ignorowane.

Na przykład znajdujemy pliki, do których użytkownicy grupy mają pełny dostęp:

$ odnaleźć. -perm -070 -print

Zamiast łącznika możesz podać znak plus. W takim przypadku zostanie przeprowadzone wyszukiwanie plików, które mają ustawiony co najmniej jeden z określonych bitów uprawnień. Pozostałe bity są ignorowane.

Wyszukiwanie plików określony użytkownik lub grupy

Znalezienie plików dla konkretnego użytkownika jest niezwykle proste w realizacji. Aby to zrobić, po prostu uruchom polecenie:

$ znajdź / -user admin -print

Powyższe polecenie wygeneruje wyszukiwanie plików w systemie należącym do administratora.

Aby znaleźć pliki należące do określonej grupy (na przykład menedżerów), wykonaj polecenie:

$ find / -group manager -print

Możesz użyć opcji, aby wyszukać pliki nieistniejących użytkowników lub grup. - odurzający i -nogroup:

$ znajdź / -nouser -print

$ znajdź / -nogroup -print

Wyszukaj pliki określonego typu

Jedna z wygodnych cech zespołu odnaleźć, to możliwość wyszukiwania plików określonego typu. Rozważ opcje korzystania z opcji -rodzaj:

Wyszukaj dowiązania symboliczne w katalogu / etc:

$ znajdź / etc -type l -print

Wyświetla listę katalogów obecnych w katalogu / mnt / raid

$ find / mnt / raid -type d -print

Wyszukaj pliki o określonym rozmiarze

Opcja -rozmiar umożliwia wyszukiwanie plików o określonym rozmiarze i ma następujący wygląd po uruchomieniu:

$ odnaleźć. -rozmiar 2000k -druk

Powyższe polecenie znajdzie i wyświetli na ekranie pliki o wielkości 2 megabajtów w bieżącym katalogu. Jeśli na przykład musisz znaleźć pliki o rozmiarze mniejszym niż 500 kilobajtów, polecenie będzie wyglądać następująco:

$ odnaleźć. -rozmiar -500k -print

Jeśli chcesz znaleźć pliki większe niż 600 megabajtów, zastosuj polecenie:

$ znajdź / rozmiar + druk 600M

Wyszukaj pliki za pomocą opcji -mtime

Opcja -mtime pozwala znaleźć pliki, które zmieniły się w czasie.

Na przykład mieliśmy za zadanie znaleźć pliki, które znajdują się w katalogu / mnt / raid / upload i które zmieniły się w ciągu ostatnich 5 dni. Zespół pomoże nam w tym:

$ find / mnt / raid / upload -mtime -5 -print

Jeśli potrzebujemy czegoś przeciwnego, na przykład, aby znaleźć pliki, które nie zmieniły się przez tydzień, używamy polecenia:

$ find / mnt / raid / upload -7 -print

Komenda odnaleźć jest niezwykle wygodnym narzędziem do wyszukiwanie plików i może być również używany do wyszukiwanie plików na dyskach NFS (sieć systemy plików), ale w tym przypadku należy wziąć pod uwagę, że wyszukiwanie czegoś na NFS zajmie znacznie więcej czasu niż na dyskach lokalnych.

W tym artykule omówiliśmy tylko podstawowe opcje polecenia find, które pomogą ci w pracy. Używaj tego, co jest wygodne i nie martw się o nic!

W środowisku serwerowym praca z wierszem poleceń zajmuje dużo czasu. Powłoka Bash jest często używana - powłoka poleceń Domyślnie większość dystrybucji.

Jest prawdopodobne, że podczas sesji terminalu często powtarzane będą wspólne polecenia, a ich odmiany będą jeszcze częstsze. Oczywiście pierwsze ręczne wpisanie każdego polecenia jest bardzo przydatne, ponieważ jest to dodatkowa okazja do ćwiczenia, ale w pewnym momencie zaczyna drażnić i drażnić.

Na szczęście powłoka bash ma kilka całkiem dobrze zaprojektowanych funkcji historii. Zdolność do efektywnego używania i zarządzania historią w bash pozwala spędzać mniej czasu na pisaniu poleceń, a tym samym zwiększać ilość wykonanej pracy. Jak wiesz, tak zwana zasada DRY (Don't Repeat Yourself) jest popularna wśród programistów. Wydajne wykorzystanie historii w bash pomaga w pracy z informacjami zgodnie z tą zasadą.

Ten przewodnik pokazuje wszystkie funkcje VPS z Ubuntu 12.04, ale prawie wszystkie są nowoczesne dystrybucje systemu Linux będzie działać w podobny sposób.

Ustawienia historii w bash

Przed użyciem historii musisz zmodyfikować niektóre ustawienia bash, aby była bardziej odpowiednia.

Bash pozwala edytować liczbę poprzednich poleceń, które musisz zapisać w historii. Istnieją dwie osobne opcje w bash: parametr „HISTFILESIZE” określa liczbę poleceń przechowywanych w pliku historii, a „HISTSIZE” wskazuje liczbę poleceń przechowywanych w pamięci dla bieżącej sesji.

Oznacza to, że w pamięci można ustawić rozsądne limity wielkości historii dla bieżącej sesji, a także zapisać większą historię na dysku do wykorzystania w przyszłości.

Domyślnie bash ustawia bardzo umiarkowane wartości dla tych parametrów, więc musisz je rozwinąć, aby móc korzystać z pełniejszej historii. Niektóre dystrybucje już zwiększyły domyślne ustawienia historii.

Aby zmienić te opcje, otwórz plik „~ / .bashrc” za pomocą edytora:

Znajdź opcje HISTSIZE i HISTFILESIZE. Jeśli dla nich ustawiono wartości, zmień je. Jeśli w tym pliku nie ma takich parametrów, wprowadź je. Ten przewodnik może kosztować 10 000 linii na dysk i 5000 linii przechowywanych w pamięci. Są to skromne wartości dla większości systemów, ale nawet będą musiały zostać obniżone, jeśli wpłyną na wydajność:

HISTSIZE \u003d 5000
HISTFILESIZE \u003d 10000

Domyślnie bash zapisuje historię na koniec każdej sesji, zastępując i aktualizując istniejący plik. Oznacza to, że podczas pracy w kilku sesjach bash zostanie zapisana tylko historia ostatniej zakończonej sesji.

Można to obejść, ustawiając parametr „histappend”, który doda historię, a nie ją zastąpi. Może być już zainstalowany; w przeciwnym razie można go aktywować, dodając następujący wiersz:

shopt -s histappend

Aby bash mógł bezzwłocznie wprowadzić polecenia do historii, bez oczekiwania na zakończenie sesji (aby polecenia jednego terminala były natychmiast dostępne w innym), możesz zainstalować lub dodać polecenie „historia –a” dla opcji „PROMPT_COMMAND”, która zawiera polecenia wykonywane przed każdym nowym wiersz poleceń

Ale taki zespół potrzebuje sztuczki, aby działać poprawnie. Musisz natychmiast dodać „historię –a” do pliku historii, a następnie wyczyścić bieżącą historię tej sesji za pomocą „historii –c”, a następnie przeczytać edytowany plik historii i powrócić do historii tej sesji za pomocą „historii –r”.

Wygląda to mniej więcej tak:

eksport PROMPT_COMMAND \u003d "historia -a; historia -c; historia -r; $ PROMPT_COMMAND"

Po zakończeniu tej operacji zapisz zmiany i zamknij plik.

Aby aktywować zmiany, wyloguj się i zaloguj ponownie lub użyj polecenia source na podany plikwpisując:

źródło ~ / .bashrc

Zobacz poprzednią historię wGrzmotnąć

Aby wyświetlić historię w Bash, użyj polecenia „historia”. Wyświetla poprzednie polecenia, w wierszu poleceń w wierszu. W większości przypadków powinna wypisać liczbę linii ustawioną przez wartość „HISTSIZE”. Obecnie nie ma wielu zespołów:

historia
. . .
43 man bash
44 mężczyzna fc
45 man bash
46 fc -l -10
47 historia
48 ls -a
49 vim .bash_history
50 historii
Historia 51 ludzi
52 historia 10
53 historia

Wyświetla również numer seryjny polecenia. Każde polecenie jest powiązane z numerem dla łatwości użycia.

Dane wyjściowe można zmniejszyć, określając liczbę poleceń po „historii”. Na przykład, jeśli chcesz wyświetlić tylko 5 ostatnio wprowadzonych poleceń, możemy wpisać:

historia 5
50 historii
Historia 51 ludzi
52 historia 10
53 historia
54 historia 5

Aby znaleźć wszystkie polecenia w historii, które zawierają określony ciąg, możesz po prostu użyć grep po znaku potoku. Na przykład, aby znaleźć wiersze zawierające „cd”, wpisz:

historia | grep cd
33 cd Zdjęcia /
37 cd ..
39 cd Desktop /
61 cd / usr / bin /
68 cd
83 cd / etc /
86 cd resolvconf /
90 cd resolv.conf.d /

Uruchamianie poleceń historii w Bash

Nauka wypisywania poleceń jest oczywiście przydatna, ale oprócz używania numeru seryjnego poleceń, prawie nic nie daje. Aby wywołać dowolne poprzednie polecenie, musisz użyć specjalnej składni.

Możesz wywołać dowolne z poprzednich poleceń, wprowadzając jego numer i umieszczając przed nim wykrzyknik „!”. Na podstawie powyższego przykładu historii można szybko wyświetlić stronę podręcznika online, wprowadzając po prostu:

Spowoduje to natychmiastowe wywołanie i wykonanie polecenia w historii pod numerem 51.

Możesz także wykonywać polecenia względem bieżącej pozycji. Odbywa się to za pomocą składni „! -N”, gdzie „n” musi być zastąpione numerem polecenia, które ma zostać wykonane.

Na przykład, jeśli chcesz wyprowadzić i wykonać przedostatnie polecenie, możesz wpisać „! -2”. Tak więc, jeśli wypisano zawartość długiej ścieżki do katalogu, a następnie wydano polecenie echo, a teraz trzeba ponownie wypisać ścieżkę, sesja może wyglądać następująco:

ls / usr / share / doc / manpages
echo cześć
! -2 # ponownie wyświetla zawartość

Aby ponownie wykonać ostatnie polecenie, zamiast używać „! -1” w bash, możesz użyć polecenia „hot” „!!”, które wykonuje:

Wiele osób korzysta z tego, jeśli wpisało polecenie wymagające uprawnień sudo. Podczas wpisywania „sudo !!” polecenie zostanie przekroczone z uprawnieniami sudo. Taka sesja wygląda mniej więcej tak:

dotknij / etc / hello
touch: nie można dotknąć `/ etc / hello": Odmowa dostępu
sudo !!
sudo touch / etc / hello
hasło do demouser:

Ten przykład pokazuje inną właściwość tej użytecznej składni. W rzeczywistości jest to prosta zamiana, ponieważ w razie potrzeby można ją włączyć do innych zespołów.

Przewijanie historii w Bash

Możesz przewijać historię w Bash, wyświetlając każde kolejne polecenie w wierszu poleceń do edycji, na kilka sposobów.

Najczęstszym sposobem jest naciśnięcie strzałki w górę w wierszu poleceń.

Każde dodatkowe naciśnięcie tego klawisza spowoduje powrót o krok wstecz w historii wiersza poleceń. Aby zmienić kierunek, użyj klawisza strzałki w dół, który przewija historię do ostatniego wiersza poleceń.

Zamiast klawiszy strzałek można użyć następujących skrótów klawiaturowych: „CTRL-p”, aby przewinąć historię do tyłu, i „CTRL-n”, aby przewinąć do przodu.

Aby powrócić do bieżącego wiersza poleceń, możesz użyć „Meta-\u003e”. W większości przypadków „meta” i symbol „\u003e” zastępują kombinację „ALT-Shift-.”. Jest to bardzo przydatne, jeśli prąd wiersz poleceń znajduje się wystarczająco daleko.

Aby przejść do pierwszego wiersza historii, użyj manewru wstecznego „Meta-<». Обычно это сочетание замещает «ALT-Shift-,».

Podsumowując, poniżej znajduje się lista najważniejszych klawiszy nawigacyjnych historii:

  • Klawisz strzałki w górę: przewijanie historii;
  • CTRLp: przewiń historię;
  • Klawisz strzałki w dół: przewijanie historii do przodu;
  • CTRLn: przewiń historię do przodu;
  • ALTZmiana-. : przejście do końca historii (do ostatnio wprowadzonego polecenia);
  • ALTZmiana-, : Przejdź na początek historii (do pierwszego wprowadzonego polecenia).

Historia wyszukiwania wGrzmotnąć

Chociaż używa kombinacji „historii | grep ”to najprostszy sposób na wykonanie niektórych procedur; jego działanie w wielu sytuacjach jest dalekie od ideału.
Bash ma funkcję wyszukiwania historii. Na przykład wyszukiwanie historii jest często używane w przeciwnym kierunku (najnowsze wyniki są wyświetlane jako pierwsze) za pomocą skrótu klawiaturowego Ctrl-r.

Na przykład możesz wpisać „Ctrl-r” i wpisać część poprzedniego polecenia. Wymagana jest tylko część zespołu. Jeśli wprowadzona wartość odpowiada niepotrzebnemu poleceniu, możesz ponownie nacisnąć „Ctrl-r”, aby wyświetlić następny wynik.

Jeśli żądane polecenie zostało przypadkowo pominięte, możesz zmienić kierunek wyszukiwania za pomocą kombinacji CTRL-s. Przydaje się również podczas przeglądania historii opisanej w poprzednim rozdziale w celu wyszukiwania do przodu.

Uwaga: w wielu terminalach kombinacja CTRL-s blokuje sesję terminali. Oznacza to, że próba użycia go do wyszukiwania spowoduje „zamrożenie” terminala. Aby odblokować sesję, po prostu wpisz „Ctrl-q”.

Te funkcje wstrzymywania i wznawiania sesji nie są potrzebne w większości nowoczesnych terminali, więc możesz je wyłączyć, wpisując:

Teraz musisz dodać to do pliku „~ / .bashrc”, aby mieć pewność, że polecenie będzie działać nieprzerwanie.

Teraz ta kombinacja wyszukiwania będzie działać poprawnie.

Wyszukaj według wprowadzonej części polecenia

Typowym sposobem wyszukiwania jest wpisanie części polecenia, sprawdzenie, czy zostało wykonane wcześniej, a następnie odnalezienie go w historii.

Jak przeprowadzić wyszukiwanie przy użyciu danych już wprowadzonych w wierszu poleceń? Przesuń kursor na początek linii za pomocą „CTRL-a”, następnie wywołaj historię „CTRL-r”, wstaw bieżącą linię do wyszukiwania za pomocą „CTRL-y” i ponownie użyj „CTRL-r”, aby odwrócić wyszukiwanie.

Na przykład musisz zaktualizować pamięć podręczną pakietów w Ubuntu. To polecenie zostało już wykonane, ale aby sprawdzić, czy tak jest, możesz wpisać sudo:

Na tym etapie jasne jest, że to polecenie zostało zdecydowanie wykonane niedawno. Teraz kliknij:

Spowoduje to przesunięcie kursora na początek linii.

Spowoduje to uruchomienie wstecznego sekwencyjnego wyszukiwania historii. Ta akcja ma efekt uboczny - kopiuje całą zawartość wiersza poleceń znajdującego się za bieżącą pozycją kursora i wkleja ją do schowka.

Spowoduje to wstawienie części polecenia, które właśnie skopiowałeś z wiersza polecenia do wyszukiwania.

Teraz musisz ponownie rozpocząć wyszukiwanie wstecz w historii, aby znaleźć polecenia zawierające określoną część.

Na początku ta procedura wydaje się dość myląca, ale musisz się przyzwyczaić. Jest to niezwykle przydatne w chwilach, gdy wprowadzono połowę złożonych poleceń, a teraz potrzebna jest historia, aby ukończyć pracę.

Ponadto wszystkie te działania można połączyć w jedno:

Zaawansowane wykorzystanie historii w bash

Po zapoznaniu się z podstawowymi technikami korzystania z historii, które istnieją w bash. Pomiędzy nimi:

  • !! : wydrukuj ostatnie polecenie;
  • ! n: idź do zespołu o numerze seryjnym „n”;
  • !- n: Przejdź do polecenia, które było numerowane przed ostatnim poleceniem.

Identyfikatory zdarzeń

Trzy powyższe kombinacje są nazywane identyfikatory zdarzeń. W rzeczywistości jest to sposób wywoływania poprzednich poleceń z historii przy użyciu określonych kryteriów.

Na przykład, aby wykonać ostatnie polecenie ssh, możesz użyć:

Ta akcja wyszukuje wiersze zaczynające się od „ssh”. Aby znaleźć sekwencję, której nie ma na początku polecenia, możesz wpisać znak „?” przed i po sekwencji. Na przykład, aby powtórzyć ostatnie polecenie wyszukiwania apt-cache, wpisz:

Możesz także użyć wariantów wyjścia ostatniego polecenia („!!”). Wykonaj szybkie wyszukiwanie i zamień, wpisując:

^ oryginalna ^ wymiana ^

Spowoduje to wywołanie ostatniego polecenia (np. „!!”), wyszukanie dopasowania o wartości „oryginał” i zastąpienie go wartością „zastąpienie”. Następnie polecenie zostanie wykonane.

W razie potrzeby bardzo wygodnie jest zastosować, aby poprawić błędy ortograficzne. Na przykład:

cat / etc / hosst
cat: / etc / hosst: Brak takiego pliku lub katalogu
^ hosst ^ hosts ^

Słowa kluczowe

Po kwalifikatorach zdarzenia możesz dodać znak dwukropka (:), a następnie dodać kwalifikator słowaaby wybrać część dopasowanego zespołu.

Działa to poprzez podzielenie polecenia na „słowa” - sekcje oddzielone spacjami. Otwiera to nowe możliwości interakcji z parametrami poleceń.

Samo polecenie ma numer zero, pierwszy argument to 1 i tak dalej.

Na przykład możesz wyświetlić zawartość katalogu, a następnie zmienić go w następujący sposób:

ls / usr / share / doc / manpages
cd !!: 1

Jeśli ta operacja jest wykonywana przy użyciu ostatniego uruchomionego polecenia, tę kombinację można skompresować, usuwając drugie „!” i dwukropek:

Będzie to działać w ten sam sposób.

Do pierwszego argumentu można odwoływać się za pomocą znaku „^”, a do ostatniego argumentu można odwoływać się jako „$”. Znaki te są znacznie bardziej przydatne podczas pracy z zakresami niż numerami seryjnymi. Na przykład możesz wyodrębnić wszystkie argumenty z poprzedniego polecenia na nowe na trzy sposoby:

!!:1*
!!:1-$
!!:*

Gwiazdka „*” jest używana do wskazania danych wyjściowych innych niż oryginalne polecenie. Podobnie, możesz użyć słowa numer, podając * po nim, aby wskazać, że wszystko po określonym słowie również powinno zostać uwzględnione.

Modyfikatory

Ostatnią rzeczą, którą można dodać do zachowania wywoływanej linii historii, jest zmiana zachowania połączenia w celu kontrolowania samego tekstu. Modyfikatory są dodawane po dodatkowym znaku „:” na końcu wiersza.

Na przykład, możesz skrócić ścieżkę do pliku za pomocą modyfikatora „h” (co oznacza „głowa”), który usuwa ścieżkę do ostatniego znaku ukośnika (/). Pamiętaj: to nie będzie działać poprawnie, jeśli musisz skrócić ścieżkę do katalogu, który kończy się ukośnikiem.

Jest to często używane podczas modyfikowania pliku i konieczności przejścia do jego katalogu w celu wykonania operacji na powiązanych z nim plikach.

cat / usr / share / doc / manpages / copyright

Następnie musisz przejść do katalogu. Można to zrobić za pomocą polecenia „cd” w ciągu parametrów, „odcinając” nazwę pliku na końcu.

cd !!: $: h
pwd
/ usr / share / doc / manpages

Możesz także wykonać procedurę odwrotną, skracając ścieżkę i używając tylko nazwy pliku, używając modyfikatora „t” (co oznacza „ogon”). Na przykład możesz wyszukać ostatnie polecenie „cat”, używając flagi „t”, aby pozostawić tylko nazwę pliku.

Możesz także po prostu opuścić pełną ścieżkę, a zespół będzie pracował zgodnie z oczekiwaniami. Ale czasami tak nie jest. Na przykład, jeśli użyjesz ścieżki względnej i zmienisz podkatalog za pomocą modyfikatora „h” podczas pracy z plikiem zagnieżdżonym w kilku podkatalogach bieżącego katalogu, nie będziesz już mógł używać ścieżki względnej do tego pliku.

Innym bardzo przydatnym modyfikatorem jest „r”, który usuwa przyrostek ogona w postaci „.xxx”. Jest to przydatne, gdy używasz polecenia tar do rozpakowania pliku i musisz później przejść do katalogu. Zakładając, że nazwa katalogu odpowiada nazwie pliku, możesz zrobić coś takiego:

tar xzvf long-project-name.tgz
cd !!: $: r

Jeśli tarball używa rozszerzenia tar.gz zamiast tgz, wystarczy wprowadzić modyfikator dwa razy:

tar xzvf long-project-name.tar.gz
cd !!: $: r: r

Podobny modyfikator „e” usuwa wszystko oprócz przedłużenia ogona.

Jeśli wywoływane polecenie musi zostać znalezione, a nie wykonane, możesz użyć modyfikatora „p”, aby bash ponownie wyświetlił polecenie.

Jest to przydatne, jeśli musisz upewnić się, że wybrany fragment historii jest prawidłowy. Ponadto ten modyfikator umieści wybrane polecenie w historii na wypadek konieczności dalszej edycji.

Na przykład polecenie find było wcześniej uruchamiane w katalogu osobistym, a teraz należy je uruchomić z tego katalogu (/). Sprawdź, czy podstawienie jest wykonywane poprawnie w następujący sposób (pod warunkiem, że to polecenie ma numer 119):

znajdź ~ -name "plik1" # oryginalne polecenie
! 119: 0: p /! 119: 2 *: p
znajdź / -nazwa „plik1”

Jeśli polecenie zostało poprawnie wyświetlone, można je uruchomić za pomocą:

Istnieje łatwiejszy sposób wykonania podstawiania poleceń: możesz użyć składni s / original / new /

Na przykład akcję opisaną powyżej można wykonać w następujący sposób:

Zastąpi to pierwsze wystąpienie wzorca wyszukiwania. Aby wykonać podstawienie dla każdego dopasowania, użyj modyfikatorów g i s. Na przykład, aby utworzyć pliki o nazwie „plik1”, „plik2” i „plik3” oraz katalogi „katalog1”, „katalog2”, „katalog3”, należy użyć:

dotknij plik 1 plik 2 plik 3
mkdir !!: *: gs / file / dir /

Podsumowanie

Ten przewodnik pomaga opanować podstawowe pojęcia związane z używaniem historii. Oczywiście niektóre z opisanych funkcji będą przydatne w rzadkich przypadkach, ale trzeba też o nich wiedzieć i móc z nich korzystać.

Ogólnie rzecz biorąc, wszystkie opisane możliwości wykorzystania historii mogą znacznie przyspieszyć pracę.

Tagi :,