Príkaz find: Rozsiahle možnosti vyhľadávania súborov v systéme Linux

Hovorí sa, že tí, ktorí si nepamätá históriu, sú odsúdení opakovať to isté znova a znova. A ak neviete, ako používať históriu tresnúť, potom nemôžete plne využívať výkon vášho systému. Nie je však nikdy neskoro na to, aby ste začali, a možno po prečítaní tejto správy objavíte niekoľko užitočných a užitočných zručností pri práci s GNU Bash.

Ak strávite nejaký čas v shelle, pravdepodobne viete, že existujú "história" príkazov, ktoré ste vykonali, rovnako ako váš webový prehliadač pamätá históriu navštívených webových stránok. Hoci sa samozrejme história príkazov v shell objavila oveľa skôr ako história navštívených stránok v prehliadačoch.

Mnohí používatelia vedia, že prístup k histórii tímov možno získať pomocou príkazu   alebo pomocou klávesových skratiek Ctrl + str   (predchádzajúci príkaz) a Ctrl + n   (ďalší príkaz). Sú to veľmi užitočné a často používané techniky pre prácu s históriou, ale s nimi nepoužívate všetky možnosti Bashu na prácu s históriou. Poďme sa pozrieť na niektoré triky práce s príbehom Bash, pomocou tímu   alebo iným spôsobom.

Použitie čísel

Ak zadáte príkaz , dostanete zoznam posledných zadaných príkazov s poradovým číslom pred každým z nich. Z histórie môžete spustiť ľubovoľný príkaz pomocou konštrukcie

ak potrebujete spustiť n-té   počítaním príkazu od konca zoznamu. Napríklad, váš záver   vyzerá takto:

1 sudo su 2 exit 3 sudo apt-get aktualizácia

1 sudo su

2 výstup

3 sudo apt - získajte aktualizáciu

potom inštrukcie

Tým sa spustí posledný príkaz ( !! ) s pomocou sudo, Nie je to zlé?

Pravdepodobne poznáte dizajn ! commandktorý spustí posledný tím z histórie, ktorý začína príkaz, Ak ste nedávno spustili veľmi dlhý príkaz a pamätali ste si, kde to začalo, môže byť tento spôsob, ako bežať z príbehu, užitočný. A vedeli ste, že Bash v tomto prípade nehľadá tím a hľadá substring? To znamená, že nemusíte zadávať celý príkaz za výkričník, stačí len prvé znaky. Povedzme, že ste bežali ako:

$ git commit -a -m "Rôzne a rôzne poznámky"

opakovať príkaz, ale koncepcia je dostatočná na splnenie

Volanie posledného parametra príkazu

Použitie kombinácie «Esc +.» (uniknúť   s obdobím), môžete volať z histórie slovo, odovzdané príkazu ako argument. Napríklad ste spustili:

$ cp názov súboru1 názov súboru2

a museli ste vytiahnuť dve slová zo stredu? Je to jednoduché!

$ ls! : *

vyhľadávanie

Ďalšou užitočnou funkciou je vyhľadávanie "Ctrl + r", lis "Ctrl + r"   a vo vyvesenej pozvánke začnite zadávať časť akéhokoľvek predtým vykonaného príkazu. Pri písaní znakov sa Bash pokúsi nájsť posledný príkaz v histórii, ktorý obsahuje zadané znaky. Potom, čo nájdete, môžete začať "Ctrl + r"   Opäť a Bash zobrazí predchádzajúci príkaz, ak existuje. Po nájdení správneho tímu stačí kliknúť «Enter»   a objaví sa na príkazovom riadku.

Ak potrebujete upraviť príkaz pred spustením, použite tradičné "ľavú šípku" a "šípku doprava", ak chcete posunúť kurzor na požadované miesto príkazu na opravu.

bezpečnosť

História tímov je veľmi užitočná vec, ale niekedy existujú situácie, kedy je nežiaduce udržať si ju. Napríklad používate systém, ktorý je zdieľaný medzi mnohými používateľmi, aby pracoval a nechce systémových administrátorov   systém, ktorý vyberie zadané príkazy. Dokonca aj keď používate osobný počítač, vždy existuje šanca, že bude napadnutý a nebudete chcieť v histórii skutočne dôležitých údajov. Nakoniec možno budete chcieť, aby ste históriu nevymazali ľubovoľnými príkazmi, pretože ich uloženie je jednoducho zmysluplné. Môžete napríklad často používať ls, ale prečo ho uchovávať v histórii, namiesto toho, aby ste v ňom uložili len dlhú a skutočne užitočnú z hľadiska skladovacieho tímu?

Pozrime sa, ako môžete spravovať ukladanie príkazov v histórii.

Prvý spôsob je definovať v .bashrc

