Նյութը, որի թարգմանությունը հրապարակում ենք այսօր, նախատեսված է նրանց համար, ովքեր ցանկանում են տիրապետել Linux հրամանի տողին։ Այս գործիքը արդյունավետ օգտագործելու ունակությունը կարող է շատ ժամանակ խնայել: Մասնավորապես, այստեղ կխոսենք Bash shell-ի և 21 օգտակար հրամանների մասին։ Մենք նաև կխոսենք այն մասին, թե ինչպես օգտագործել հրամանների դրոշները և Bash անունները երկար հրահանգների մուտքագրումն արագացնելու համար:
→
Պայմաններ
Երբ դուք սովորում եք աշխատել Linux հրամանի տողի հետ, դուք կհանդիպեք բազմաթիվ հասկացությունների, որոնք օգտակար են նավարկելու համար: Նրանցից ոմանք, ինչպիսիք են «Linux»-ը և «Unix»-ը, կամ «shell»-ը և «terminal»-ը, երբեմն շփոթվում են: Եկեք խոսենք այս և այլ կարևոր տերմինների մասին:
Այժմ, երբ մենք անդրադարձանք կարևոր տերմիններին, ես ուզում եմ նշել, որ այստեղ կօգտագործեմ «Bash», «shell» և «command line» տերմինները, ինչպես նաև «տեղեկատու» և «թղթապանակ» տերմինները:
Ստանդարտ stdin
), ստանդարտ ելք (ստանդարտ ելք, stdout
) և ստանդարտ սխալի ելք (ստանդարտ սխալ, stderr
).
Եթե ստորև տրված հրամանների օրինակում դուք կգտնեք նման բան my_whatever
- սա նշանակում է, որ այս հատվածը պետք է փոխարինվի ձեր ինչ-որ բանով: Օրինակ՝ ֆայլի անվանումը։
Այժմ, նախքան հրամանների վերլուծությանը անցնելը, որոնց նվիրված է այս նյութը, եկեք նայենք դրանց ցանկին և հակիրճ նկարագրություններին:
21 Bash հրամաններ
▍Տեղեկություն ստանալը
man
Ցուցադրում է հրամանի օգտագործման ուղեցույցը (օգնությունը):pwd
: ցուցադրում է տեղեկատվություն աշխատանքային գրացուցակի մասին:ls
: ցուցադրում է գրացուցակի բովանդակությունը:ps
: Թույլ է տալիս դիտել տեղեկատվություն գործող գործընթացների մասին:
▍Ֆայլային համակարգի մանիպուլյացիա
cd
փոխել աշխատանքային գրացուցակը:touch
: ստեղծել ֆայլ:mkdir
: ստեղծել գրացուցակ:cp
: Պատճենել ֆայլը:mv
Տեղափոխել կամ ջնջել ֆայլը:ln
: ստեղծել հղում:
▍I/O վերահղում և խողովակաշարեր
<
: վերահղումstdin
.>
: վերահղումstdout
.|
: մի հրամանի ելքը փոխանցեց մեկ այլ հրամանի մուտքին:
▍ Ֆայլերի ընթերցում
head
: կարդալ ֆայլի սկիզբը:tail
: կարդալ ֆայլի վերջը:cat
Կարդացեք ֆայլը և տպեք դրա բովանդակությունը էկրանին կամ միացրեք ֆայլերը:
▍Ֆայլերի ջնջում, գործընթացների դադարեցում
rm
Ջնջել ֆայլը:kill
: դադարեցնել գործընթացը:
▍ Որոնել
grep
: տեղեկատվության որոնում:ag
: որոնման առաջադեմ հրաման:
▍Արխիվացում
tar
Ստեղծել արխիվներ և աշխատել դրանց հետ:
Եկեք խոսենք այս հրամանների մասին ավելի մանրամասն:
Թիմի մանրամասները
Սկսենք, եկեք զբաղվենք հրամաններով, որոնց արդյունքները թողարկվում են ձևով stdout
. Սովորաբար այս արդյունքները հայտնվում են տերմինալի պատուհանում:
▍Տեղեկություն ստանալը
man command_name
Ցուցադրել հրամանի ուղեցույցը, այսինքն՝ օգնության տեղեկատվությունը:
pwd
: ցուցադրել ընթացիկ աշխատանքային գրացուցակի ուղին: Հրամանի տողի հետ աշխատելու ընթացքում օգտատերը հաճախ պետք է պարզի, թե կոնկրետ որտեղ է գտնվում համակարգում:
ls
: ցուցադրել գրացուցակի բովանդակությունը: Այս հրամանը նույնպես օգտագործվում է բավականին հաճախ։
ls -a
: ցույց տալ թաքնված ֆայլերը: դրոշը կիրառվում է այստեղ -a
թիմերը ls
. Դրոշների օգտագործումը օգնում է հարմարեցնել հրամանների վարքագիծը:
ls -l
Ցուցադրել մանրամասն տեղեկություններ ֆայլերի մասին:
Նշենք, որ դրոշները կարող են համակցվել: Օրինակ - այսպես. ls -al
.
ps
Դիտեք գործող գործընթացները:
ps -e
Ցուցադրել տեղեկատվությունը բոլոր գործող գործընթացների մասին, այլ ոչ միայն նրանց, որոնք կապված են ընթացիկ օգտագործողի կեղևի հետ: Այս հրամանը հաճախ օգտագործվում է այս ձևով:
▍Ֆայլային համակարգի մանիպուլյացիա
cd my_directory
փոխել աշխատանքային գրացուցակը my_directory
. Գրացուցակի ծառի մեկ մակարդակով վեր բարձրանալու համար օգտագործեք my_directory
հարաբերական ճանապարհ ../
.
cd հրաման
touch my_file
: ֆայլի ստեղծում my_file
տրված ճանապարհով:
mkdir my_directory
: ստեղծել թղթապանակ my_directory
տրված ճանապարհով:
mv my_file target_directory
: տեղափոխել ֆայլը my_file
դեպի թղթապանակ target_directory
. Թիրախային գրացուցակը նշելիս դուք պետք է օգտագործեք դրա բացարձակ ուղին (և ոչ թե նման շինարարություն ../
).
թիմը mv
կարող է օգտագործվել նաև ֆայլեր կամ թղթապանակներ վերանվանելու համար: Օրինակ, այն կարող է այսպիսի տեսք ունենալ.
mv my_old_file_name.jpg my_new_file_name.jpg
: ստեղծել ֆայլի պատճեն
cp my_source_file target_directorymy_source_file
և դրեք թղթապանակի մեջ target_directory
.
ln -s my_source_file my_target_file
: ստեղծել խորհրդանշական հղում my_target_file
մեկ ֆայլի համար my_source_file
. Եթե փոխեք հղումը, կփոխվի նաև բնօրինակ ֆայլը։
Եթե ֆայլը my_source_file
կջնջվի, ապա my_target_file
կմնա։ Դրոշ -s
թիմերը ln
թույլ է տալիս ստեղծել հղումներ դիրեկտորիաների համար:
Այժմ խոսենք I/O վերահղման և խողովակաշարերի մասին։
▍I/O վերահղում և խողովակաշարեր
my_command < my_file
փոխարինում է ստանդարտ մուտքային ֆայլի նկարագրիչը (stdin
) մեկ ֆայլի համար my_file
. Սա կարող է օգտակար լինել, եթե հրամանը սպասում է ստեղնաշարից որոշակի մուտքագրման, և այս տվյալներն արդեն պահված են ֆայլում:
my_command > my_file
Վերահղում է հրամանի արդյունքները, այսինքն այն, ինչ սովորաբար մտնում է stdout
և թողարկել էկրանին, ֆայլին my_file
. Եթե ֆայլը my_file
գոյություն չունի - ստեղծվում է: Եթե ֆայլը գոյություն ունի, այն վերագրվում է:
Օրինակ՝ հրամանը կատարելուց հետո ls > my_folder_contents.txt
կստեղծվի տեքստային ֆայլ, որը պարունակում է ընթացիկ աշխատանքային գրացուցակում եղածի ցանկը:
Եթե խորհրդանիշի փոխարեն >
օգտագործել շինարարությունը >>
, ապա, պայմանով, որ ֆայլը, որին վերահղված է հրամանի ելքը, գոյություն ունի, այս ֆայլը չի վերագրվի։ Տվյալները կավելացվեն այս ֆայլի վերջում:
Հիմա եկեք նայենք տվյալների խողովակաշարի մշակմանը:
Մի հրամանի ելքը սնվում է մեկ այլ հրամանի մուտքագրման մեջ: Դա նման է մի խողովակին մյուսին միացնելուն
first_command | second_command
՝ փոխակրիչի խորհրդանիշ, |
, օգտագործվում է մի հրամանի ելքը մեկ այլ հրաման ուղարկելու համար։ Ինչին է ուղարկում նկարագրված կառուցվածքի ձախ կողմի հրամանը stdout
, Ընկնել stdin
հրամանը խողովակաշարի խորհրդանիշի աջ կողմում:
Linux-ում տվյալները կարող են փոխանցվել՝ օգտագործելով գրեթե ցանկացած լավ ձևավորված հրաման: Հաճախ ասում են, որ Linux-ում ամեն ինչ խողովակաշար է:
Դուք կարող եք շղթայել մի քանի հրամաններ՝ օգտագործելով խողովակաշարի խորհրդանիշը: Այն կարծես այսպիսին է.
first_command | second_command | third_command
Մի քանի հրամաններից բաղկացած խողովակաշարը կարելի է համեմատել խողովակաշարի հետ
Նկատի ունեցեք, որ երբ հրամանը դեպի ձախ է խորհրդանիշ |
, ելքային ինչ-որ բան stdout
, այն, ինչ նա թողարկում է, անմիջապես հասանելի է որպես stdin
երկրորդ թիմ. Այսինքն՝ ստացվում է, որ խողովակաշարն օգտագործելով՝ գործ ունենք հրամանների զուգահեռ կատարման հետ։ Երբեմն դա կարող է հանգեցնել անսպասելի արդյունքների: Այս մասին մանրամասները կարելի է կարդալ
Այժմ խոսենք ֆայլերից տվյալների ընթերցման և էկրանին ցուցադրելու մասին:
▍ Ֆայլերի ընթերցում
head my_file
: կարդում է տողերը ֆայլի սկզբից և տպում դրանք էկրանին: Դուք կարող եք կարդալ ոչ միայն ֆայլերի բովանդակությունը, այլև այն, ինչ հրամաններ են տալիս stdin
օգտագործելով այս հրամանը որպես խողովակաշարի մաս:
tail my_file
: կարդում է տողերը ֆայլի վերջից: Այս հրամանը կարող է օգտագործվել նաև խողովակաշարում:
Գլուխը (գլուխը) առջևում է, իսկ պոչը (պոչը) հետևում է
Եթե դուք աշխատում եք տվյալների հետ՝ օգտագործելով pandas գրադարանը, ապա հրամանները head
и tail
պետք է ծանոթ լինի ձեզ: Եթե դա այդպես չէ, ապա նայեք վերը նշված նկարին, և դուք հեշտությամբ կհիշեք դրանք:
Մտածեք ֆայլերը կարդալու այլ եղանակներ, եկեք խոսենք հրամանի մասին cat
.
Թիմ cat
կա՛մ տպում է ֆայլի բովանդակությունը էկրանին, կա՛մ միացնում է բազմաթիվ ֆայլեր: Դա կախված է նրանից, թե քանի ֆայլ է փոխանցվում այս հրամանին, երբ կանչվում է:
կատու հրաման
cat my_one_file.txt
: երբ մեկ ֆայլ փոխանցվում է այս հրամանին, այն թողարկում է այն stdout
.
Եթե դուք նրան տալիս եք երկու կամ ավելի ֆայլ, ապա այն այլ կերպ է վարվում:
cat my_file1.txt my_file2.txt
Ստանալով մի քանի ֆայլ որպես մուտքագրում, այս հրամանը միացնում է դրանց բովանդակությունը և ցուցադրում այն, ինչ տեղի է ունեցել այնտեղ stdout
.
Եթե ֆայլերի միացման արդյունքը պետք է պահպանվի որպես նոր ֆայլ, կարող եք օգտագործել օպերատորը >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Հիմա եկեք խոսենք այն մասին, թե ինչպես ջնջել ֆայլերը և դադարեցնել գործընթացները:
▍Ֆայլերի ջնջում, գործընթացների դադարեցում
rm my_file
: ջնջել ֆայլը my_file
.
rm -r my_folder
: ջնջում է թղթապանակը my_folder
և դրա պարունակած բոլոր ֆայլերն ու թղթապանակները: Դրոշ -r
ցույց է տալիս, որ հրամանը կաշխատի ռեկուրսիվ ռեժիմով:
Որպեսզի համակարգը չպահանջի հաստատում ամեն անգամ, երբ ֆայլը կամ թղթապանակը ջնջվում է, օգտագործեք դրոշը -f
.
kill 012345
: Դադարեցնում է նշված գործարկման գործընթացը՝ ժամանակ տալով նրբորեն անջատելու համար:
kill -9 012345
Հարկադրաբար դադարեցնում է նշված գործարկման գործընթացը: Դիտել դրոշը -s SIGKILL
նշանակում է նույնը, ինչ դրոշը -9
.
▍ Որոնել
Տվյալների որոնման համար կարող եք օգտագործել տարբեր հրամաններ: Մասնավորապես - grep
, ag
и ack
. Այս հրամանների հետ մեր ծանոթությունը սկսենք grep
. Սա ժամանակի փորձարկված, հուսալի հրաման է, որը, սակայն, ավելի դանդաղ է, քան մյուսները և այնքան էլ հարմար չէ օգտագործելու համար, որքան նրանք:
grep հրամանը
grep my_regex my_file
: որոնումներ my_regex
в my_file
. Եթե համընկնում է գտնվել, ամբողջ տողը վերադարձվում է յուրաքանչյուր համընկնման համար: Կանխադրված my_regex
վերաբերվում է որպես կանոնավոր արտահայտություն:
grep -i my_regex my_file
Խուզարկությունը կատարվում է առանց տառատեսակների:
grep -v my_regex my_file
: վերադարձնում է բոլոր տողերը, որոնք չեն պարունակում my_regex
. Դրոշ -v
նշանակում է ինվերսիա, այն հիշեցնում է օպերատորին NOT
, հայտնաբերվել է բազմաթիվ ծրագրավորման լեզուներում։
grep -c my_regex my_file
Վերադարձնում է որոնման օրինաչափության ֆայլում հայտնաբերված համընկնումների քանակի մասին տեղեկությունները:
grep -R my_regex my_folder
: կատարում է ռեկուրսիվ որոնում նշված թղթապանակում և դրանում տեղադրված թղթապանակներում տեղակայված բոլոր ֆայլերում:
Հիմա խոսենք թիմի մասին ag
. Նա եկավ ավելի ուշ grep
, ավելի արագ է, դրա հետ ավելի հարմար է աշխատել։
ag հրամանը
ag my_regex my_file
: վերադարձնում է տեղեկատվություն տողերի համարների և հենց այն տողերի մասին, որոնցում հայտնաբերվել են համընկնումներ my_regex
.
ag -i my_regex my_file
Խուզարկությունը կատարվում է առանց տառատեսակների:
Թիմ ag
ավտոմատ կերպով մշակել ֆայլը .gitignore
և ելքից բացառում է այն, ինչ գտնվել է այդ ֆայլում թվարկված թղթապանակներում կամ ֆայլերում: Շատ հարմարավետ է։
ag my_regex my_file -- skip-vcs-ignores
Ավտոմատ տարբերակի վերահսկման ֆայլերի բովանդակությունը (օրինակ .gitignore
) որոնման ընթացքում հաշվի չի առնվում:
Բացի այդ, որպեսզի թիմին ասի ag
ֆայլի որ ուղիների վրա եք ուզում բացառել որոնումից, կարող եք ֆայլ ստեղծել .agignore
.
Այս բաժնի սկզբում մենք նշեցինք հրամանը ack
. Թիմեր ack
и ag
շատ նման են, կարելի է ասել, որ դրանք 99%-ով փոխարինելի են: Այնուամենայնիվ, թիմը ag
ավելի արագ է աշխատում, դրա համար էլ նկարագրեցի։
Հիմա խոսենք արխիվների հետ աշխատելու մասին։
▍Արխիվացում
tar my_source_directory
: միացնում է ֆայլերը թղթապանակից my_source_directory
մեկ tarball ֆայլի մեջ: Նման ֆայլերը օգտակար են ինչ-որ մեկին ֆայլերի մեծ հավաքածու փոխանցելու համար:
tar հրամանը
Այս հրամանով ստեղծված tarball ֆայլերը ընդլայնումով ֆայլեր են .tar
(Ժապավենի արխիվ): Այն փաստը, որ «tape» (ժապավեն) բառը թաքնված է հրամանի անվան մեջ և նրա ստեղծած ֆայլերի անունների ընդլայնման մեջ, ցույց է տալիս, թե որքան ժամանակ է գոյություն ունի այս հրամանը:
tar -cf my_file.tar my_source_directory
: ստեղծում է tarball ֆայլ անունով my_file.tar
թղթապանակի բովանդակությամբ my_source_directory
. Դրոշ -c
նշանակում է «ստեղծել» (ստեղծում), իսկ դրոշը -f
որպես «ֆայլ» (ֆայլ):
Ֆայլեր հանելու համար .tar
- ֆայլ, օգտագործեք հրամանը tar
դրոշներով -x
(«քաղվածք», արդյունահանում) և -f
(«ֆայլ», ֆայլ):
tar -xf my_file.tar
: հանում է ֆայլերը my_file.tar
ընթացիկ աշխատանքային գրացուցակին:
Հիմա եկեք խոսենք այն մասին, թե ինչպես կարելի է սեղմել և սեղմել .tar
- ֆայլեր.
tar -cfz my_file.tar.gz my_source_directory
այստեղ՝ օգտագործելով դրոշը -z
(«zip», սեղմման ալգորիթմ) ցույց է տալիս, որ ալգորիթմը պետք է օգտագործվի ֆայլերը սեղմելու համար gzip
(GNUzip): Ֆայլերի սեղմումը խնայում է սկավառակի տարածությունը նման ֆայլեր պահելիս: Եթե ֆայլերը նախատեսվում է, օրինակ, փոխանցել այլ օգտվողներին, դա նպաստում է նման ֆայլերի ավելի արագ ներբեռնմանը:
Unzip ֆայլը .tar.gz
կարող եք դրոշ ավելացնել -z
էքստրակտի բովանդակության հրամանին .tar
- ֆայլեր, որոնք մենք քննարկել ենք վերևում: Այն կարծես այսպիսին է.
tar -xfz my_file.tar.gz
Նշենք, որ թիմը tar
Կան շատ ավելի օգտակար դրոշներ:
Բաշի փոխանունները
Bash կեղծանունները (նաև կոչվում են կեղծանուններ կամ հապավումներ) նախատեսված են հրամանների կամ դրանց հաջորդականությունների կրճատ անուններ ստեղծելու համար, որոնց օգտագործումը սովորական հրամանների փոխարեն արագացնում է աշխատանքը։ Եթե դուք ունեք կեղծանուն bu
, որը թաքցնում է հրամանը python setup.py sdist bdist_wheel
, ապա այս հրամանը կանչելու համար բավական է օգտագործել այս կեղծանունը։
Նման կեղծանուն ստեղծելու համար պարզապես ֆայլում ավելացրեք հետևյալ հրամանը ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Եթե ձեր համակարգը չունի ֆայլը ~/.bash_profile
, ապա դուք կարող եք ստեղծել այն ինքներդ՝ օգտագործելով հրամանը touch
. Փոխանունը ստեղծելուց հետո վերագործարկեք տերմինալը, որից հետո կարող եք օգտագործել այս կեղծանունը։ Այս դեպքում երկու նիշերի մուտքագրումը փոխարինում է հրամանի երեք տասնյակից ավելի նիշերի մուտքագրմանը, որը նախատեսված է.
В ~/.bash_profile
Դուք կարող եք անուն-ազգանուններ ավելացնել հաճախ օգտագործվող ցանկացած հրամանի համար:
▍Արդյունքներ
Այս գրառման մեջ մենք անդրադարձել ենք Bash-ի 21 հայտնի հրամաններին և խոսել հրամանների այլանունների ստեղծման մասին: Եթե ձեզ հետաքրքրում է այս թեման -
Հարգելի ընթերցողներ: Ի՞նչ հրամաններ, որոնք օգտակար են սկսնակների համար, կավելացնեիք այս հոդվածում քննարկվածներին:
→
Source: www.habr.com