Skip to content

Thủ Thuật Số

  • Sample Page

Thủ Thuật Số

  • Home » 
  • Thủ Thuật Máy Tính » 
  • Cơ Chế Hoạt Động Của Lệnh Linux: Giải Mã Từ Chương Trình Đến Alias

Cơ Chế Hoạt Động Của Lệnh Linux: Giải Mã Từ Chương Trình Đến Alias

By Administrator Tháng 8 21, 2025 0
Ví dụ đầu ra khi hiển thị biến môi trường PATH trong terminal Linux, cho thấy danh sách các đường dẫn mà shell tìm kiếm lệnh.
Table of Contents

Khi bạn gõ một lệnh Linux vào terminal, điều gì thực sự xảy ra đằng sau hậu trường? Hành động tưởng chừng đơn giản này lại ẩn chứa nhiều cơ chế phức tạp. Tùy thuộc vào việc bạn đang chạy một chương trình thực thi, một script shell, một lệnh tích hợp (builtin), một hàm shell do người dùng định nghĩa hay một alias, quá trình xử lý của hệ thống sẽ khác nhau. Hiểu rõ các loại lệnh và cách shell tìm kiếm, thực thi chúng là chìa khóa để làm chủ hệ điều hành Linux và tối ưu hóa quy trình làm việc của bạn. Bài viết này của Thuthuatso.net sẽ đi sâu vào từng cơ chế, giúp bạn nắm vững cách thức hoạt động của các lệnh Linux.

Các Loại Lệnh Linux Phổ Biến và Thứ Tự Ưu Tiên Của Shell

Trong môi trường Linux, các “lệnh” mà chúng ta tương tác hàng ngày được phân loại thành năm nhóm chính, mỗi nhóm có cách thức hoạt động và mục đích riêng biệt:

  • Chương trình (Program): Đây là các tệp nhị phân có thể thực thi được, tồn tại trên đĩa dưới một định dạng đã được nhận dạng (ví dụ: ELF trên Linux, Mach-O trên Mac). Shell sẽ chuyển giao chúng cho kernel để chạy.
  • Script Shell: Là một dạng chương trình cấp cao hơn, được viết bằng văn bản mà con người có thể đọc được. Một script shell có thể gọi và chạy các lệnh khác, thường được viết bằng các ngôn ngữ thông dịch như Perl hoặc Python.
  • Lệnh Builtin (Tích hợp): Đây là các lệnh nội bộ của shell, luôn có sẵn và thường chạy ở cấp độ thấp để thực hiện các thao tác ảnh hưởng trực tiếp đến shell.
  • Hàm Shell (Shell Function): Giống như một script shell nhỏ, đóng gói một tập hợp các lệnh lại với nhau dưới một tên duy nhất. Hàm shell thường được tải sẵn để có thể gọi bằng tên bất cứ lúc nào.
  • Alias (Bí danh): Là một tên thay thế cho bất kỳ loại lệnh nào ở trên. Bạn có thể tạo một alias ngắn gọn cho một lệnh dài hơn để tiết kiệm thời gian và công sức khi thực hiện các tác vụ phổ biến.

Thứ tự mà một shell như Bash tìm kiếm và cố gắng thực thi các loại lệnh này là rất quan trọng. Nói một cách đơn giản, Bash sẽ thử theo thứ tự sau: alias, hàm (function), lệnh tích hợp (builtin), rồi mới đến chương trình/script (program/script).

1. Thực Thi Chương Trình Executable (Binary)

Loại lệnh quen thuộc nhất chính là các tệp chương trình có thể thực thi. Nhiều chương trình phổ biến nhất là một phần của tiêu chuẩn POSIX, có nghĩa là chúng sẽ có sẵn trên hầu hết các hệ thống Unix hoặc giống Unix, bao gồm Linux và macOS. Ví dụ về các lệnh này bao gồm cat, diff, và vi.

Các chương trình dòng lệnh khác như Apache, Neofetch, hoặc tree có thể cần được cài đặt vì chúng thường không được bao gồm trong bản phân phối mặc định. Tuy nhiên, giống như các chương trình lệnh POSIX, chúng sẽ chạy thông qua một tệp chương trình duy nhất nằm ở đâu đó trên đĩa của bạn.