Áno, o "pokoj". Na zdieľaných systémoch môžu niektorí používatelia vidieť príkazy, ktoré spúšťate pomocou pomôcok top   a ps, Ak teda nie ste 100% istý spoľahlivosť systému, s ktorým pracujete, nemali by ste spúšťať žiadne príkazy obsahujúce tajné dáta.

záver

Naozaj dúfam, že tu diskutované techniky budú pre vás v každodennej práci užitočné a urobia to trochu príjemnejšie. To však nie je všetko. Nezabudnite pozrieť sa na manuálovú stránku histórie vášho systému. Som si istý, že môžete nájsť oveľa užitočnejšie pre seba!

Nepochybne, pri práci s Linuxom niekedy existuje potreba vyhľadávanie súborov s určitými vlastnosťami. Tieto vlastnosti môžu byť veľkosť alebo typ súboru, povolenia a ďalšie.

Prítomnosť v príkaze Linux nájsť, v mnohých ohľadoch pomáha vyrovnať sa vyhľadávanie súborov   podľa rôznych kritérií.

Dnes budeme analyzovať hľadanie súborov v systéme Linux   a uveďte hlavné možnosti pre tím nájsť, ktoré môžete použiť vo svojej práci.


Príkazový formát nájsť:

nájsťcesta-options

kde cesta   je adresár, do ktorého chcete vyhľadávať. Nasledujúce hodnoty môžu byť zadané ako cesta:

.   - vyhľadávanie v aktuálnom adresári;

/   - vyhľadávanie z koreňového adresára;

~   - vyhľadávanie v domovskom adresári.

Pokiaľ ide o možnosti, existuje oveľa väčší zoznam, s ktorým je veľmi dôležité starostlivo čítať (to pomôže v budúcnosti!). A tak, základné možnosti pre príkaz find:

name   - vyhľadávanie súborov podľa názvu pomocou vyššie uvedenej šablóny;

-user   - vyhľadávanie súborov patriacich spomínanému používateľovi;

-skupina   - vyhľadávanie súborov patriacich do určenej skupiny;

-Perie z druhov   - vyhľadávanie súborov so zadaným prístupovým režimom;

-type   - vyhľadávanie súborov určitého typu. Typy sú tiež dosť:

  • b - špeciálny blokový súbor;
  • d - katalóg;
  • c - špeciálny súbor znakov;
  • f je bežný súbor;
  • l - symbolické spojenie;
  • p - pomenované potrubie;
  • s je zásuvka.
-size n   - vyhľadávanie súborov s veľkosťou n jednotiek;

-mtime -n + n   - vyhľadávanie súborov, ktorých obsah sa zmenil menej ako (-) alebo viac ako (+) dní.

Zvážte niektoré príklady využitia tímov nájsť :

Najčastejšie používanou možnosťou je možnosť name, ktorý vyhľadáva súbory podľa názvu.

Príklady s možnosťou -name :

$ nájsť / mnt / usb -name "* .mp3" -print

vyhľadá všetky súbory (označených symbolom *), ktoré majú rasshirenie.mp3 na USB zariadenie namontované do adresára / mnt / usb.

$ nájsť ~ -name "test *" -print

zobrazí zoznam domovských súborov s adresármi začínajúcimi testom.

Ak potrebujete nájsť súbory, ktoré začínajú s niektorými písmenami (napríklad z A až J), potom bude vhodné použiť regulárne výrazy, ktoré sú veľmi ľahké s ním pracovať:

$ nájsť / -name "*" -print

Vyššie uvedený príkaz nájde všetky súbory v systéme začínajúce písmenami a až j.

Vyhľadajte súbory so špecifickými režimami prístupu

Ak potrebujete nájsť súbory s konkrétnymi režimami prístupu, vyberte možnosť -Perie z druhov, ktoré je ľahké pomôcť.

Napríklad budeme hľadať súbory s prístupovým režimom 775 (vlastník a skupina majú plné práva   a zvyšok používateľov má limit zápisu) v aktuálnom adresári:

$ nájsť. -perm 775 -print

Vykonávanie vyhľadávania pomocou nájsť s voľbou -perm môžete použiť inú metódu - pomenovanie pred pomenovaním hodnoty režimu a potom vyhľadanie súborov, pre ktoré sú nastavené všetky povolené bity povolení. Okrem toho sa v tomto prípade ignorujú zostávajúce bity.

Nájdeme napríklad súbory, ku ktorým majú používatelia úplného prístupu:

$ nájsť. -perm -070 -print

Namiesto pomlčky môžete zadať znamienko plus. V tomto prípade sa budú vyhľadávať súbory s aspoň jedným z určených oprávnení. Zvyšné bity sa ignorujú.

Vyhľadajte súbory konkrétneho používateľa alebo skupiny

Vyhľadávanie súborov konkrétneho používateľa je vo svojej implementácii veľmi jednoduché. Ak to chcete urobiť, stačí spustiť príkaz:

