[хавчуургатай] Эхлэгчдэд зориулсан Bash: 21 хэрэгтэй тушаал

Өнөөдөр бидний орчуулж буй материал нь Линукс командын мөрийг эзэмшихийг хүсч буй хүмүүст зориулагдсан болно. Энэ хэрэгслийг үр дүнтэй ашиглах чадвар нь маш их цаг хэмнэх болно. Ялангуяа бид Bash shell болон 21 ашигтай командын талаар энд ярих болно. Мөн бид урт зааврыг бичих үйл явцыг хурдасгахын тулд командын туг болон Bash нэрийг хэрхэн ашиглах талаар ярилцах болно.

[хавчуургатай] Эхлэгчдэд зориулсан Bash: 21 хэрэгтэй тушаал

Мөн манай блогоос bash скриптүүдийн тухай цуврал нийтлэлүүдийг уншина уу

Нэр томъёо

Та Линукс командын мөртэй ажиллаж сурахын хэрээр удирдахад тустай олон ойлголттой тулгарах болно. Тэдгээрийн зарим нь "Linux", "Unix", эсвэл "shell" болон "terminal" зэрэг нь заримдаа андуурдаг. Эдгээр болон бусад чухал нэр томъёоны талаар ярилцъя.

Unix нь 1970-аад онд Bell Labs-ын бүтээсэн алдартай үйлдлийн систем юм. Түүний кодыг хаасан.

Linux хамгийн алдартай Unix-тэй төстэй үйлдлийн систем юм. Энэ нь одоо компьютер зэрэг олон төхөөрөмж дээр ашиглагдаж байна.

терминал (терминал), эсвэл терминал эмулятор нь үйлдлийн системд нэвтрэх боломжийг олгодог програм юм. Та олон терминалын цонхыг нэгэн зэрэг нээж болно.

Бүрхүүл (shell) нь тусгай хэлээр бичсэн командуудыг үйлдлийн систем рүү илгээх боломжийг олгодог програм юм.

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: холбоос үүсгэх.

▍Оролт/гаралтын дахин чиглүүлэлт ба дамжуулах хоолой

  • <: дахин чиглүүлэх 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 дахин чиглүүлэлт болон дамжуулах хоолойн талаар ярилцъя.

▍Оролт/гаралтын дахин чиглүүлэлт ба дамжуулах хоолой

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 дамжуулах хоолойн тэмдгийн баруун талд байгаа тушаал.

Линукс дээр өгөгдлийг ямар ч сайн боловсруулсан командыг ашиглан дамжуулах боломжтой. Линукс дээр бүх зүйл дамжуулах хоолой гэж ихэвчлэн ярьдаг.

Дамжуулах хоолойн тэмдэглэгээг ашиглан олон командыг гинжлэх боломжтой. Энэ нь дараах байдалтай харагдаж байна.

first_command | second_command | third_command

[хавчуургатай] Эхлэгчдэд зориулсан Bash: 21 хэрэгтэй тушаал
Хэд хэдэн командын шугам хоолойг дамжуулах хоолойтой харьцуулж болно

Тэмдгийн зүүн талд команд байх үед гэдгийг анхаарна уу |, ямар нэг зүйлийг гаргана stdout, түүний гаралт нь нэн даруй боломжтой stdin хоёрдугаар баг. Өөрөөр хэлбэл, дамжуулах хоолойг ашиглан бид тушаалуудыг зэрэгцүүлэн гүйцэтгэх асуудлыг шийдэж байна. Заримдаа энэ нь гэнэтийн үр дүнд хүргэдэг. Энэ талаарх дэлгэрэнгүй мэдээллийг уншиж болно энд.

Одоо файлуудаас өгөгдлийг уншиж, дэлгэцэн дээр харуулах талаар ярилцъя.

▍Файл уншиж байна

head my_file: файлын эхнээс мөрүүдийг уншиж дэлгэцэн дээр хэвлэнэ. Та зөвхөн файлуудын агуулгыг уншихаас гадна ямар тушаалууд гарч байгааг унших боломжтой stdinЭнэ командыг дамжуулах хоолойн нэг хэсэг болгон ашиглах.

tail my_file: файлын төгсгөлөөс мөрүүдийг уншина. Энэ тушаалыг дамжуулах хоолойд бас ашиглаж болно.

[хавчуургатай] Эхлэгчдэд зориулсан Bash: 21 хэрэгтэй тушаал
Толгой (толгой) урд, сүүл (сүүл) ард байна

Хэрэв та панда номын санг ашиглан өгөгдөлтэй ажиллаж байгаа бол тушаалууд 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 хэрэгтэй тушаал

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх