Котормосу биз бүгүн жарыялап жаткан материал Linux командалык сабын өздөштүрүп алууну каалагандар үчүн арналган. Бул куралды натыйжалуу колдонуу мүмкүнчүлүгү көп убакытты үнөмдөй алат. Атап айтканда, биз бул жерде Bash кабыгы жана 21 пайдалуу буйруктар жөнүндө сүйлөшөбүз. Биз ошондой эле узун нускамаларды терүүнү тездетүү үчүн буйрук желектерин жана Bash лакап аттарын кантип колдонуу керектиги жөнүндө сүйлөшөбүз.
→
шарттары
Linux буйрук сабы менен иштөөнү үйрөнгөнүңүздө, багыттоо үчүн пайдалуу болгон көптөгөн түшүнүктөрдү табасыз. Алардын айрымдары, мисалы, "Linux" жана "Unix", же "shell" жана "terminal" кээде чаташып калат. Ушул жана башка маанилүү терминдер жөнүндө сүйлөшөлү.
Эми биз маанилүү терминдерди карап чыккандан кийин, мен бул жерде "Баш", "кабык" жана "буйрук сабы" терминдерин, ошондой эле "каталог" жана "папка" терминдерин алмаштырып аларымды белгилегим келет.
-стандартты, 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
(Тасма архиви). «Тасма» (лента) деген сөздүн команданын аталышында жана ал түзгөн файлдардын аталыштарынын кеңейтилишинде катылганы бул буйруктун канча убакыттан бери бар экенин көрсөтүп турат.
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). Файлды кысуу мындай файлдарды сактоодо диск мейкиндигин үнөмдөйт. Эгерде файлдарды, мисалы, башка колдонуучуларга өткөрүп берүү пландаштырылган болсо, бул файлдарды тезирээк жүктөөгө өбөлгө түзөт.
Файлды ачыңыз .tar.gz
желек кошууга болот -z
мазмунду чыгаруу буйругуна .tar
-файлдар, биз жогоруда талкуулаганбыз. Бул төмөнкүдөй көрүнөт:
tar -xfz my_file.tar.gz
Команда экендигин белгилей кетуу керек tar
Дагы көптөгөн пайдалуу желектер бар.
Bash лакап аттары
Bash лакап аттары (мындай эле лакап аттар же кыскартуулар деп аталат) буйруктардын кыскартылган аталыштарын же алардын ырааттуулугун түзүү үчүн иштелип чыккан, аларды кадимки буйруктардын ордуна колдонуу ишти тездетет. Эгер лакап атыңыз болсо bu
, бул буйрукту жашырат python setup.py sdist bdist_wheel
, анда бул буйрукту чакыруу үчүн, бул лакап атын колдонуу жетиштүү.
Мындай лакап ат түзүү үчүн файлга төмөнкү буйрукту кошуңуз ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Эгер сиздин тутумуңузда файл жок болсо ~/.bash_profile
, анда сиз буйрукту колдонуп, аны өзүңүз түзө аласыз touch
. Каймана атты жараткандан кийин, терминалды өчүрүп күйгүзүңүз, андан кийин бул лакап атты колдоно аласыз. Бул учурда эки символдун киргизүүсү команданын үч ондогон символдорунун киргизүүсүн алмаштырат, ал
В ~/.bash_profile
ар кандай көп колдонулган буйруктарга лакап аттарды кошо аласыз.
▍Натыйжалар
Бул постто биз 21 популярдуу Bash буйруктарын карап чыктык жана буйрук лакап атын түзүү жөнүндө сүйлөштүк. Эгер сиз бул темага кызыксаңыз -
Урматтуу окурмандар! Бул макалада талкуулангандарга жаңы башталгычтар үчүн пайдалуу кандай буйруктарды кошот элеңиз?
→
Source: www.habr.com