$ nájsť / -user admin -print

Vyššie uvedený príkaz vytvorí vyhľadávanie súborov   v systéme, ktorý patrí používateľovi administrátorovi.

Ak chcete nájsť súbory patriace k určitej skupine (napríklad manažérom), spustite príkaz:

$ find / -group managers -print

Ak chcete vyhľadať súbory neexistujúcich používateľov alebo skupín, môžete tieto možnosti použiť -nouser   a -nogroup:

$ find / -nouser -print

$ nájsť / -nogroup -print

Vyhľadajte súbory určitého typu

Jedným z výhodných funkcií tímu nájsť, je možnosť vyhľadávať súbory určitého typu. Zvážte možnosti používania tejto možnosti -type:

Vyhľadajte symbolické odkazy v adresári / etc:

$ nájsť / etc -type l -print

Zobrazenie zoznamu adresárov v / mnt / raid

$ nájsť / mnt / raid -type d -print

Vyhľadajte súbory s určitou veľkosťou

voľba -size   umožňuje vyhľadávať súbory určitej veľkosti a má pri výkone nasledujúci vzhľad:

$ nájsť. -size 2000k -print

Vyššie uvedený príkaz nájde a zobrazí na obrazovke súbory s veľkosťou 2 megabajtov v aktuálnom adresári. Ak potrebujete napríklad nájsť súbory s veľkosťou menšou než 500 kilobajtov, potom je príkazový typ nasledovný:

$ nájsť. -size -500k -print

Ak potrebujete nájsť súbory väčšie ako 600 megabajtov, použite príkaz:

$ nájsť / -size + 600M -print

Vyhľadajte súbory pomocou možnosti -mtime

voľba -mtime   vám umožní nájsť súbory, ktoré sa v určitom čase zmenili.

Napríklad sme mali za úlohu vyhľadávať súbory nachádzajúce sa v adresári / mnt / raid / upload a meniace sa za posledných 5 dní. V tomto pomôžeme tímu:

$ nájsť / mnt / raid / upload -mtime -5 -print

Ak potrebujeme obrátiť, napríklad nájsť súbory, ktoré sa nezmenili za týždeň, použijeme príkaz:

$ nájsť / mnt / raid / upload -7 -print

tím nájsť   Je to mimoriadne vhodný nástroj vyhľadávanie súborov a môže byť tiež použitý pre vyhľadávanie súborov   na diskoch NFS (sieť súborových systémov), ale v tomto prípade je potrebné vziať do úvahy, že čas na vyhľadanie niečoho v systéme NFS bude trvať oveľa viac ako na lokálnych diskoch.

V tomto článku sme pokryli iba základné možnosti príkazu find, ktorý vám pomôže vo vašej práci. Použite čo je výhodné a nebojte sa o drobnosti!

V prostredí servera trvá dlhší čas práce s príkazovým riadkom. Často sa používa bash shell - príkazový shell   štandardne väčšina distribúcií.

Pravdepodobne počas relácie terminálu sa bežné príkazy často opakujú a variácie týchto príkazov budú ešte častejšie. Samozrejme, že najprv ručne písať každý príkaz je veľmi užitočný, pretože je to príležitosť na precvičovanie, ale v určitom okamihu sa začína nudiť a otravovať.

Našťastie bash-shell má niekoľko veľmi dobre vyvinutých historických funkcií. Schopnosť efektívne používať a spravovať históriu v bash vám umožňuje tráviť menej času zadávaním príkazov a tým zvyšuje množstvo vykonanej práce. Ako je známe, medzi vývojármi je populárny takzvaný princíp DRY (Do not Repeat Yourself). Produktívne využitie histórie v bash pomáha pracovať s informáciami podľa tejto zásady.

Táto príručka ukazuje všetky funkcie na VPS s Ubuntu 12.04, ale takmer všetky moderné distribúcie Linuxu   bude pracovať týmto spôsobom.

Nastavenia histórie v bash

Pred používaním histórie musíte upraviť niektoré nastavenia bash, aby ste to viac použili.

Bash umožňuje upraviť počet predchádzajúcich príkazov, ktoré je potrebné uložiť v histórii. K tomu, bash má dve samostatné možnosti: voľba «HISTFILESIZE» určuje počet príkazov uložených v súbore histórie, a «HISTSIZE» označuje počet príkazov, ktoré sú uložené v pamäti pre aktuálnu reláciu.

Znamená to, že v pamäti môžete nastaviť primerané obmedzenia veľkosti histórie aktuálnej relácie a uložiť na disk aj väčšiu históriu na neskoršie použitie.

V predvolenom nastavení nastavuje bash veľmi mierne hodnoty pre tieto parametre, takže je potrebné ich rozšíriť, aby mohli používať úplnejšiu históriu. Niektoré distribúcie už zvýšili predvolené nastavenia histórie.

