Увод
вхереис
лоцирати
која
тип
наћи
Увод
Постоји пет фајл сеарцхинг команде на Линук: whereis, locate, which, type, и find. Сваки од њих има своје карактеристике и дизајниран је за одређене сценарије претраживања. Овај водич ће вас упознати са сваком командом и показати примере употребе. За даље читање било које од ових команди, најбоље је да прегледате одговарајућу ман страницу.
whereis
whereisКоманда се користи за претраживање бинарне датотеке, изворни код, и онлајн приручник странице на неколико стандардних инсталирати директоријума за било којим именом програма наведене.
Пошто whereisне претражује сваку локацију на вашем систему, ниједна датотека из ових специфичних директоријума неће бити пронађена. Из истог разлога, брзо ћете добити резултат претраге, било да сте пронађени или не.
Такође, неће тражити оне команде које су уграђене директно у љуску.
На пример, ако желите да пронађете информације о lsкоманди, покрените следећу команду на свом терминалу:
whereis ls
Добићете повратне информације као што су:
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Резултат /bin/lsје бинарни фајл који желите да лоцирате, друге две су ман странице за lsпрограм, изворни код за lsпрограм није пронађен.
Копирајте /bin/lsдатотеку у свој кућни директоријум и у /usr/binдиректоријум, а затим поново покрените whereisкоманду:
cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls
Као што видите, само /bin/lsи /usr/bin/lsпронађени су у резултатима претраге. lsПрограм у вашем хоме директоријуму није пронађен, јер је ваш хоме директоријум није један од оних стандарда инсталл директоријуме.
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Ако покренете следећу команду:
whereis cd
Видећете излаз сличан линији испод. Није откривена бинарна датотека јер cdје то уграђена команда љуске.
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
locate
locateКоманда се користи за проналажење датотека по имену уз помоћ базе података ( /var/lib/mlocate/mlocate.db). Ова база података је у основи снимак изгледа вашег система датотека. Сви записи у овој бази података који одговарају вашем упиту биће наведени у резултатима претраге. Подразумевано, locateкоманда ће користити ваш упит за подударање са било којим делом целог имена сваког записа, укључујући име путање. Стога би број подударних датотека у резултату претраге могао бити већи него што сте очекивали.
Како база података постаје застарела, резултат претраге locateкоманде постаје мање тачан. Можда ћете приметити датотеке које више не постоје или нећете видети подударања за новокреиране датотеке. Подразумевано, mlocate.dbбаза података се аутоматски ажурира једном дневно. Можете користити updatedbкоманду да је ручно ажурирате.
Пошто се претрага врши у бази података уместо у систему датотека, брзина претраге је веома велика.
Ако покренете следећу команду:
locate ls
Добићете много записа уместо очекиваног резултата.
Да бисте учинили резултат претраге прецизнијим, можете користити -bознаку да ограничите опсег претраге, користећи свој упит да одговара само основном имену сваког записа:
locate -b "\ls"
Овог пута ћете добити локацију сваке датотеке која се тачно позива lsна вашем систему датотека:
/bin/ls
which
whichКоманда ће тражити команду коју сте навели у вредности од променљиве окружења PATHи врати први резултат по дефаулту. Ако постављате упит за псеудоним, whichкоманда ће одредити стварну команду за псеудоним пре него што извршите претрагу.
whichКоманда је такође веома брзо због своје једноставности.
Употреба whichкоманде је једноставна:
which your_command
Ако желите да прикажете све одговарајуће команде уместо прве, користите -aзаставицу:
which -a your_command
Ево примера за тражење команде која има псеудоним:
which ll
Резултат претраге би био:
alias ll='ls -l --color=auto'
/bin/ls
type
Подразумевано, typeкоманда ће назначити како ће се тумачити име команде. Могући резултати укључују псеудоним, кључну реч, функцију, уграђену компоненту или датотеку. Баш као и whereisкоманда, typeкоманда ће претраживати само неколико стандардних инсталационих директоријума да одговори на ваш упит.
Неки примери за куцање различитих команди:
Уграђена наредба љуске:
type cd
cd is a shell builtin
Бинарна датотека у систему датотека:
type sudo
sudo is /usr/bin/sudo
Алиас:
type ls
ls is aliased to `ls --color=auto'
find
Међу пет команди за претраживање датотека представљених у овом водичу, findкоманда је најмоћнија. Такође је и најспорији. За разлику од остале четири команде, findкоманда ће заправо тражити вашу датотеку на целом систему датотека, један и-чвор по један и-чвор. Помоћу findнаредбе можете користити софистициране критеријуме упита да пронађете сваку датотеку која вам је потребна, чак и додатно извршите радње на пронађеним датотекама.
Критеријуми претраге за findкоманду су превише софистицирани да би се објаснили у тако кратком чланку, уместо тога ево неколико примера.
Основни формат findкоманде:
find [path] [option] [action]
Да бисте пронашли све датотеке у радном директоријуму и свим његовим поддиректоријумима:
find
Да бисте пронашли датотеку која се зове aaaу вашем кућном директоријуму и свим његовим поддиректоријумима:
find ~ -name 'aaa'
Да бисте пронашли све датотеке у систему датотека које су измењене у последња 24 сата:
find / -mtime 0
Да бисте пронашли све датотеке у веб директоријуму и све његове поддиректоријуме који припадају кориснику nginx:
find /usr/share/nginx/html/ -user nginx
Да бисте пронашли све датотеке у радном директоријуму чије су дозволе 0744:
find -perm -0744
Да бисте пронашли датотеку са именом aaaу радном директоријуму и навели њене детаљне информације:
find -name 'aaa' -exec ls -l {} \;