Мавод, ки тарҷумаи онро мо имрӯз нашр мекунем, барои онҳое, ки мехоҳанд сатри фармони Linux-ро аз худ кунанд, пешбинӣ шудааст. Қобилияти истифодаи самараноки ин асбоб метавонад вақти зиёдеро сарфа кунад. Аз ҷумла, мо дар ин ҷо дар бораи shell Bash ва 21 фармонҳои муфид сӯҳбат хоҳем кард. Мо инчунин дар бораи чӣ гуна истифода бурдани парчамҳои фармон ва тахаллуси Bash барои суръат бахшидан ба чопкунии дастурҳои дароз сӯҳбат хоҳем кард.
→
Шартҳои
Ҳангоми омӯхтани кор бо сатри фармони Linux, шумо бо мафҳумҳои зиёде дучор хоҳед шуд, ки барои паймоиш муфиданд. Баъзе аз онҳо, ба мисли "Linux" ва "Unix" ё "шелл" ва "терминал" баъзан ошуфта мешаванд. Биёед дар бораи ин ва дигар шартҳои муҳим сӯҳбат кунем.
Ҳоло, ки мо истилоҳҳои муҳимро фаро гирифтем, ман мехоҳам қайд намоям, ки ман дар ин ҷо истилоҳҳои "Bash", "shell" ва "хатти фармон" ва инчунин истилоҳҳои "директор" ва "папка" -ро ба ҷои ҳамдигар истифода хоҳам кард.
Стандарт 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-ро баррасӣ кардем ва дар бораи эҷоди тахаллуси фармон сӯҳбат кардем. Агар шумо ба ин мавзӯъ таваҷҷӯҳ дошта бошед -
Хонандагони азиз! Кадом фармонҳоеро, ки барои шурӯъкунандагон муфиданд, шумо ба фармонҳое, ки дар ин мақола муҳокима шудаанд, илова мекунед?
→
Манбаъ: will.com