Ak chcete tieto možnosti zmeniť, otvorte súbor "~ / .bashrc" pomocou editora:

Nájdite možnosti "HISTSIZE" a "HISTFILESIZE". Ak sú nastavené hodnoty pre ne, zmeňte ich. Ak v tomto súbore nie sú žiadne takéto parametre, zadajte ich. Táto príručka dokáže spravovať 10 000 riadkov pre disk a 5000 riadkov uložených v pamäti. To sú pomerne skromné ​​hodnoty pre väčšinu systémov, ale dokonca budú musieť byť znížené, ak ovplyvnia výkonnosť:

HISTSIZE = 5000
  HISTFILESIZE = 10000

V predvolenom nastavení bash zapíše históriu na konci každej relácie, prepíše a aktualizuje už existujúci súbor. To znamená, že pri práci v niekoľkých bash-reláciách sa uloží iba história poslednej dokončenej relácie.

Toto nastavenie môžete dosiahnuť nastavením parametra "histappend", ktorý pridá históriu a neprepíše ho. Môžu byť už nainštalované. inak ju môžete aktivovať pridaním nasledujúceho riadku:

šetriť jeho histappend

Bash nejaký príkaz okamžite históriu, bez toho aby čakal na zasadnutí (pod velenie jedného terminálu boli okamžite k dispozícii na strane druhej), môžete nastaviť alebo pridať príkaz «históriou -a» na možnosť «PROMPT_COMMAND», ktorý obsahuje príkazy, ktoré sú vykonané pred každou novou príkazového riadku.

Ale pre správne fungovanie takého tímu je potrebný trik. V histórii súboru by mal okamžite pridať «históriou -a», zrušte aktuálne histórii tejto relácii pomocou «historicky -c», potom si prečítajte upravený históriu súboru a vrátiť sa späť do histórie tejto relácie pomocou «historicky -r».

Vyzerá to takto:

export PROMPT_COMMAND = "história -a; história -c; história -r; $ PROMPT_COMMAND"

Po dokončení uložte zmeny a zatvorte súbor.

Ak chcete zmeny aktivovať, odhláste sa a prihláste sa znova alebo použite zdroj príkazu tento súbor, písanie:

zdroj ~ / .bashrc

Zobraziť predchádzajúcu históriu vtresnúť

Ak chcete zobraziť históriu v Bash, použite príkaz "history". Zobrazuje predchádzajúce príkazy príkazom na reťazec. Vo väčšine prípadov by mal vygenerovať počet riadkov nastavených hodnotou "HISTSIZE". Momentálne nie sú toľko tímov:

histórie
. . .
  43 man bash
  44 man fc
  45 man bash
  46 fc-1-10
  47 histórie
  48 ls -a
  49 vim .bash_history
  50 histórie
  História človeka
  52 história 10
  53 histórie

Tiež vytlačí poradové číslo príkazu. Každý tím je spojený s číslom pre jednoduché použitie.

Výstup je možné skrátiť zadaním počtu príkazov po "histórii". Ak chcete napríklad zobraziť iba posledných 5 zadaných príkazov, môžete zadať:

história 5
  50 histórie
  História človeka
  52 história 10
  53 histórie
  54 história 5

Ak chcete nájsť všetky príkazy v histórii, ktoré obsahujú určitý reťazec, môžete jednoducho použiť znak grep za znakom zvislej lišty. Ak napríklad chcete nájsť riadky obsahujúce "cd", zadajte:

história grep cd
  33 cd Obrázky /
  37 cd ..
  39 cd Desktop /
  61 cd / usr / bin /
  68 cd
  83 cd / etc /
  86 cd resolvconf /
  90 cd resolv.conf.d /

Spúšťanie príkazov z histórie v Bash

Naučiť sa odvodiť príkazy je, samozrejme, užitočné, ale s výnimkou používania poradového čísla príkazu to dáva takmer nič. Ak chcete zavolať akýkoľvek predchádzajúci príkaz, musíte použiť špeciálnu syntax.

Môžete zavolať ktorýkoľvek z predchádzajúcich príkazov zadaním jeho čísla a umiestnením pred ním výkričník   "!". Na základe vyššie uvedeného príkladu histórie môžete rýchlo zobraziť prevádzkovú stránku manuálu jednoducho zadaním:

To okamžite vyvolá a vykoná príkaz v histórii na čísle 51.

Môžete tiež spustiť príkazy týkajúce sa aktuálnej pozície. To sa robí pomocou syntaxe "! -N", kde "n" musí byť nahradené číslom príkazu, ktorý má byť vykonaný.

Napríklad, ak potrebujete zobraziť a vykonať predposledný volaný príkaz, môžete zadať "! -2". Takže v prípade, že obsah bol odvodený dlhú cestu k adresáru, a potom zadajte príkaz echo, a teraz musíme priviesť späť cestu relácie môže vyzerať napríklad takto:

