Android

Định vị lệnh trong linux

Tự học Linux - LPI 1 [Part 4/4] - Lập shell script và bash script

Tự học Linux - LPI 1 [Part 4/4] - Lập shell script và bash script

Mục lục:

Anonim

Một trong những hoạt động phổ biến nhất khi làm việc trên Linux là tìm kiếm các tệp và thư mục. Trên các hệ thống Linux, có một số lệnh cho phép bạn tìm kiếm các tệp với find locate là những lệnh được sử dụng nhiều nhất.

Lệnh locate là cách nhanh nhất và đơn giản nhất để tìm kiếm các tệp và thư mục theo tên của chúng.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách sử dụng lệnh locate .

Cài đặt locate (không tìm thấy lệnh xác định)

Tùy thuộc vào việc phân phối và cách hệ thống được cung cấp, gói định vị có thể được cài đặt sẵn trên hệ thống Linux của bạn.

Để kiểm tra xem tiện ích locate có được cài đặt trên hệ thống của bạn hay không, hãy mở thiết bị đầu cuối của bạn, nhập locate và nhấn Enter . Nếu gói được cài đặt, hệ thống sẽ hiển thị locate: no pattern to search for specified , nếu không bạn sẽ thấy một cái gì đó giống như locate command not found .

Nếu locate không được cài đặt, bạn có thể dễ dàng cài đặt nó bằng trình quản lý gói của bản phân phối.

Cài đặt locate trên Ubuntu và Debian

sudo apt update sudo apt install mlocate

Cài đặt locate trên CentOS và Fedora

sudo yum install mlocate

Làm thế nào để locate làm việc

Lệnh locate tìm kiếm một mẫu nhất định thông qua tệp cơ sở dữ liệu được tạo bởi lệnh updatedb . Các kết quả tìm thấy được hiển thị trên màn hình, mỗi dòng trên một dòng.

Trong quá trình cài đặt gói mlocate, một công việc định kỳ được tạo để chạy lệnh updatedb cứ sau 24 giờ. Điều này đảm bảo cơ sở dữ liệu được cập nhật thường xuyên. Để biết thêm thông tin về công việc định kỳ, hãy kiểm tra tệp /etc/cron.daily/mlocate .

Cơ sở dữ liệu có thể được cập nhật thủ công bằng cách chạy lệnh updatedb quyền root hoặc người dùng có quyền sudo:

sudo updatedb

Quá trình cập nhật sẽ mất một chút thời gian, tùy thuộc vào số lượng tệp và thư mục và tốc độ hệ thống của bạn.

Các tệp được tạo sau khi cập nhật cơ sở dữ liệu sẽ không được hiển thị trong kết quả định vị.

So với lệnh find mạnh hơn find kiếm hệ thống tệp, locate hoạt động nhanh hơn nhiều nhưng thiếu nhiều tính năng và chỉ có thể tìm kiếm theo tên tệp.

Cách sử dụng lệnh locate

Cú pháp của lệnh locate như sau:

locate PATTERN…

Ở dạng cơ bản nhất, khi được sử dụng mà không có bất kỳ tùy chọn nào, lệnh locate sẽ in đường dẫn tuyệt đối của tất cả các tệp và thư mục phù hợp với mẫu tìm kiếm và người dùng có quyền đọc.

Ví dụ: để tìm kiếm tệp có tên .bashrc bạn sẽ nhập:

locate.bashrc

Đầu ra sẽ bao gồm tên tất cả các tệp chứa chuỗi .bashrc trong tên của chúng:

/etc/bash.bashrc /etc/skel/.bashrc /home/linuxize/.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

Tệp /root/.bashrc sẽ không được hiển thị vì chúng tôi đã chạy lệnh như một người dùng bình thường không có quyền truy cập vào thư mục /root .

Nếu danh sách kết quả dài, để dễ đọc hơn, bạn có thể chuyển đầu ra sang lệnh less :

locate.bashrc | less

Lệnh locate cũng chấp nhận các mẫu có chứa các ký tự toàn cục như ký tự đại diện * . Khi mẫu không chứa ký tự toàn cầu, lệnh sẽ tìm kiếm *PATTERN* , đó là lý do tại sao trong ví dụ trước, tất cả các tệp chứa mẫu tìm kiếm trong tên của chúng được hiển thị.

Ký tự đại diện là ký hiệu được sử dụng để thể hiện số không, một hoặc nhiều ký tự. Ví dụ: để tìm kiếm tất cả các tệp .md trên hệ thống bạn sẽ sử dụng:

locate *.md

Để giới hạn kết quả tìm kiếm, hãy sử dụng tùy chọn -n theo sau là số lượng kết quả bạn muốn được hiển thị. Ví dụ: lệnh sau sẽ tìm kiếm tất cả các tệp .py và chỉ hiển thị 10 kết quả:

locate -n 10 *.py

Theo mặc định, locate thực hiện tìm kiếm phân biệt chữ hoa chữ thường. Tùy chọn -i ( --ignore-case ) locate để bỏ qua trường hợp và chạy tìm kiếm không phân biệt chữ hoa chữ thường.

locate -i readme.md

/home/linuxize/p1/readme.md /home/linuxize/p2/README.md /home/linuxize/p3/ReadMe.md

Để hiển thị số lượng của tất cả các mục phù hợp, sử dụng tùy chọn -c ( --count ). Lệnh sau sẽ trả về số lượng của tất cả các tệp có chứa .bashrc trong tên của chúng:

locate -c.bashrc

6

Theo mặc định, locate không kiểm tra xem các tệp tìm thấy có còn tồn tại trên hệ thống tệp hay không. Nếu bạn đã xóa một tệp sau khi cập nhật cơ sở dữ liệu mới nhất nếu tệp phù hợp với mẫu tìm kiếm, nó sẽ được đưa vào kết quả tìm kiếm.

Để chỉ hiển thị tên của các tệp tồn tại tại thời điểm locate được chạy, hãy sử dụng tùy chọn -e (- --existing ). Ví dụ: sau đây sẽ chỉ trả về các tệp .json hiện có:

locate -e *.json

locate --regex -i "(.mp4|\.avi)"

Phần kết luận

Lệnh locate tìm kiếm hệ thống tệp cho các tệp và thư mục có tên khớp với một mẫu nhất định. Cú pháp lệnh dễ nhớ và kết quả được hiển thị gần như ngay lập tức.

Để biết thêm thông tin về tất cả các tùy chọn có sẵn của man locate loại lệnh man locate trong thiết bị đầu cuối của bạn.

định vị thiết bị đầu cuối