Bu gün tərcüməsini dərc etdiyimiz material Linux komanda xəttini mənimsəmək istəyənlər üçün nəzərdə tutulub. Bu alətdən səmərəli istifadə etmək çox vaxta qənaət edə bilər. Xüsusilə, burada Bash qabığı və 21 faydalı əmr haqqında danışacağıq. Uzun təlimatların yazılmasını sürətləndirmək üçün komanda bayraqlarından və Bash ləqəblərindən necə istifadə etmək barədə də danışacağıq.
→
Şərtlər
Linux komanda xətti ilə işləməyi öyrəndikcə, naviqasiya üçün faydalı olan bir çox anlayışla qarşılaşacaqsınız. "Linux" və "Unix" və ya "shell" və "terminal" kimi bəziləri bəzən qarışdırılır. Bu və digər vacib şərtlər haqqında danışaq.
İndi vacib şərtləri əhatə etdikdən sonra qeyd etmək istəyirəm ki, mən burada "Bash", "shell" və "command line" terminlərini, həmçinin "kataloq" və "qovluq" terminlərini bir-birini əvəz edəcəm.
Standart stdin
), standart çıxış (standart çıxış, stdout
) və standart səhv çıxışı (standart xəta, stderr
).
Əgər nümunədə aşağıda veriləcək əmrlər varsa, buna bənzər bir şey tapacaqsınız my_whatever
- bu o deməkdir ki, bu fraqmenti sizin bir şeyinizlə əvəz etmək lazımdır. Məsələn, faylın adı.
İndi bu materialın həsr olunduğu əmrlərin təhlilinə davam etməzdən əvvəl onların siyahısına və qısa təsvirlərinə nəzər salaq.
21 Bash əmrləri
▍Məlumat əldə etmək
man
: Komanda üçün istifadəçi təlimatını (kömək) göstərir.pwd
: iş kataloqu haqqında məlumatı göstərir.ls
: kataloqun məzmununu göstərir.ps
: Çalışan proseslər haqqında məlumatı nəzərdən keçirməyə imkan verir.
▍Fayl sisteminin manipulyasiyası
cd
: iş kataloqunu dəyişdirin.touch
: fayl yaradın.mkdir
: kataloq yaradın.cp
: Faylı kopyalayın.mv
: Faylı köçürün və ya silin.ln
: keçid yaradın.
▍I/O yönləndirilməsi və boru kəmərləri
<
: yönləndirməstdin
.>
: yönləndirməstdout
.|
: bir əmrin çıxışını başqa bir əmrin girişinə ötürür.
▍Faylların oxunması
head
: faylın əvvəlini oxuyun.tail
: faylın sonunu oxumaq.cat
: Faylı oxuyun və onun məzmununu ekrana çap edin və ya faylları birləşdirin.
▍Faylların silinməsi, proseslərin dayandırılması
rm
: Faylı silin.kill
: prosesi dayandırın.
▍Axtar
grep
: məlumat axtarın.ag
: axtarış üçün qabaqcıl əmr.
▍Arxivləşdirmə
tar
: arxiv yaratmaq və onlarla işləmək.
Bu əmrlər haqqında daha ətraflı danışaq.
Komanda Təfərrüatları
Başlamaq üçün, nəticələri formada verilən əmrlərlə məşğul olaq stdout
. Adətən bu nəticələr terminal pəncərəsində görünür.
▍Məlumat əldə etmək
man command_name
: komanda təlimatını, yəni yardım məlumatını göstərin.
pwd
: cari iş qovluğuna gedən yolu göstərin. Komanda xətti ilə işləyərkən istifadəçi tez-tez sistemin harada olduğunu dəqiq öyrənməlidir.
ls
: kataloqun məzmununu göstərir. Bu əmr də olduqca tez-tez istifadə olunur.
ls -a
: gizli faylları göstərin. bayraq burada tətbiq olunur -a
komandalar ls
. Bayraqların istifadəsi əmrlərin davranışını fərdiləşdirməyə kömək edir.
ls -l
: Fayllar haqqında ətraflı məlumatı göstərin.
Qeyd edək ki, bayraqlar birləşdirilə bilər. Məsələn - bu kimi: ls -al
.
ps
: Çalışan proseslərə baxın.
ps -e
: Yalnız cari istifadəçi qabığı ilə əlaqəli deyil, bütün çalışan proseslər haqqında məlumatı göstərin. Bu əmr tez-tez bu formada istifadə olunur.
▍Fayl sisteminin manipulyasiyası
cd my_directory
: iş kataloqunu dəyişdirin my_directory
. Kataloq ağacında bir səviyyə yuxarı hərəkət etmək üçün istifadə edin my_directory
nisbi yol ../
.
cd əmri
touch my_file
: fayl yaradılması my_file
verilmiş yol boyunca.
mkdir my_directory
: qovluq yaradın my_directory
verilmiş yol boyunca.
mv my_file target_directory
: faylı köçürün my_file
qovluğa target_directory
. Hədəf kataloqunu təyin edərkən, ona mütləq yoldan istifadə etməlisiniz (və bu kimi bir tikinti deyil ../
).
komanda mv
fayl və ya qovluqların adını dəyişmək üçün də istifadə edilə bilər. Məsələn, bu belə görünə bilər:
mv my_old_file_name.jpg my_new_file_name.jpg
: faylın surətini yaradın
cp my_source_file target_directorymy_source_file
və qovluğa qoyun target_directory
.
ln -s my_source_file my_target_file
: simvolik əlaqə yaradın my_target_file
fayl başına my_source_file
. Linki dəyişdirsəniz, orijinal fayl da dəyişəcək.
Əgər fayl my_source_file
sonra silinəcək my_target_file
qalacaq. Bayraq -s
komandalar ln
kataloqlar üçün keçidlər yaratmağa imkan verir.
İndi I/O yönləndirilməsi və boru kəmərləri haqqında danışaq.
▍I/O yönləndirilməsi və boru kəmərləri
my_command < my_file
: standart giriş faylı deskriptorunu əvəz edir (stdin
) fayl başına my_file
. Bu, əgər komanda klaviaturadan bəzi daxiletmələri gözləyirsə və bu məlumat artıq faylda saxlanılırsa faydalı ola bilər.
my_command > my_file
: əmrin nəticələrini yönləndirir, yəni adətən nəyə daxil olur stdout
və ekrana, fayla çıxış my_file
. Əgər fayl my_file
mövcud deyil - yaradılmışdır. Əgər fayl varsa, onun üzərinə yazılır.
Məsələn, əmri yerinə yetirdikdən sonra ls > my_folder_contents.txt
cari iş kataloqunda olanların siyahısını ehtiva edən mətn faylı yaradılacaq.
Əgər simvol əvəzinə >
tikintidən istifadə edin >>
, sonra, əmrin çıxışının yönləndirildiyi fayl mövcud olduqda, bu faylın üzərinə yazılmayacaq. Məlumat bu faylın sonuna əlavə olunacaq.
İndi məlumat boru kəmərinin işlənməsinə nəzər salaq.
Bir əmrin çıxışı digər komandanın girişinə verilir. Bu, bir boruyu digərinə birləşdirmək kimidir
first_command | second_command
: konveyer simvolu, |
, bir əmrin çıxışını digər komandaya göndərmək üçün istifadə olunur. Təsvir edilən strukturun sol tərəfindəki əmr nəyə göndərilir stdout
, Düşmək stdin
boru kəməri simvolunun sağında əmr.
Linux-da, məlumatı demək olar ki, hər hansı yaxşı formalaşmış əmrdən istifadə etməklə nəql etmək olar. Tez-tez deyirlər ki, Linux-da hər şey bir boru xəttidir.
Boru kəməri simvolundan istifadə edərək çoxlu əmrləri zəncirləyə bilərsiniz. Bu belə görünür:
first_command | second_command | third_command
Bir neçə əmrdən ibarət boru kəməri boru kəməri ilə müqayisə edilə bilər
Qeyd edək ki, əmr simvolun solunda olduqda |
, üçün bir şey çıxarır stdout
, onun çıxışları dərhal olaraq mövcuddur stdin
ikinci komanda. Yəni belə çıxır ki, boru kəmərindən istifadə edərək, biz əmrlərin paralel icrası ilə məşğul oluruq. Bəzən bu gözlənilməz nəticələrə səbəb ola bilər. Bu barədə təfərrüatları oxumaq olar
İndi fayllardan məlumatların oxunması və onların ekranda göstərilməsi haqqında danışaq.
▍Faylların oxunması
head my_file
: faylın əvvəlindən sətirləri oxuyur və onları ekrana çap edir. Siz yalnız faylların məzmununu deyil, həm də əmrlərin nədən çıxdığını oxuya bilərsiniz stdin
boru kəmərinin bir hissəsi kimi bu əmrdən istifadə edin.
tail my_file
: faylın sonundan sətirləri oxuyur. Bu əmr boru kəmərində də istifadə edilə bilər.
Baş (baş) qabaqda, quyruq (quyruq) isə arxadadır
Əgər siz pandalar kitabxanasından istifadə edərək verilənlərlə işləyirsinizsə, o zaman əmrlər head
и tail
sizə tanış olmalıdır. Əgər belə deyilsə, yuxarıdakı rəqəmə nəzər salın və onları asanlıqla xatırlayacaqsınız.
Faylları oxumağın digər yollarını nəzərdən keçirək, komanda haqqında danışaq cat
.
Komanda cat
ya faylın məzmununu ekrana çap edir, ya da bir neçə faylı birləşdirir. Bu, çağırılan zaman bu əmrə neçə faylın ötürülməsindən asılıdır.
pişik əmri
cat my_one_file.txt
: bir fayl bu əmrə ötürüldükdə, onu çıxarır stdout
.
Əgər ona iki və ya daha çox fayl verirsinizsə, o, fərqli davranır.
cat my_file1.txt my_file2.txt
: bir neçə faylı giriş kimi qəbul etdikdən sonra bu əmr onların məzmununu birləşdirir və baş verənləri göstərir stdout
.
Fayl birləşməsinin nəticəsini yeni fayl kimi saxlamaq lazımdırsa, operatordan istifadə edə bilərsiniz >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
İndi faylları necə silmək və prosesləri dayandırmaq barədə danışaq.
▍Faylların silinməsi, proseslərin dayandırılması
rm my_file
: faylı silin my_file
.
rm -r my_folder
: qovluğu silir my_folder
və tərkibindəki bütün fayl və qovluqlar. Bayraq -r
əmrin rekursiv rejimdə işləyəcəyini bildirir.
Fayl və ya qovluq hər dəfə silindikdə sistemin təsdiq istəməsinin qarşısını almaq üçün bayraqdan istifadə edin -f
.
kill 012345
: Müəyyən edilmiş işləmə prosesini dayandırır, ona zərif şəkildə bağlanması üçün vaxt verir.
kill -9 012345
: Müəyyən edilmiş işləmə prosesini məcburi şəkildə dayandırır. Bayrağa baxın -s SIGKILL
bayraqla eyni deməkdir -9
.
▍Axtar
Məlumat axtarmaq üçün müxtəlif əmrlərdən istifadə edə bilərsiniz. Xüsusilə - grep
, ag
и ack
. Bu əmrlərlə tanışlığımıza başlayaq grep
. Bu, vaxtla sınaqdan keçirilmiş, etibarlı bir əmrdir, lakin digərlərindən daha yavaşdır və istifadə etmək onlar qədər rahat deyil.
grep əmri
grep my_regex my_file
: axtarışlar my_regex
в my_file
. Uyğunluq aşkar edilərsə, hər uyğunluq üçün bütün sətir qaytarılır. Defolt my_regex
müntəzəm ifadə kimi qəbul edilir.
grep -i my_regex my_file
: Axtarış hərflərə həssas olmayan şəkildə həyata keçirilir.
grep -v my_regex my_file
: olmayan bütün sətirləri qaytarır my_regex
. Bayraq -v
inversiya deməkdir, operatora bənzəyir NOT
, bir çox proqramlaşdırma dillərində rast gəlinir.
grep -c my_regex my_file
: Faylda tapılan axtarılan nümunə üçün uyğunluqların sayı haqqında məlumatı qaytarır.
grep -R my_regex my_folder
: göstərilən qovluqda və onun içindəki qovluqlarda yerləşən bütün fayllarda rekursiv axtarış aparır.
İndi komanda haqqında danışaq ag
. Daha sonra gəldi grep
, daha sürətlidir, onunla işləmək daha rahatdır.
ag əmri
ag my_regex my_file
: sətir nömrələri və uyğunluqların tapıldığı sətirlərin özləri haqqında məlumatları qaytarır my_regex
.
ag -i my_regex my_file
: Axtarış hərflərə həssas olmayan şəkildə həyata keçirilir.
Komanda ag
faylı avtomatik emal edir .gitignore
və həmin faylda sadalanan qovluqlarda və ya fayllarda olanları çıxışdan xaric edir. Çox rahatdır.
ag my_regex my_file -- skip-vcs-ignores
: avtomatik versiyaya nəzarət fayllarının məzmunu (məsələn .gitignore
) axtarışda nəzərə alınmır.
Bundan əlavə, komandaya izah etmək üçün ag
axtarışdan xaric etmək istədiyiniz fayl yollarında fayl yarada bilərsiniz .agignore
.
Bu bölmənin əvvəlində əmri qeyd etdik ack
. Komandalar ack
и ag
çox oxşardır, deyə bilərik ki, onlar 99% bir-birini əvəz edir. Bununla belə, komanda ag
daha sürətli işləyir, ona görə təsvir etdim.
İndi arxivlərlə işləmək haqqında danışaq.
▍Arxivləşdirmə
tar my_source_directory
: qovluqdakı faylları birləşdirir my_source_directory
tək tarball faylına. Bu cür fayllar böyük fayl dəstlərini kiməsə ötürmək üçün faydalıdır.
tar əmri
Bu əmrlə yaradılan tarball faylları uzantılı fayllardır .tar
(Kaset arxivi). Əmr adında və yaratdığı faylların adlarının uzantısında “lent” (lent) sözünün gizlədilməsi bu əmrin nə qədər müddətə mövcud olduğunu göstərir.
tar -cf my_file.tar my_source_directory
: adlı tarball faylı yaradır my_file.tar
qovluq məzmunu ilə my_source_directory
. Bayraq -c
"yaratmaq" (yaratmaq) və bayraq deməkdir -f
"fayl" (fayl) kimi.
Faylları çıxarmaq üçün .tar
-fayl, əmrindən istifadə edin tar
bayraqlarla -x
("çıxarış", çıxarış) və -f
("fayl", fayl).
tar -xf my_file.tar
: faylları çıxarır my_file.tar
cari iş qovluğuna.
İndi sıxışdırmaq və dekompressiya etmək haqqında danışaq .tar
-fayllar.
tar -cfz my_file.tar.gz my_source_directory
: burada bayraqdan istifadə edilir -z
("zip", sıxılma alqoritmi) faylları sıxmaq üçün alqoritmin istifadə edilməli olduğunu göstərir gzip
(GNUzip). Faylın sıxılması bu cür faylları saxlayarkən disk sahəsinə qənaət edir. Faylların, məsələn, digər istifadəçilərə ötürülməsi planlaşdırılırsa, bu, belə faylların daha sürətli yüklənməsinə kömək edir.
faylı açın .tar.gz
bayraq əlavə edə bilərsiniz -z
məzmun çıxarmaq əmrinə .tar
-yuxarıda müzakirə etdiyimiz fayllar. Bu belə görünür:
tar -xfz my_file.tar.gz
Qeyd etmək lazımdır ki, komanda tar
Daha çox faydalı bayraqlar var.
Bash ləqəbləri
Bash ləqəbləri (həmçinin ləqəblər və ya abbreviaturalar adlanır) əmrlərin qısaldılmış adlarını və ya onların ardıcıllığını yaratmaq üçün nəzərdə tutulmuşdur, onlardan adi əmrlər əvəzinə istifadəsi işi sürətləndirir. Əgər ləqəbiniz varsa bu
, əmri gizlədir python setup.py sdist bdist_wheel
, onda bu əmri çağırmaq üçün bu ləqəbdən istifadə etmək kifayətdir.
Belə bir ləqəb yaratmaq üçün fayla aşağıdakı əmri əlavə etmək kifayətdir ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Sisteminizdə fayl yoxdursa ~/.bash_profile
, sonra əmrdən istifadə edərək özünüz yarada bilərsiniz touch
. Ləqəbi yaratdıqdan sonra terminalı yenidən başladın, bundan sonra bu ləqəbdən istifadə edə bilərsiniz. Bu halda, iki simvolun daxil edilməsi əmrin üç ondan çox simvolunun daxil edilməsini əvəz edir.
В ~/.bash_profile
tez-tez istifadə olunan hər hansı əmrlər üçün ləqəblər əlavə edə bilərsiniz.
▍Nəticələr
Bu yazıda biz 21 məşhur Bash əmrini əhatə etdik və komanda ləqəblərinin yaradılması haqqında danışdıq. Bu mövzu ilə maraqlanırsınızsa -
Hörmətli oxucular! Bu məqalədə müzakirə olunanlara yeni başlayanlar üçün faydalı olan hansı əmrləri əlavə edərdiniz?
→
Mənbə: www.habr.com