პროგრამირებაში ერთ-ერთი საჭირო პატერნია ე.წ. glob pattern, რომელიც გვეხმარება დირექტორიებში სპეციფიური დამთხვების პოვნში.
ის ფართოდ გამოიყენება ფაილების ძიებისთვის, ავტომატიზაციისთვის და ე.წ. shell scripting-ისთვის.
მოცემულ ბლოგში შევეცდები განვიხილო მისი გამოყენების ძირითადი წესები და საჭიროებები.
რაც უფრო ღრმად წავალთ პროგრამირების შესწავლაში აუცილებლდ მოგვიწევს რაიმე ფორმით linux ოპერაციულ სისტემასთან შეხება, განსაკუთრებით მაშინ თუ სერვერის გამართვა მოგვიწევს.
სერვერზე წვდომა რიგ შემთხვევებში ხდება ssh-ის დახმარებით, რა დროსაც არ გვაქვს ვიზუალურ ინტერფესითან წვდომა, ასე რომ linux-ის ძირითადი ბრძანებების შესწავლა ყველა პროგრამისტისთვის ვფიქრობ აუცილებელია.
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 ფაილი გვაქვს სადმე გადასატანი, წარმოიდგინეთ რამდენად მოსახერხებელია მსგავსი სინტქსით ოპერაციის ჩატარება, ნაცვლად იმისა, რომ სათითაოდ ხელით გვეწერა ყველა ფაილის სახელი.
პატერნი | მნიშვნელობა | მაგალითი |
* |
ემთხვევა ყველაფერს გარდა / სიმბოლოსი | *.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-ის შესწავლაში.
წარმოვიდგინოთ ასეთი, შემთხვევა, რომ გვჭირდება ტერმინალში დავბეჭდოთ ჩვენს პროექტში არსებული ყველა .js გაფართოების ფაილი.
პროექტის სტრუქტურა:
project/
├── src/
│ ├── main.js
│ ├── utils.js
├── index.js
ბრძანება:
ls **/*.js
შედეგი:
src/main.js
src/utils.js
index.js