Có hai cách phổ biến để chạy một chương trình:

  1. Chỉ định đường dẫn đầy đủ hoặc tương đối: Bạn có thể gõ đường dẫn đến tệp chương trình, ví dụ: ./myprog hoặc /usr/bin/awk. Nếu phần đầu tiên của lệnh chứa bất kỳ dấu gạch chéo về phía trước nào, shell sẽ cố gắng tìm một tệp tại đường dẫn tương ứng. Chẳng hạn, bạn có thể chạy một chương trình tại /bin/cat như sau:

    /bin/cat myfile

    Shell sẽ kiểm tra xem có một chương trình thực thi tại /bin/cat hay không, sau đó chạy nó nếu tệp tồn tại. Trên Linux, các chương trình thực thi thường không có đuôi tệp mở rộng, ví dụ lệnh “grep” được chứa trong tệp tên là grep. Đây chỉ là một quy ước tiện lợi để dễ dàng nhận biết các tệp thực thi qua tên. Tuy nhiên, bạn hoàn toàn có thể đặt tên tệp thực thi của mình bất cứ điều gì bạn muốn, chẳng hạn như “myprog.exe” hoặc “myprog.RUNME.”

  2. Chỉ gõ tên chương trình (không có đường dẫn): Ví dụ:

    cat myfile

    Với một hệ thống được thiết lập đúng cách, lệnh này sẽ có tác dụng tương tự như trên, vì shell sẽ định vị được cùng chương trình cat. Nó làm như vậy bằng cách kiểm tra một biến môi trường đặc biệt có tên là PATH, trông giống như sau:

    Ví dụ đầu ra khi hiển thị biến môi trường PATH trong terminal Linux, cho thấy danh sách các đường dẫn mà shell tìm kiếm lệnh.Ví dụ đầu ra khi hiển thị biến môi trường PATH trong terminal Linux, cho thấy danh sách các đường dẫn mà shell tìm kiếm lệnh.

    Đây là một danh sách các đường dẫn được phân tách bằng dấu hai chấm mà shell sẽ tìm kiếm để định vị một chương trình. Thứ tự tìm kiếm là quan trọng vì bạn có thể có hai tệp cùng tên ở các vị trí khác nhau. Ví dụ, nếu bạn có một tệp /usr/bin/grep và một tệp /bin/grep, biến PATH như trên sẽ khiến shell chạy phiên bản trong /usr/bin. Hệ thống này cho phép bạn ghi đè một lệnh hệ thống bằng một lệnh tùy chỉnh phù hợp hơn với nhu cầu cụ thể của mình, điều này rất hữu ích.

2. Chạy Shell Script

Một shell script chạy hơi khác so với một chương trình thực thi và nó là một loại tệp rất khác. Một shell script đơn giản trông như thế này:

#!/bin/sh
echo Just a simple, pointless shell script

Dòng đầu tiên được gọi là “shebang” hoặc “hash-bang”, được đặt tên theo sự kết hợp của các ký tự # và !. Đây là một chỉ dẫn đặc biệt cho shell biết trình thông dịch nào sẽ được sử dụng cho phần còn lại của script. Trong trường hợp trên, đó là chính shell tại /bin/sh.

Phần còn lại của script là một chương trình văn bản mà trình thông dịch hiểu được. Trong trường hợp này, shell có thể chạy các lệnh như echo theo cách tương tự như khi bạn gõ chúng trên dòng lệnh.

Ngoài ra, một shell script rất giống với một chương trình thực thi, và shell của bạn sẽ tìm kiếm nó bằng biến PATH theo cùng một cách. Đối với cả chương trình và shell script, điều quan trọng cần lưu ý là quyền trên tệp tương ứng sẽ ảnh hưởng đến cách bạn chạy nó. Khi quyền thực thi được đặt, bạn có thể chạy chương trình bằng cách gõ tên hoặc đường dẫn của nó. Nhưng nếu quyền thực thi không được đặt, bạn sẽ thấy một lỗi:

Lỗi thông báo khi cố gắng chạy một tệp không có quyền thực thi trên terminal Linux.Lỗi thông báo khi cố gắng chạy một tệp không có quyền thực thi trên terminal Linux.

Bạn luôn có thể chạy một tệp như vậy bằng cách truyền tên của nó làm đối số cho một trình thông dịch thích hợp. Ví dụ, bạn có thể chạy một shell script như thế này:

sh myscript.sh

