Command Magicks: Konsol ilə faylları və simləri necə manipulyasiya etmək olar

Proqramlaşdırma yolu ilə Kosmosdan məmnun qalacaqsınız. Mənbə: Pixabay.

Bir inkişaf etdirici olaraq, hər gün etdiyimiz qiymətli vaxtımıza sərf edən bir çox təkrarlayıcı şey var. Bu proseslərin avtomatlaşdırılması və optimallaşdırılması yollarını tapmaq ümumiyyətlə çox gəlirlidir.

Tez-tez uyğun bitlər üçün bir proqramın nəticəsini axtarırıq və onları başqa bir fayla köçürürük, bir cümlənin bütün böyük hərflərini kiçik hərflərlə dəyişdiririk və ya bütün qeyri-rəqəmli simvolları bir sənəddən çıxarırıq. Əl ilə etdikdə və böyük baş ağrısına səbəb olarkən cansıxıcı, təkrarlayan və səhvlərə meylli bir növ.

Bu şeyləri əl ilə proqramlaşdırmamalı olduğumuz ümumi bir inancdır. Tez-tez problem, hətta Pythonda da bütün bir skriptin kodlaşdırılmasının həddən artıq dərəcədə öldürüldüyü kimi ortaya çıxır. Əl ilə etmək çox uzun çəkəcək və ya çox səhv buraxacaq.

Sevindirici haldır ki, bu vəzifələrin çoxu artıq bizdən daha ağıllı insanlar tərəfindən yazılmışdır. Bir neçə düymə vuruşu ilə əldə edilə bilər. Hamısı shell əmrləri şəklində mövcuddur və bu gün onlardan bəzilərini sizə göstərmək niyyətindəyəm. Terminalı hələ bilmirsinizsə və fayl sisteminizi necə idarə etmək və ya bənzər tapşırıqları yerinə yetirmək barədə heç bir məlumatınız yoxdursa, terminalla bağlı əvvəlcədən tanış olduğumu oxumalısınız.

Beləliklə, bir kodlaşdırma köməkçisinin bilməli olduğu ən faydalı sehrlərlə asanlıqla sizi tanış edim.

əks-səda: Konsolda bir simli görünməyə imkan verir

Özümüzü bəxt və sənətə çevirmə sənətinə salmadan əvvəl həqiqi bir proqramçı çağırış sənətini mənimsəməlidir. Sətrin ardınca əks olunan echo əmri, konsol çıxışının giriş kimi göstəriləninə səbəb olur. Məsələn, aşağıdakı sətri işlədin:

Exo "Salam dünya!"

aşağıdakı məhsul istehsal edir:

Salam dünya!

Bu an mənasız görünə bilər, amma gələcəkdə faydalı olacağını vəd edirəm.

pişik: Həqiqi giriş formasını göstərir

Bir fayl üçün pişik əmrinə zəng etmək, məzmununu terminala çıxarır. Məsələn, "file1.txt" və "file2.txt" sənədləri olan qovluq var. Hər iki sənəddə "Bu bir fayldır" yazısı var. Yerləşdirmə:

pişik faylı1.txt

faylın məzmununu çıxarır:

Bu bir fayldır

Pişik əmrinə dəlil hər hansı bir qabıq stilinin adı ola biləcəyini unutmayın. Hər hansı bir simli tapmaq üçün işarəli işarədən * istifadə edə bilərik. Bu yolla fərqli faylların məzmununu bir-birinin ardınca çıxara bilərik:

pişik * .txt

Bu vəziyyətdə, * hər ikisi File1 və File2-yə uyğundur və hər ikisi .txt ilə bitir, buna görə hər ikisi də çap olunur. Bu əmrin nəticəsi olardı

Bu bir fayl Bu bir fayldır

Bu əmri yadda saxla - heç bir döyüş bağlantısı doğrudan da tamamil deyil.

grep: ot otunda iynə tap

Grep ilə bir sətirdə alt sətir tapa bilərsiniz. Zəng edir

grep Filename

Göstərilən sətrin göstərildiyi göstərilən faylın hər sətirini qaytarır.

Bunun yalnız dəqiq formada deyil, fərqli bir vəziyyətdə görünməsini istəyiriksə, işə baxmamaq üçün -i arqumentini verməliyik.

Bir əmr ilə fərqli fayllara səslədikdə, nümunəyə uyğun satırlar olan bütün faylların siyahısını alırıq. Məsələn, əvvəlki qovluğu çağırın

