fb pixel
გამოიწერე YouTube-ის არხიyoutube logoგამოწერა
რა არის glob pattern?

რა არის glob pattern?

პროგრამირებაში ერთ-ერთი საჭირო პატერნია ე.წ. glob pattern, რომელიც გვეხმარება დირექტორიებში სპეციფიური დამთხვების პოვნში.

ის ფართოდ გამოიყენება ფაილების ძიებისთვის, ავტომატიზაციისთვის და ე.წ. shell scripting-ისთვის.

მოცემულ ბლოგში შევეცდები განვიხილო მისი გამოყენების ძირითადი წესები და საჭიროებები.

რაც უფრო ღრმად წავალთ პროგრამირების შესწავლაში აუცილებლდ მოგვიწევს რაიმე ფორმით linux ოპერაციულ სისტემასთან შეხება, განსაკუთრებით მაშინ თუ სერვერის გამართვა მოგვიწევს.

სერვერზე წვდომა რიგ შემთხვევებში ხდება ssh-ის დახმარებით, რა დროსაც არ გვაქვს ვიზუალურ ინტერფესითან წვდომა, ასე რომ linux-ის ძირითადი ბრძანებების შესწავლა ყველა პროგრამისტისთვის ვფიქრობ აუცილებელია.

glob pattern ასევე გამოიყენება შემდეგ  ტექნოლოგიებში და მათი კონფიგურაციის ფაილებში:

რატომ უნდა გამოვიყენოთ glob pattern?

წარმოვიდგინოთ გვაქვს შემდეგი შემთხვევა, გვჭირდება დავაკოპიროთ შემდეგი file1.css file2.css file3.css /dist დირექტორიაში, glob pattern-ის გარეშე ამისთვის მოგვიწევდა ხელით ჩაგვეწერა ყველა ამ ფაილის სახელის ჩამონათვალი და ისე მოგვეხდინა კოპირება

cp file1.css file2.css file3.css /dist

ხოლო glob pattern-ის დახმარებით მარტივად ე.წ. wildcard-ის დახმარებით დავაკოპირებდით ყველა ფაილს რომლის გაფართოებაც არის .css

cp *.css /dist

მოცემული ჩანაწერი ნიშნავს, რომ არსებულ დირექტორიაში ყველა ფაილი რომელსაც აქვს გაფართოება .css დაკოპირდება /dist დირექტორიაში.

თუ წარმოვიდგენთ შემთხვევას, როდესაც ასობით CSS ფაილი გვაქვს სადმე გადასატანი, წარმოიდგინეთ რამდენად მოსახერხებელია მსგავსი სინტქსით ოპერაციის ჩატარება, ნაცვლად იმისა, რომ სათითაოდ ხელით გვეწერა ყველა ფაილის სახელი.

ხშირად გამოყენებული glob pattern-ის wildcard-ები

პატერნი მნიშვნელობა მაგალითი
* ემთხვევა ყველაფერს გარდა / სიმბოლოსი *.js → დაემთხვევა ყველა .js გაფართოებას მაგალითად: app.js, index.js
**

ემთხვევა ყველაფერს / სიმბოლოს ჩათვლით, ანუ ქვე დირექტორიებსაც

src/**/*.js → ემთხვევა ყველა .js გაფართოების ფაილს, src დირექტორიაში და ასევე მის ქვე დირექტორიებში src/index.js, src/utils/helper.js
? ემთხვავა ერთ სიმბოლოს file?.txt → ემთხვევა file1.txt, fileA.txt არ ემთხვევა file12.txt
{js,css} ემთხვევა js ან css გაფართოებებს *.{js,css} →ემთხვევა ყველა app.js, helper.js, style.css, var.css ფაილს
!(...) დამთხვევის გამორიცხვა !(test).js → ემთხვევა ყველა .js ფაილს გარდა test.js ფაილისა
[a-c] დაემთხვევა a-დან c-ის ჩათვლით ყველა სიმბოლოს   [a-c].txt ემთხვევა ყველა ფაილს რომლის დასახელებაცაა a-დან c-ის ჩათვლით და გაფართოებაა .txt - a.txt, b.txt, c.txt

მოცემული ცხრილი დაგეხმარებათ იყოს გზამკვლევი glob pattern-ის შესწავლაში.

რთული glob pattern-ის მაგალითი

წარმოვიდგინოთ ასეთი, შემთხვევა, რომ გვჭირდება ტერმინალში დავბეჭდოთ ჩვენს პროექტში არსებული ყველა .js გაფართოების ფაილი.

პროექტის სტრუქტურა:

project/
 ├── src/
 │   ├── main.js
 │   ├── utils.js
 ├── index.js

ბრძანება:

ls **/*.js

შედეგი:

src/main.js
src/utils.js
index.js

პროგრამირების კურსები

უახლესი ბლოგები პროგრამირებაზე