Bạn thậm chí có thể chạy một chương trình thực thi theo cách này, nhưng bạn sẽ cần phải tìm hiểu một chút trước. Lệnh file cung cấp thông tin về loại tệp, bao gồm cả trình thông dịch của nó:

Kết quả lệnh file và ls cho thấy chi tiết một chương trình nhị phân không có quyền thực thi trên Linux.Kết quả lệnh file và ls cho thấy chi tiết một chương trình nhị phân không có quyền thực thi trên Linux.

Trong trường hợp này, bạn có thể chạy chương trình nhị phân pwd bằng cách sử dụng chương trình /lib/ld-linux-aarch64.so.1:

Ví dụ chạy một chương trình nhị phân trên dòng lệnh Linux dù nó thiếu quyền thực thi, bằng cách gọi trực tiếp qua trình tải động.Ví dụ chạy một chương trình nhị phân trên dòng lệnh Linux dù nó thiếu quyền thực thi, bằng cách gọi trực tiếp qua trình tải động.

3. Thực Thi Lệnh Builtin (Lệnh Tích Hợp)

Một số lệnh cơ bản đến mức chúng cần hoạt động theo một cách hơi khác. Đây được gọi là các lệnh tích hợp (builtins) vì chúng, về cơ bản, là một phần của chính shell.

Các lệnh builtin thường ở cấp độ thấp và là những lệnh bạn sử dụng thường xuyên: cd, echo, và kill là những ví dụ phổ biến. Không giống như các chương trình và shell script, những lệnh này không tương ứng với một tệp cụ thể nào vì chúng là một phần của chính shell, được biên dịch vào tệp thực thi của shell.

Một số hệ thống có thể bao gồm các wrapper script chạy các lệnh builtin. Ví dụ, trên hệ thống macOS, có một script /usr/bin/cd sử dụng lệnh builtin để chạy lệnh tích hợp tương ứng. Điều này nhằm mục đích tương thích POSIX, và bạn có thể bỏ qua phiên bản script một cách an toàn.

Việc tìm hiểu về các lệnh builtin có thể khó khăn vì chúng hoặc không có trang hướng dẫn sử dụng (ví dụ: trên Ubuntu Linux) hoặc tất cả chúng đều có một trang hướng dẫn sử dụng lớn, dùng chung (macOS). Chương trình tldr là một cách tuyệt vời để tìm hiểu thêm về các lệnh builtin. Vì những lý do tương tự, các lệnh builtin thường hỗ trợ ít tùy chọn dòng lệnh hơn so với các chương trình đầy đủ chức năng. Ví dụ, cd thường chỉ hỗ trợ hai tùy chọn khá ít người biết: -L (để theo các liên kết tượng trưng) và -P (để tránh các liên kết tượng trưng). Điều này có nghĩa là, đáng tiếc, các tùy chọn như -h hoặc --help không được hỗ trợ.

4. Gọi Shell Function (Hàm Shell)

Một lệnh cũng có thể là một lời gọi đến một hàm. Bất cứ lúc nào trong một phiên làm việc, bạn có thể tải hoặc định nghĩa một hàm bằng cú pháp này (trong bash):

function_name() {
  commands
}

Ngoài ra, bạn có thể sử dụng cú pháp chèn từ khóa “function” trước tên hàm và bỏ dấu ngoặc đơn sau tên hàm:

function function_name {
  commands
}

Sau đó, bạn có thể gọi một hàm bằng cách gõ tên của nó, theo sau là bất kỳ đối số nào. Ví dụ, tôi có hàm trợ giúp sau được định nghĩa trong một tệp:

mkd () { mkdir -p "$@" && cd "$@" || exit }

Sau đó, tôi tải tệp này từ script điều khiển chạy của shell (~/.zshrc), và tôi có thể chạy lệnh này để tạo một thư mục mới và ngay lập tức chuyển đến đó:

mkd new_dir

Bạn có thể gọi một hàm như vậy trên dòng lệnh bất cứ khi nào bạn muốn. Bạn cũng có thể gọi nó từ các script, nhưng hãy nhớ rằng nó cần phải được tải (sử dụng lệnh source tích hợp, hoặc tương đương là . để làm như vậy).

5. Sử Dụng Alias (Bí Danh Lệnh)

Một alias là một tiện ích giúp bạn tiết kiệm thời gian gõ các tên lệnh dài hoặc các tùy chọn phổ biến. Ví dụ, trên hệ thống của tôi, tôi có một alias để đảm bảo danh sách tệp được hiển thị có màu, với hậu tố loại:

