Өнөөдөр бидний орчуулж буй материал нь Линукс командын мөрийг эзэмшихийг хүсч буй хүмүүст зориулагдсан болно. Энэ хэрэгслийг үр дүнтэй ашиглах чадвар нь маш их цаг хэмнэх болно. Ялангуяа бид Bash shell болон 21 ашигтай командын талаар энд ярих болно. Мөн бид урт зааврыг бичих үйл явцыг хурдасгахын тулд командын туг болон Bash нэрийг хэрхэн ашиглах талаар ярилцах болно.
→
Нэр томъёо
Та Линукс командын мөртэй ажиллаж сурахын хэрээр удирдахад тустай олон ойлголттой тулгарах болно. Тэдгээрийн зарим нь "Linux", "Unix", эсвэл "shell" болон "terminal" зэрэг нь заримдаа андуурдаг. Эдгээр болон бусад чухал нэр томъёоны талаар ярилцъя.
Одоо бид чухал нэр томъёог авч үзсэнийхээ дараа би энд "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
харьцангуй зам ../
.
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 дахин чиглүүлэлт болон дамжуулах хоолойн талаар ярилцъя.
▍Оролт/гаралтын дахин чиглүүлэлт ба дамжуулах хоолой
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
дамжуулах хоолойн тэмдгийн баруун талд байгаа тушаал.
Линукс дээр өгөгдлийг ямар ч сайн боловсруулсан командыг ашиглан дамжуулах боломжтой. Линукс дээр бүх зүйл дамжуулах хоолой гэж ихэвчлэн ярьдаг.
Дамжуулах хоолойн тэмдэглэгээг ашиглан олон командыг гинжлэх боломжтой. Энэ нь дараах байдалтай харагдаж байна.
first_command | second_command | third_command
Хэд хэдэн командын шугам хоолойг дамжуулах хоолойтой харьцуулж болно
Тэмдгийн зүүн талд команд байх үед гэдгийг анхаарна уу |
, ямар нэг зүйлийг гаргана stdout
, түүний гаралт нь нэн даруй боломжтой stdin
хоёрдугаар баг. Өөрөөр хэлбэл, дамжуулах хоолойг ашиглан бид тушаалуудыг зэрэгцүүлэн гүйцэтгэх асуудлыг шийдэж байна. Заримдаа энэ нь гэнэтийн үр дүнд хүргэдэг. Энэ талаарх дэлгэрэнгүй мэдээллийг уншиж болно
Одоо файлуудаас өгөгдлийг уншиж, дэлгэцэн дээр харуулах талаар ярилцъя.
▍Файл уншиж байна
head my_file
: файлын эхнээс мөрүүдийг уншиж дэлгэцэн дээр хэвлэнэ. Та зөвхөн файлуудын агуулгыг уншихаас гадна ямар тушаалууд гарч байгааг унших боломжтой stdin
Энэ командыг дамжуулах хоолойн нэг хэсэг болгон ашиглах.
tail my_file
: файлын төгсгөлөөс мөрүүдийг уншина. Энэ тушаалыг дамжуулах хоолойд бас ашиглаж болно.
Толгой (толгой) урд, сүүл (сүүл) ард байна
Хэрэв та панда номын санг ашиглан өгөгдөлтэй ажиллаж байгаа бол тушаалууд 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 командыг авч үзсэн бөгөөд командын нэр үүсгэх талаар ярилцсан. Хэрэв та энэ сэдвийг сонирхож байгаа бол -
Эрхэм уншигчид! Эхлэгчдэд хэрэгтэй ямар тушаалуудыг та энэ нийтлэлд авч үзсэн тушаалуудад нэмэх вэ?
→
Эх сурвалж: www.habr.com