Cách tìm kiếm thông tin bằng tính năng sẵn có trên Windows/Linux
Lời nói đầu:
Việc tìm kiếm thông tin trên mạng đã được đơn giản hóa rất nhiều nhờ có các dịch vụ tìm kiếm khổng lồ và nhưng thuật toán phức tạp được cập nhật ngày qua ngày. Tuy nhiên, trong các công việc hàng ngày của một kĩ thuật viên IT, việc tìm kiếm thông tin trên những bản log của máy chủ, hay tìm kiếm hàm được định nghĩa trong một hệ thống lớn vẫn là một nỗi khó khăn. Đặc biệt đối với những môi trường cần đảm bảo tính bảo mật hoặc mạng riêng biệt, việc cài đặt một công cụ tìm kiếm văn bản nào đó vào máy rất khó khăn và nhiều khi bị từ chối bởi khách hàng. Với mục đích gợi ý cho người sử dụng để giải quyết vấn đề này, bài viết xin được giới thiệu qua một số giải pháp đơn giản dễ sử dụng.
Môi trường Linux/Unix
1. Grep
Câu lệnh dùng để tìm kiếm chuỗi kí tự ứng với Regular Expression hay Biểu thức chính quy (viết tắt là Regex) đối với file hoặc nhóm file hoặc từ thông tin bộ xuất nhập chuẩn.
Command của Grep có dạng như sau:
grep [Option] [Regex] [File/Input]
[Option] bao gồm:
Options | Ý nghĩa |
---|---|
-v | tìm những chuỗi kí tự không khớp với Regex |
-i | tìm những chứa chuỗi kí tự khớp với Regex không phân biệt chữ hoa chữ thường |
-c | hiển thị số dòng chứa chứa chuỗi kí tự khớp với Regex |
-n | hiển thị số của dòng chứa chuỗi kí tự khớp với Regex |
-q | không hiển thị kết quả tìm được ra Bộ xuất chuẩn (output) |
-h | không hiển thị tên file chứa chuỗi kí tự khớp với Regex |
-b | hiện thị vị trí khớp với Regex trong chuỗi kí tự nhận được |
-s | không hiển thị thông báo lỗi |
Tham khảo
https://developer.mozilla.org/vi/docs/Web/JavaScript/Guide/Regular_Expressions [File/Input] là đối tượng tìm kiếm. Đối tượng tìm kiếm là file hoặc thư mục hoặc bộ xuất chuẩn của hệ điều hành nhận được thông qua Pipe (|)
Ví dụ 1: Tìm kiếm chuỗi kí tự trong file colors.txt
green
red
blue
cyan
orange
purple
Lệnh thực hiện tìm kiếm cyan trong colors.txt
grep -i cyan colors.txt
Ví dụ 2: Tìm kiếm trong thư mục /tmp/color/ có nhiều file
maincolor.txt
subcolor.txt
Lệnh thực hiện tìm kiến cyan trong nhiều file
grep -i cyan /tmp/color/*color.txt
grep -i cyan /tmp/color/*.txt
Ví dụ 3: Tìm kiếm file maincolor.txt trong thư mục /tmp/color/
ls -la /tmp/color/ | grep maincolor.txt
Ngoài tìm kiếm file và nội dung của file, khi kết hợp với các command khác như ps, aux, cat... đều có thể áp dụng giống như ví dụ ở trên.
Tham khảo:
https://man7.org/linux/man-pages/man1/grep.1.html
2. Find
Đây là một command rất mạnh trong việc tìm kiếm và xác định file đối với thư mục có dạng cây (the directory heirarchy) theo Regex được định nghĩa, ngoài ra còn thực hiện tìm theo các điều kiện chi tiết như thời gian, loại file...
Command của Find có dạng như sau:
$ find [Command-Option] [PATH] [Option] [File/Search_Expresion]
[Command-Option] bao gồm:
Options | Ý nghĩa |
---|---|
-P | Không đọc Symbolic Link-các lối tắt(tương ứng trong window là short-cut) - Đây là cấu hình mặc định |
-L | Đọc tất cả Symbolic Link |
-H | Chỉ đọc Symbolic Link được chỉ định |
-D <sub_option> | Hiển thị thông tin Debug help: hiển thị cách sử dụng sub_option tree:hiển thị biểu thức tìm kiếm dưới dạng cây stat:message khi tìm ra file bằng cách sử dụng stat hoặc lstat opt:thông tin khi tối ưu hóa biểu thức tìm kiếm rates:hiển thị số lần thành công và thất bại của biểu thức tìm kiếm |
-O<level> | Cấp tối ưu hóa xử lý. Cấp -O1 là cấp tối ưu hóa được cài đặt mặc định. |
Options | Ý nghĩa |
---|---|
-type | Loại của file cần tìm kiếm d:thư mục f:file |
-name | Tên của file cần tìm kiếm |
-path | Đường dẫn của file được tìm ra phải khớp với cài đặt |
-size | Kích thước của file |
-user | Người sở hữu file |
Ví dụ 1: Tìm file sample.txt trong thư mục home của user hiện hành
find ~ -name sample.txt
Ví dụ 2: Tìm file mà người sở hữu là admin và có tên là sample.txt
find ~ -type f -user admin -name sample.txt
Ví dụ 3: Tìm thư mục
find ~ -type d -user admin -name samplefolder
Đối với phần biểu thức tìm kiếm([File/Search_Expresion]), find còn cung cấp rất nhiêu chức năng và công cụ mạnh như toán tử, xử lý sau khi tìm kiếm, trích xuất dữ liệu, thời gian...Bên cạnh đó, có thể sử dụng kết hợp với grep ở trên để lọc kết qủa tìm được.
Tham khảo:
https://man7.org/linux/man-pages/man1/find.1.html
3. Bash - Shell-Script
Trình chạy Shell Command - Bash dùng để thực thi tập hợp các lệnh (command shell) được định nghĩa trong văn bản được gọi là Shell-Script lưu với phần mở rộng ".sh".
Thay vì gõ từng câu lệnh một như giới thiệu ở trên, người dùng sẽ tổng hợp lại hết tất cả những câu lệnh và những cài đặt đối với câu lệnh muốn chạy, lọc chính xác kết quả tìm kiếm chính xác hơn và thực hiện nhiều tác vụ phức tạp hơn như định vị file, thư mục được tìm thấy, chuỗi kí tự cần tìm thấy trong file nào, ở đâu...
Ví dụ: Đọc tất cả các file nằm trong thư mục hiện hành và tìm kiếm chuỗi kí tự "hello"
for file in `\find . -maxdepth 1 -type f`; do
cat file | grep hello
done
Tham khảo:
https://devdocs.io/bash/
Môi trường Windows
1.Dir
Dir là một câu lệnh rất quen thuộc với người dùng windows để dùng liệt kê file nằm trong một như mục. Bên cạnh đó, Dir còn chứa các Options cao cấp mà ít người để ý đến.
Command của Dir có dạng như sau:
dir [<drive>:][<path>][<filename>] [...] [/p] [/q] [/w] [/d] [/a[[:]<attributes>]][/o[[:]<sortorder>]] [/t[[:]<timefield>]] [/s] [/b] [/l] [/n] [/x] [/c] [/4] [/r]
Options đơn giản thường sử dụng:
Options | Ý nghĩa |
---|---|
/a | Chỉ hiển thị thư mục và file có thuộc tính được chỉ định |
/s | Hiển thị toàn bộ nội dung của thư mục được chỉ định bao gồm cả thư mục con nếu có |
/b | Chỉ hiển thị tên file và thư mục nằm trong một thư mục nhất định (không chưa đường dẫn) |
/d | Chỉ hiển thị thư mục |
Ví dụ 1: Hiển thị tên file có đuôi .txt trong thư mục C:/samples/
dir *.txt C:/samples/
Ví dụ 2: Hiển thị chỉ thư mục trong thư mục C:/samples/
dir /ad C:/samples/
Ví dụ 3: Hiển thị tên file trong thư mục C:/samples/
dir /a-d C:/samples/
Ví dụ 4: Hiển thị tên file và thư mục gồm đường dẫn trong thư mục C:/samples/
bao gồm cả file trong tất cả thư mục con
dir /s /b C:/samples/
Tham khảo:
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/dir
2. Find
Tìm kiếm chuỗi kí tự trong một file hoặc nhiều files, hiển thị dòng chứa nội dung chuỗi kí tự tìm kiếm
Command của find có dạng như sau:
find [/v] [/c] [/n] [/i] [/off[line]] <string> [[<drive>:][<path>]<filename>[...]]
Options đơn giản thường sử dụng:
Options | Ý nghĩa |
---|---|
/v | Hiển thị các dòng không chứa chuỗi kí tự tìm kiếm |
/c | Đếm số dòng chứa chuỗi kí tự tìm kiếm và hiển thị tổng số dòng |
/n | Hiển thị số dòng của dòng chứa chuỗi kí tự tìm kiếm trong file |
/i | Tìm kiếm chuỗi kí tự cần tìm không phân biệt chữ hoa, chữ thường |
/? | Hiển thị hướng dẫn sử dụng câu lệnh |
Ví dụ 1: Hiển thị tất cả các dòng trong file colors.txt có chứa chuỗi kí tự red và blue
find red blue colors.txt
Ví dụ 2: Hiển thị tất cả các dòng trong tất cả file thư mục colors có chứa chuỗi kí tự red và blue
for %f in (*.text) do find PROMPT %f
Ví dụ 3: Hiển thị file có chứa chuỗi kí tự colors.txt trong phân vùng C:
dir c:\ /s /b | find colors.txt
Với ví dụ ở trên, cũng giống như linux windows cung cấp cho người dùng công cụ pipe để chuyển kết quả thực thi của một câu lệnh trước đó tới câu lệnh tiếp theo.
Tham khảo:
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/find
3. For
Thực hiện câu lệnh đối với mỗi file hoặc một nhóm files. Đây là một câu lệnh rất mạnh với khả năng kết hợp nhiều cài đặt phức hợp để thực hiện.
Command của for có dạng như sau:
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Chú thích câu lệnh:
Parameters | Ý nghĩa |
---|---|
{%% | %}<variable> | %<tên_biến>: khi thực thi câu lệnh trực tiếp tại command-promt %%<tên_biến>: khi khai báo biến trong batch |
<set> | Thư mục, file hoặc nhóm thư mục, nhóm file áp dụng lệnh |
<command> | Lệnh thực hiện |
[<commandlineoptions>] | Options kèm theo với câu lệnh |
/? | Hiển thị hướng dẫn sử dụng |
Ví dự 1: Đọc file CSV với dữ liệu được cách nhau bằng dấu "," và lấy dữ liệu từ cột từ 2 đến cột thứ 3
for /f "eol=; tokens=2,3 delims=," %i in (myfile.txt) do @echo %i %j
Đối với biến dữ liệu được lấy ra,dữ liệu cột 2 sẽ được lưu giữ vào biến %i và được ngầm hiểu dữ liệu cột 3 sẽ được lưu vào biến %j dựa trên xử lý của "tokens=". "tokens=" có thể đặc định lên tới 26 tokens.
Ví dụ 2: Lọc dữ liệu từ kết quả của một lệnh được thực thi.
for /f "usebackq tokens=1,2 delims==" %i in (`set`) do @echo %i,%j
Sau khi chạy câu lệnh trên, sẽ hiển thị biến môi trường và giá trị của biến.
Ví dự 3: Hiển thị tên file có trong một thư mục được chỉ định.
for /f usebackq %i in (`dir /s /b`) do @echo %~ni
For sẽ đọc kết quả thực hiện của câu lệnh "dir /s /b", tách lấy phần tên file không bao gồm tên đuôi file mở rộng.
Tham khảo:
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/for
4. Windows Batch File & Powershell & VBScript
Ngoài những command hay được sử dụng ở trên của Command-Prompt, Microsoft còn cung cấp cho người dùng những chức năng mới và mạnh hơn như Batch File, PowerShell và VBScript. Những chức năng này đều có khả năng thực hiện những câu lệnh từ đơn giản đến phức tạp như quản lý task, thread, khởi chạy ứng dụng. Do giới hạn của bài viết, nên xin được phép giới thiệu qua như sau:
Batch File là tập hợp các câu lệnh Command-Prompt được định nghĩa lưu dưới dạng file văn bản (text) với đuôi mở rộng là *.bat. Khi được khởi chạy trình Command-Prompt sẽ đọc và thực hiện các câu lệnh được định nghĩa.
Tham khảo:
https://en.wikipedia.org/wiki/Batch_file
Từ năm 2006, với sự phổ biến của .NET FRAMEWORK, Microsoft đã đưa thêm vào môi trường Shell mới gọi là PowerShell. PowerShell vừa có thể chạy các command của Command-Prompt, lại vừa có thể thực hiện các câu lệnh shell (command-line shell) và ngôn ngữ kịch bản (scripting language). Power Shell được tạo trên .Net Common Language Runtime (CLR), và cho phép nhận và trả về đối tượng .Net.
Tham khảo:
https://docs.microsoft.com/en-us/powershell/
Bên cạnh đó, Windows cũng cung cấp cho người dùng một ngôn kịch bản là VBScript (Microsoft Visual Basic Scripting Edition) được bắt đầu từ một phần của chiến dịch Microsoft Windows Script Technologies vào năm 1996. VBScript được tích hợp hầu hết trên tất cả các phiên bản Windows. Được khởi chạy bởi IIS (Internet Information Server), WSH (Windows Script Host), IE (Internet Explorer).
Tham khảo:
https://go.microsoft.com/fwlink/?linkid=5720
Leave a Reply