ls='ls -GF'

Bây giờ, nếu tôi chỉ gõ “ls”, lệnh “ls -GF” sẽ chạy thay thế.

Bạn có thể tạo một alias bất cứ lúc nào, bằng cách sử dụng lệnh alias tích hợp, ví dụ:

alias ls="ls -GF"

Lưu ý rằng cần có dấu ngoặc kép khi bạn chạy lệnh alias nếu chuỗi thay thế chứa bất kỳ khoảng trắng nào. Bạn có thể xem tất cả các alias bằng cách chạy alias, và bạn có thể xóa một alias bằng lệnh unalias. Tương tự, bạn sẽ muốn thêm các alias vào một tệp khởi động, như ~/.zshrc hoặc ~/.bashrc, nếu bạn muốn chúng áp dụng trên các phiên làm việc khác.

Kết luận

Hiểu rõ cách thức hoạt động của các lệnh trong Linux không chỉ là kiến thức nền tảng mà còn là một kỹ năng thiết yếu giúp bạn tương tác hiệu quả hơn với hệ điều hành mạnh mẽ này. Từ các chương trình nhị phân được kernel thực thi, đến sự linh hoạt của shell script, tính nội tại của các lệnh builtin, khả năng tổ chức của hàm shell và sự tiện lợi của alias, mỗi loại lệnh đều đóng góp vào sự phong phú và mạnh mẽ của môi trường Linux.

Việc nắm vững thứ tự ưu tiên của shell, cách nó tìm kiếm các chương trình thông qua biến PATH, và vai trò của quyền thực thi, sẽ giúp bạn gỡ lỗi các vấn đề về lệnh và tùy chỉnh môi trường làm việc theo cách thông minh hơn. Hy vọng bài viết này đã cung cấp cho bạn cái nhìn sâu sắc về cơ chế phức tạp đằng sau mỗi lần bạn gõ một lệnh trên terminal. Hãy tiếp tục khám phá và thử nghiệm để làm chủ hệ thống Linux của mình! Nếu bạn có bất kỳ câu hỏi hoặc kinh nghiệm thú vị nào muốn chia sẻ, đừng ngần ngại để lại bình luận bên dưới nhé!

Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

iPad Cũ Vẫn Cực Hữu Ích: 8 Cách Tận Dụng Thiết Bị Đời Cũ Của Bạn

Next post

7 Mẹo “Chơi Game Thả Ga” Không Lo Tốn Dung Lượng Data

Administrator

Related Posts

Categories Thủ Thuật Máy Tính Cơ Chế Hoạt Động Của Lệnh Linux: Giải Mã Từ Chương Trình Đến Alias

Tối Ưu Bảo Mật Firefox: 5 Cài Đặt Nâng Cao Cần Kích Hoạt Ngay

Categories Thủ Thuật Máy Tính Cơ Chế Hoạt Động Của Lệnh Linux: Giải Mã Từ Chương Trình Đến Alias

Tuta Ra Mắt Ứng Dụng Lịch Mã Hóa An Toàn: Tuta Calendar

Categories Thủ Thuật Máy Tính Cơ Chế Hoạt Động Của Lệnh Linux: Giải Mã Từ Chương Trình Đến Alias

Cách Nhắn Tin Cho Tài Khoản Riêng Tư Trên Instagram Hiệu Quả Nhất

Leave a Comment Hủy

Recent Posts

  • Tối Ưu Bảo Mật Firefox: 5 Cài Đặt Nâng Cao Cần Kích Hoạt Ngay
  • Tuta Ra Mắt Ứng Dụng Lịch Mã Hóa An Toàn: Tuta Calendar
  • Giải Mã I-Frames và Hitbox: Nâng Tầm Kỹ Năng Chơi Game Của Bạn
  • Plex Sẽ Ngừng Hỗ Trợ Drobo: Người Dùng Cần Làm Gì Ngay?
  • Những Tựa Game Có Lựa Chọn Khó Khăn Nhất Khiến Bạn Đau Đầu Suy Nghĩ

Recent Comments

Không có bình luận nào để hiển thị.
Copyright © 2025 Thủ Thuật Số - Powered by Nevothemes.
Offcanvas
Offcanvas

  • Lost your password ?