ls / usr / share / doc / manpages
  echo ahoj
  ! -2 # zoznam obsahov znova

Ak chcete znova spustiť posledný príkaz, namiesto použitia "! -1" v bash, môžete použiť "hot" príkaz "!!", ktorý vykonáva:

Mnoho ľudí to používa v prípade, že píšu príkaz, ktorý vyžaduje privilégiá sudo. Pri zadávaní "sudo !!" bude príkaz prepísaný s privilégiami sudo. Táto relácia vyzerá takto:

dotykom / etc / ahoj
  touch: nedá sa dotknúť položky `/ etc / hello ': Povolenie bolo zamietnuté
  sudo !!
  sudo touch / etc / ahoj
   heslo pre demouser:

Tento príklad ukazuje inú vlastnosť tejto užitočnej syntaxe. V skutočnosti je to jednoduchá náhrada, takže v prípade potreby môže byť zahrnutá do iných tímov.

Prechádzanie príbehu v Bash

Môžete posúvať príbeh v Bash a zobraziť každý nasledujúci príkaz v príkazovom riadku na úpravu niekoľkými spôsobmi.

Najobvyklejším spôsobom je stlačiť tlačidlo so šípkou hore na príkazovom riadku.

Každé ďalšie stlačenie tohto tlačidla vráti krok späť do histórie príkazového riadku. Ak chcete zmeniť smer, použite šípku nadol, ktoré posúva históriu až na posledný príkazový riadok.

Namiesto klávesov so šípkami môžete použiť klávesové skratky: "CTRL-p" pre posúvanie histórie späť a "CTRL-n" pre posun vpred.

Ak sa chcete vrátiť k aktuálnemu príkazovému riadku, môžete použiť "Meta-\u003e". Vo väčšine prípadov "meta" a symbol "\u003e" nahradia kombináciu "ALT-Shift-." To je veľmi užitočné v prípade prúdu príkazového riadku   je dosť ďaleko.

Ak chcete prejsť na prvý riadok príbehu, použite spätný manéver, "Meta-<». Обычно это сочетание замещает «ALT-Shift-,».

Ako súhrn je nasledujúci zoznam najdôležitejších navigačných kľúčov pre históriu:

  • Šípka nahor: posúva históriu späť;
  • CTRLp: Prejdite históriu späť;
  • Tlačidlo šípky dole: posúva príbeh dopredu;
  • CTRLn: posúvanie príbehu dopredu;
  • ALTsmena-. : prejdite na koniec príbehu (na posledný zadaný príkaz);
  • ALTsmena-, : prejdite na začiatok príbehu (do prvého zadaného príkazu).

História vyhľadávania vtresnúť

Aj keď používate "históriu grep "je najjednoduchší spôsob vykonávania niektorých procedúr, jeho práca v mnohých situáciách je ďaleko od ideálneho.
  Bash má funkciu vyhľadávania histórie. Napríklad vyhľadávanie histórie sa často používa v opačnom smere (najprv sú zobrazené najaktuálnejšie výsledky) pomocou klávesovej skratky "Ctrl-r".

Napríklad môžete zadať "Ctrl-r" a zadajte časť predchádzajúceho príkazu. Je potrebné prijať iba časť tímu. Ak sa zadaná hodnota zhoduje s nepotrebným príkazom, môžete znova stlačiť "Ctrl-r", aby ste zobrazili nasledujúci výsledok.

Ak bol požadovaný príkaz omylom preskočený, môžete zmeniť smer vyhľadávania pomocou kombinácie "CTRL-s". Toto je tiež užitočné pri navigácii v histórii popísanej v predchádzajúcej kapitole, pri hľadaní dopredu.

poznámka: v mnohých termináloch kombinácia "CTRL-s" blokuje reláciu terminálu. To znamená, že ak sa ho pokúsite použiť na vyhľadávanie, terminál "zmrazí". Ak chcete odomknúť reláciu, stačí zadať "Ctrl-q".

Tieto funkcie pozastavenia a obnovenia relácie vo väčšine moderných terminálov nie sú potrebné, pretože je možné ich vypnúť zadaním:

Teraz je potrebné pridať tento súbor do súboru ~ / .bashrc, aby ste zabezpečili, že príkaz bude vykonávaný nepretržite.

Táto kombinácia vyhľadávania bude fungovať správne.

Vyhľadajte zadanú časť príkazu

Obvyklým spôsobom vyhľadávania je zadanie časti príkazu, zistenie, či bol spustený skôr a potom ho nájdete v histórii.

Ako správne vykonať vyhľadávanie pomocou údajov, ktoré už boli zadané v príkazovom riadku? Presuňte kurzor na hornom riadku pomocou «CTRL + A», potom sa nazývajú spätné vyhľadávanie príbehy «CTRL + R», vložte aktuálny riadok v hľadaní pomocou «CTRL-y», a znovu použiť «CTRL + R» spätné vyhľadávanie.

Napríklad je potrebné aktualizovať vyrovnávaciu pamäť balíkov v Ubuntu. Tento príkaz bol už vykonaný, ale skontrolovať, či je to tak, môžete zadať sudo:

V tejto fáze je vidieť, že tento príkaz sa už nedávno uskutočnil. Teraz kliknite na:

Tým sa presunie kurzor na začiatok riadku.

Toto spôsobí opačné sekvenčné vyhľadávanie v histórii. Táto akcia má vedľajší účinok - kopíruje celý obsah príkazového riadku, ktorý je po aktuálnej pozícii kurzora a vloží ho do schránky.

Týmto sa do vyhľadávania vkladajú novopopísané príkazy z príkazového riadku.

Teraz musíte znova spustiť spätné vyhľadávanie histórie a nájsť príkazy, ktoré obsahujú zadanú časť.

Spočiatku sa zdá, že tento postup je dosť mätúci, ale zvykne si zvyknúť. Je to mimoriadne užitočné v tých okamihoch, kedy bola predstavená polovica zložitých príkazov a teraz je potrebný príbeh na dokončenie práce.

Okrem toho sa všetky tieto akcie môžu zlúčiť do jedného:

Pokročilé používanie histórie v bash

Po preskúmaní základných techník používania histórie, existujúcich v bash. Medzi nimi:

  • !! : výstup posledného príkazu;
  • ! n: prejdite na príkaz so sériovým číslom "n";
  • !- n: Choďte do tímu, ktorý bol pred posledným príkazom očíslovaný "n".

Identifikátory udalostí

Vymenúvajú sa tri kombinácie uvedené vyššie identifikátory udalostí, V skutočnosti je to spôsob, ako volať predchádzajúce tímy z histórie pomocou určitých kritérií.

Napríklad, ak chcete spustiť posledný príkaz "ssh", môžete použiť:

Táto akcia vyhľadáva reťazce, ktoré začínajú "ssh". Ak chcete nájsť sekvenciu, ktorá nie je na začiatku príkazu, môžete zadať znak "?" Pred a po sekvencii. Napríklad, ak chcete zopakovať posledný príkaz "apt-cache search", musíte zadať:

Môžete tiež použiť varianty výstupu posledného príkazu ("!!"). Vykonajte rýchle vyhľadávanie a nahraďte ho zadaním:

^ pôvodný ^ náhradný ^

Týmto sa volá posledný príkaz (napríklad "!!"), hľadá zhodu s hodnotou "originál" a nahradí ho hodnotou "náhrada". Potom bude príkaz vykonaný.

Je veľmi vhodné v prípade potreby použiť na opravu pravopisných chýb. Napríklad:

mačka / etc / hosst
  cat: / etc / hosst: Žiadny takýto súbor alebo adresár
  ^ hosst ^ hosts ^

Determinanty slov

Po identifikátoroch udalostí môžete pridať znak dvojbodky (:) a potom zadajte slovo kvalifikátorvyberte časť zodpovedajúceho príkazu.

Toto funguje tým, že sa tím rozdelí na "slová" - oblasti oddelené medzerami. Tým sa otvárajú nové príležitosti na interakciu s parametrami príkazu.

Samotný príkaz je očíslovaný nulou, prvý argument je 1 a tak ďalej.

Môžete napríklad zobraziť obsah adresára a potom ho zmeniť takto:

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

Ak sa táto operácia vykoná s posledným spusteným príkazom, táto kombinácia sa môže komprimovať odstránením druhého "!" A dvojbodka:

To bude fungovať rovnakým spôsobom.

Prvý argument možno označiť symbolom "^" a posledný argument je "$". Tieto znaky sú oveľa užitočnejšie pri práci s rozsahmi, nie s poradovými číslami. Môžete napríklad extrahovať všetky argumenty z predchádzajúceho príkazu na nový z troch spôsobov:

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

Hviezdičkový znak "*" sa používa na označenie výstupu akýchkoľvek údajov okrem pôvodného príkazu. Podobne môžete použiť číslo slova, za ktorým nasleduje znak *, aby ste uviedli, že je potrebné zahrnúť aj všetko po zadanom slove.

modifikátory

Posledná vec, ktorú možno pridať k správaniu priradenej línie histórie, je zmeniť správanie hovoru na ovládanie samotného textu. Modifikátory sa pridávajú po dodatočnom ":" na konci riadku.

Napríklad skráti cestu k súboru, môžete použiť modifikátor «H» (čo znamená «hlavy»), ktorý zachytáva cestu k poslednému symbolu lomkou (/). Pamätajte, že toto nebude fungovať správne, ak potrebujete skrátiť cestu k adresáru, ktorý končí znakom lomítka.

Toto sa často používa pri zmene súboru a potrebujete prejsť do jeho adresára, aby ste mohli vykonávať operácie so súbormi, ktoré sú s ním spojené.

mačka / usr / share / doc / manpages / copyright

Potom prejdite do adresára. To sa dá vykonať príkazom "cd" na reťazci parametrov, "cut off" názov súboru na konci.

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

Môžete tiež vykonať opačný postup, skracuje cestu a používať len názov súboru, pomocou modifikátor «t» (čo znamená «chvost»). Napríklad môžete vyhľadať posledný príkaz "mačka", pomocou príznaku "t" necháte iba názov súboru.

Môžete tiež nechať úplnú cestu a tím bude správne pracovať. Ale niekedy nie. Napríklad pri práci so súbormi, prílohy v niekoľkých podadresárov aktuálneho adresára, použite relatívnu cestu a zmeniť podadresár «h» modifikátor, potom použiť relatívnu cestu k súboru už nebude fungovať.

Ďalším veľmi užitočným modifikátorom je "r", čím sa odstráni prípona zadnej časti formulára ".xxx". Toto je užitočné, ak rozbaľte súbor a potom prejdete do adresára pomocou príkazu "tar". Za predpokladu, že názov adresára je rovnaký ako názov súboru, môžete vykonať niečo ako:

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

Ak tarball používa namiesto tgz rozšírenie tar.gz, zadajte modifikátor dvakrát:

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

Podobný modifikátor "e" odstraňuje všetko okrem rozšírenia chvosta.

Ak sa volaný príkaz jednoducho nachádza a nevykoná, môžete použiť modifikátor "p", aby sa bash zobrazil znovu na príkaz.

To je užitočné, ak potrebujete zabezpečiť správny výber príbehu. Okrem toho tento modifikátor zadá vybraný príkaz do histórie v prípade, že potrebuje ďalšie úpravy.

Napríklad príkaz "nájsť" bol predtým spustený v domovskom adresári, ale teraz musí byť spustený z tohto adresára (/). Ak chcete skontrolovať, či je výmena vykonaná správne, je to možné nasledovným spôsobom (ak má tento príkaz číslo 119):

nájsť ~ -name "file1" # original command
  119: 0: p / l 119: 2 *: str
  nájsť / -name "file1"

Ak bol príkaz vytlačený správne, môžete ho spustiť pomocou:

Existuje jednoduchší spôsob vykonávania výmeny v príkazoch: môžete použiť syntax s / original / new /

Napríklad, vyššie uvedená akcia môže byť vykonaná nasledovne:

Toto nahradí prvú inštanciu vyhľadávacieho vzoru. Ak chcete nahradiť každý zápas, použite modifikátory "g" a "s". Napríklad, ak chcete vytvoriť súbory s názvom "file1", "file2" a "file3" a adresáre "dir1", "dir2", "dir3"

dotykový súbor1 súbor2 súbor3
  mkdir !!: *: gs / súbor / dir /

výsledok

Táto príručka vám pomôže zvládnuť základné pojmy používania histórie. Samozrejme, niektoré z popísaných funkcií budú v zriedkavých prípadoch užitočné, ale vedieť o nich a byť schopné ich používať je tiež potrebné.

Vo všeobecnosti všetky opísané možnosti použitia histórie môžu výrazne zrýchliť prácu.

   Tagy:,

V systéme Linux existuje veľmi silný a užitočný príkaz na vyhľadávanie súborov - príkaz find. Má veľa možností na vyhľadávanie súborov, avšak niekedy je pre začiatočníkov v mnohých ohľadoch ťažké kvôli svojej syntaxi.

Jednoduchý príklad použitia nájsť

Po prvé, pozrime sa na jednoduchý príklad použitia príkazu nájsť pre vyhľadávanie súborov v počítači s názvom config. Hľadáme konfiguračné súbory od koreňového adresára /. K tomu musíte spustiť príkaz ako root, aby ste mali dostatočné prístupové práva, inak dostanete správu "Povolenie odmietnuté". Takže vykonajte príkaz:

Nájdite / -name config -print

Príkaz znamená nasledovné: vyhľadávanie súborov s názvom config (-name config), začínajúc adresou / (prvý parameter príkazu find) a názvy výstupných súborov na obrazovku (argument -print). Všimol som si, že vyhľadávanie je rekurzívne, to znamená, že pri vyhľadávaní sa pozerajú všetky vnorené adresáre. Ako môžete vidieť, všetko je jednoduché. Teraz zoberte do úvahy syntax príkazu a pokračujte v preskúmaní jeho hlavných argumentov.

Syntax pre nájdenie

Všeobecná syntax nájdeného príkazu, ktorý nájdete v referenčnej príručke, sa nemusí zdať veľmi jednoduchý, takže vám poskytnem pohodlnejší spôsob čítania:

Nájsť cestu [možnosti] [kritériá vyhľadávania] [akcie na súbory]

cesta

Ako vyhľadávacia cesta môžete použiť absolútne a relatívne cesty, ako aj zoznam ciest oddelených medzerou.

možnosti

Možnosti príkazu find sú zadané začínajúc znakom "-", za ktorým nasleduje názov možnosti. Pozrime sa na základné možnosti.

Kritériá vyhľadávania

Príkaz find môže mať niekoľko vyhľadávacích kritérií (tiež nazývaných testy). Každé kritérium je špecifická skúšobná podmienka, ktorá vráti buď pravdivú alebo nepravdivú. To možno porovnať s podmienkami vyhlásenia if v programovaní. V procese spracovania ďalšieho súboru nájde príkaz find znova každé kritérium a ak ďalšie kritérium vráti hodnotu false, príkaz find nájde nasledujúci súbor. Existuje veľa kritérií pre príkaz find, zvážime len niektoré z nich.

-atime NNaposledy, kedy bol súbor sprístupnený pred N dňami.
-čas NPosledná zmena súboru bola pred N dňami.
-name šablónuNázov súboru (názov modelu) bez zadania cesty. Odporúča sa, aby sa šablóna vždy uviedla do úvodzoviek.
-newer otherfileSúbor bol zmenený neskôr ako druhý súbor.
-size [±] NVeľkosť súboru je N blokov, ak je zadané + N, veľkosť súboru je väčšia ako N, -N - menej. Symbol po N označuje veľkosť bloku. b - 512 bajtov, s - bajt, w - 2 bajty, k - kilobajty, M - megabajty, G - gigabajty.
-typ CSúbor typu C. Najčastejšie používané hodnoty pre C sú: d - adresár, f - súbor.
-užívateľské menoSúbor patrí používateľovi s názvom UserName.

Príklady použitia príkazu find pomocou kritérií

  nájsť. -type f -name "~ *" -print

Nájdite v aktuálnom adresári bežné súbory (nie adresáre), ktorých meno začína znakom "~".

Nájsť. -newer file.bak -type f -print

Nájsť v aktuálnych adresárových súboroch upravené neskôr ako file.bak.

prevádzkovatelia

Kritériá je možné kombinovať pomocou operátorov. Nižšie sú operátori v poradí znižovania ich priority.

Vo všeobecnosti platí, že pri používaní operátorov sa kritériá kontrolujú v poradí podľa priority. Poradie môžete zmeniť pomocou zátvoriek. Zápichy by sa mali vybrať pomocou spätného lomka.

Príklady použitia príkazu find pomocou operátorov

  nájsť. \\ (- meno "~ *" - alebo -name "temp *" \\) -type f -print

Nájdite v aktuálnych adresárových súboroch začínajúcich znakom "~" alebo "c" temp a sú len bežné súbory (-type f), nie adresáre.

Nájsť. -maxdepth 1 \\ (\\ (- veľkosť + 600M - a -size -1G \\) -nebo -name "* .mpeg" \\) - a -typ f

Nájsť aktuálny adresár (nie spracovanie podadresára - -maxdeph 1) pravidelné súbory (-Film f) väčšie ako 600 MB a 1 GB (Vel) alebo súbory, ktorých názov zakanchivayuschietsya na «MPEG» (name).

Činnosti na súbory

Po vykonaní príkazu nájsť môžete vykonať rôzne akcie na nájdených súboroch. Pozrime sa na tie hlavné.

V spustiteľných príkazoch môžete parameter () použiť ako argument, ktorý sa nahradí cestou k aktuálnemu súboru.

Príklady použitia príkazu find s akciami

  nájsť. -size + 1000c -type f -ls

Nájdite bežné súbory väčšie ako 1000 bajtov v aktuálnom adresári a spustite príkaz ls -dils na ne (ls action).

Nájsť. -name "~ *" - typ f -ok rm () \\;

Nájdite v aktuálnom adresári bežné súbory začínajúce znakom tilde "~" a pre každý súbor požiadajte o jeho odstránenie (spustenie príkazu rm).

záver

V poznámke sme sa pozreli na veľmi dôležitý a užitočný Linux find príkaz, ktorý poskytuje takmer neobmedzené možnosti pre vyhľadávanie súborov podľa mnohých kritérií a šablón. A pomocou príkazov (akcií) môžete vyhľadávať súbory a vykonávať akékoľvek operácie na nich.

Pokračovanie v téme:
robot

Je ťažké povedať, ktorý model smartfónu je najpopulárnejší a najkvalitnejší. Niekto má záujem používať telefóny, ktoré bežia v operačnom systéme Android, a niekto ...