[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид

Мавод, ки тарҷумаи онро мо имрӯз нашр мекунем, барои онҳое, ки мехоҳанд сатри фармони Linux-ро аз худ кунанд, пешбинӣ шудааст. Қобилияти истифодаи самараноки ин асбоб метавонад вақти зиёдеро сарфа кунад. Аз ҷумла, мо дар ин ҷо дар бораи shell Bash ва 21 фармонҳои муфид сӯҳбат хоҳем кард. Мо инчунин дар бораи чӣ гуна истифода бурдани парчамҳои фармон ва тахаллуси Bash барои суръат бахшидан ба чопкунии дастурҳои дароз сӯҳбат хоҳем кард.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид

Инчунин дар блоги мо як қатор нашрияҳоро дар бораи скриптҳои bash хонед

Шартҳои

Ҳангоми омӯхтани кор бо сатри фармони Linux, шумо бо мафҳумҳои зиёде дучор хоҳед шуд, ки барои паймоиш муфиданд. Баъзе аз онҳо, ба мисли "Linux" ва "Unix" ё "шелл" ва "терминал" баъзан ошуфта мешаванд. Биёед дар бораи ин ва дигар шартҳои муҳим сӯҳбат кунем.

Unix системаи оператсионии маъмул аст, ки аз ҷониби Bell Labs дар солҳои 1970 таҳия шудааст. Рамзи вай баста шуд.

Linux маъмултарин системаи оператсионии Unix монанд аст. Он ҳоло дар бисёр дастгоҳҳо, аз ҷумла компютерҳо истифода мешавад.

терминали (терминал), ё эмулятори терминал барномаест, ки ба системаи оператсионӣ дастрасӣ медиҳад. Шумо метавонед якчанд тирезаҳои терминалро дар як вақт кушоед.

Ҷилди (шелл) барномаест, ки ба шумо имкон медиҳад фармонҳои бо забони махсус навишташударо ба системаи оператсионӣ фиристед.

Bash маънои Bourne Again Shell мебошад. Ин забони маъмултаринест, ки барои муошират бо системаи оператсионӣ истифода мешавад. Инчунин, қабати Bash дар macOS пешфарз аст.

Интерфейси сатри фармон (Command Line Interface, CLI) усули амали мутақобилаи шахс ва компютер мебошад, ки бо истифода аз он корбар аз клавиатура фармонҳоро ворид мекунад ва компютер бо иҷрои ин фармонҳо паёмҳоро дар шакли матнӣ барои корбар намоиш медиҳад. Истифодаи асосии CLI ин гирифтани иттилооти нав дар бораи баъзе объектҳо, ба монанди файлҳо ва кор бо файлҳо мебошад. Интерфейси сатри фармонро аз интерфейси графикии корбар (GUI), ки пеш аз ҳама мушро истифода мебарад, фарқ кардан лозим аст. Интерфейси сатри фармон аксар вақт ҳамчун сатри фармон номида мешавад.

Скрипт (скрипт) як барномаи хурдест, ки пайдарпаии фармонҳои ҷилдиро дар бар мегирад. Скриптҳо ба файлҳо навишта мешаванд, онҳоро такроран истифода бурдан мумкин аст. Ҳангоми навиштани скриптҳо шумо метавонед аз тағирёбандаҳо, шартҳо, давраҳо, функсияҳо ва дигар хусусиятҳо истифода баред.

Ҳоло, ки мо истилоҳҳои муҳимро фаро гирифтем, ман мехоҳам қайд намоям, ки ман дар ин ҷо истилоҳҳои "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 роҳи нисбӣ ../.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
фармони 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_directory
: нусхаи файлро эҷод кунед my_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 файли матнӣ сохта мешавад, ки дорои рӯйхати он чизест, ки дар директорияи кории ҷорӣ мавҷуд аст.

Агар ба ҷои аломат > сохтмонро истифода баранд >>, пас, ба шарте ки файле, ки баромади фармон ба он равона карда шудааст, вуҷуд дошта бошад, ин файл дубора навишта намешавад. Маълумот ба охири ин файл илова карда мешавад.

Акнун биёед ба коркарди лӯлаи додаҳо назар андозем.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
Натиҷаи як фармон ба вуруди фармони дигар ворид карда мешавад. Ин монанди пайваст кардани як қубур ба дигар аст

first_command | second_command: рамзи конвейер, |, барои фиристодани натиҷаи як фармон ба фармони дигар истифода мешавад. Фармони дар тарафи чапи сохтори тавсифшуда ба он чӣ мефиристад stdout, афтод stdin фармон ба рости рамзи қубур.

Дар Linux, маълумотро бо истифода аз ҳама гуна фармонҳои хуб ташкил кардан мумкин аст. Аксар вақт мегӯянд, ки ҳама чиз дар Linux як қубур аст.

Шумо метавонед якчанд фармонҳоро бо истифода аз рамзи қубур занҷир занед. Чунин ба назар мерасад:

first_command | second_command | third_command

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
Қубури якчанд фармонҳоро ба қубур муқоиса кардан мумкин аст

Дар хотир доред, ки вақте ки фармон дар тарафи чапи рамзи |, чизе мебарорад stdout, он чизе ки вай мебарорад, фавран дастрас аст stdin дастаи дуюм. Яъне, маълум мешавад, ки бо истифода аз қубур мо бо иҷрои параллелии фармонҳо сарукор дорем. Баъзан ин метавонад ба натиҷаҳои ғайричашмдошт оварда расонад. Тафсилотро дар ин бора хондан мумкин аст дар ин ҷо.

Акнун биёед дар бораи хондани маълумот аз файлҳо ва дар экран намоиш додани онҳо сӯҳбат кунем.

▍Хондани файлҳо

head my_file: сатрҳоро аз аввали файл мехонад ва онҳоро дар экран чоп мекунад. Шумо метавонед на танҳо мундариҷаи файлҳоро хонед, балки инчунин чӣ фармонҳоро дар он мебарорад stdinбо истифода аз ин фармон ҳамчун қисми қубур.

tail my_file: сатрҳоро аз охири файл мехонад. Ин фармонро дар қубур низ истифода бурдан мумкин аст.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
Сар (сар) дар пеш ва дум (дум) дар паси он

Агар шумо бо истифода аз китобхонаи pandas бо маълумот кор кунед, пас фармонҳо head и tail бояд ба шумо шинос бошад. Агар ин тавр набошад, ба расми боло нигаред ва шумо онҳоро ба осонӣ дар хотир хоҳед дошт.

Роҳҳои дигари хондани файлҳоро баррасӣ кунед, биёед дар бораи фармон сӯҳбат кунем cat.

гурӯҳ cat ё мундариҷаи файлро дар экран чоп мекунад, ё якчанд файлҳоро муттаҳид мекунад. Ин аз он вобаста аст, ки ҳангоми даъват ба ин фармон чанд файл интиқол дода мешавад.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
фармони гурба

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. Ин як фармони боэътимоди вақт санҷидашуда аст, аммо нисбат ба дигарон сусттар аст ва барои истифода он қадар қулай нест.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
фармони 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, тезтар аст, кор кардан бо он кулайтар аст.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
фармони 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. Чунин файлҳо барои интиқоли маҷмӯи зиёди файлҳо ба касе муфиданд.

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид
фармони 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. Пас аз сохтани тахаллус, терминалро аз нав оғоз кунед, ки пас аз он шумо метавонед ин тахаллусро истифода баред. Дар ин ҳолат, вуруди ду аломат воридоти зиёда аз се даҳ аломати фармонро иваз мекунад, ки барои анҷуманҳо Бастаҳои Python.

В ~/.bash_profile шумо метавонед барои ҳама фармонҳои зуд-зуд истифодашаванда тахаллусҳо илова кунед.

▍Натиҷаҳо

Дар ин паём, мо 21 фармонҳои маъмули Bash-ро баррасӣ кардем ва дар бораи эҷоди тахаллуси фармон сӯҳбат кардем. Агар шумо ба ин мавзӯъ таваҷҷӯҳ дошта бошед - инак як катор нашрияхо бахшида ба Баш. Ин аст, Шумо метавонед версияи pdf-и ин нашрияҳоро пайдо кунед. Инчунин, агар шумо хоҳед, ки Bash-ро омӯзед, дар хотир доред, ки мисли ҳама гуна системаи барномасозӣ, амалия калид аст.

Хонандагони азиз! Кадом фармонҳоеро, ки барои шурӯъкунандагон муфиданд, шумо ба фармонҳое, ки дар ин мақола муҳокима шудаанд, илова мекунед?

Инчунин дар блоги мо як қатор нашрияҳоро дар бораи скриптҳои bash хонед

[хатчӯб] Bash барои шурӯъкунандагон: 21 фармонҳои муфид

Манбаъ: will.com

Илова Эзоҳ