grep "bu" * .txt

yol verəcəkdir

file1.txt: Bu bir fayldır2.txt: Bu bir fayldır

sed: Bir simini digərinə çevirin

Sed əmri transmutasiya yazısıdır. Bir faylın məzmununu götürür və digərinə çevirir. Onu istifadə etməyin bir çox yolu var. Bəziləri haqqında az məlumat verdiyimi etiraf edirəm. (Bunu oxuyursunuzsa və qeyd etmədiyim xoş şeylər barədə düşünürsünüzsə, zəhmət olmasa şərhlərdə mənə bildirin ki, yeni fəndləri öyrənmək istəyirəm.) Ən çox yayılanlardan biri naxışa uyğun bir simin hissələrini əvəz etməkdir müxtəlif strings.

Bu zənglə edilir

sed "s / regexp / dəyişdirmə / isteğe bağlı_flags" fayl adı

Bunun edəcəyi budur:

  • Fayl adındakı müntəzəm ifadəyə uyğun hər hansı bir sətri axtarın
  • Bu xəttin ilk müntəzəm ifadə nümunəsini əvəzlə əvəz edin
  • Yaranan sətri konsoldan çıxarın (faylı dəyişdirmədən!).

G bayraq sonunda göstərsək (məsələn, s / köhnə / yeni / g), bütün misralar hər sətirdə olur və nəinki birinci. Arqument -i (yer üçün) əslində giriş faylı üçün yazır.

Məsələn, zəng edin

sed "s / is / was / g" file1.txt

verilir

Bu bir fayl idi

Yalnız bütün sözləri uyğunlaşdırmaq istəyiriksə, \ b işarəsini adi ifadə ətrafında aşağıdakı kimi qoymalıyıq

sed "s / \ to \ b / was / g" file1.txt

nəhayət almaq

Bu bir fayl idi

Sehrimizi birləşdirin: operatorlar

İndi hər biri özünəməxsus sehrli dörd yeni sehr məktəbini mənimsədin. Ancaq əsl sehrbaz olmaq üçün sehrli ipləri fantastik naxışlara bağlamağı öyrənməlisiniz. Bunu etmək üçün üç güclü vasitədən istifadə edirsiniz.

| (Boru) operatoru

Boru operatoru əvvəlki əmrdən çıxarılaraq bir boru kəməri yaradaraq aşağıdakı komandanın girişinə yazır. Məsələn, zəng edin

pişik * .txt | grep "is" dir

Əvvəlcə hazırkı işçi qovluqdakı bütün mətn sənədlərinin məzmununu alır. Sonra nəhayət çap etmədən əvvəl "var" sətrini ehtiva edən hər bir sətir axtarın.

> Operator (yaz)

Yazı operatoru girişini çıxışına yazır - ümumiyyətlə bir fayl.

Məzmunu "bu bir sənəddir" ilə mətn faylı yaratmağın sürətli yolu onu çağırmaq olardı

Echo "Bu bir fayldır"> some_file.txt

Bu sehrli çağırışın necə qurulduğunu görürsən? Faydalı olacağımı söylədim.

Diqqət yetirin ki, fayl artıq varsa, məzmun soruşulmadan yenidən yazılacaqdır. İstədiyimiz deyilsə, son alətimizi istifadə etməliyik:

>> Operator (əlavə et)

>> operatoru, daxilindəki şeyin üstündən yazmadığı təqdirdə girişini nəticəsinə yazır.

Budur, bu təlim ilə bitirdik və indi bir şagird sehrbazısınız. Yeni sehrli bacarıqlarınızı tətbiq edin və sonra təşəkkür edirəm. Yıxılmış olsanız və ya bəzi bayraqların nə etdiyini xatırlaya bilmirsinizsə, bu əmrlərin hamısını insan səhifələrində axtarmağı unutmayın - bir sehrbaz heç vaxt kitablarından silinməmişdir.

Əmrlər və istifadə qaydaları haqqında daha çox məlumat əldə etmək istəyirsinizsə, O'Reilly's Bash Cookbook'u başlamaq üçün yaxşı bir yer olaraq tövsiyə edirəm.

Daha çox dərs, məsləhət və tövsiyələr üçün Orta Məni izləyin. Bu yazı yeni veb saytım olan datastuff.tech saytında da yayımlandı. Dinlə!