Wednesday, 5 February 2020

Grep, SilverSearcher (ag), RipGrep (rg) và file ẩn

Trên *NIX, một file được gọi là file ẩn (hidden file) khi tên của nó bắt đầu với dấu chấm (.).

Các file phổ biến thường gặp là các file để cấu hình các phần mềm, ví dụ: .vimrc .bashrc .gitignore .gitlabci,yml ...

Image by OpenClipart-Vectors from Pixabay

Khi muốn tìm một từ khóa bất kỳ trong các file ở thư mục hiện tại, ta có thể dùng grep:

grep -Rin noi_dung .  # dấu chấm đại diện cho thư mục hiện tại

$ mkdir testdir; echo pika > testdir/.filepassword
$ cd testdir/
$ grep -Rin pika .
./.filepassword:1:pika

Một nhược điểm của grep so với các chương trình "hiện đại" hơn như SilverSearcher (ag) hay RipGrep (rg) là

nó không hiểu các file ignore, đặc biệt là .gitignore, nên khi tìm kiếm, nó vẫn thực hiện tìm cả trong các thư mục mà người dùng đã cố tình bỏ qua bằng việc ghi tên chúng vào .gitignore.

ag và rg mặc định sẽ tuân thủ file .gitignore, và cũng mặc định bỏ qua các hidden file, kể cả thư mục .git trong các software project quản lý bằng git.

Điều này sẽ gây ra rắc rối nếu người dùng chuyển từ grep sang các chương trình hiện đại hơn mà không đọc kỹ hướng dẫn:


Để tìm cả các file hidden, với ag cần dùng option --hidden hay -u

    --hidden
              Search hidden files. This option obeys ignored files.

     -u --unrestricted
              Search all files. This ignores .ignore, .gitignore, etc. It searches binary and hidden files as well.

$ ag pika # không thấy gì
$ ag --hidden pika
.gitignore
1:pikagit

Tương tự với rg

 $ rg -uuu pika
.filepassword
1:pika

$ rg --hidden pika
.filepassword
1:pika

Nếu luôn muốn tìm hidden file mà vẫn tuân theo ignore files như .gitignore, bạn có thể đặt alias trong .bashrc:

alias ag='ag --hidden'

Hết.

HVN at https://pymi.vn and https://www.familug.org

No comments:

Post a comment