Chào mọi người! Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu thật kỹ về các dòng lệnh command line (còn được gọi là CLI, console, terminal hoặc shell).

Command line là một trong những công cụ hữu ích và hiệu quả nhất mà chúng ta có khi chúng ta sử dụng máy tính. Tuy nhiên, nếu bạn mới bắt đầu làm quen với command line, bạn có thể cảm thấy command line hơi quá sức và phức tạp.
Trong bài viết này, tôi sẽ cố gắng giải thích một cách đơn giản nhất về giao diện command line và những kiến thức cơ bản về phương thức hoạt động của command line để bạn có thể tự tin sử dụng nó trong các tác vụ hàng ngày của mình.
Sự khác biệt giữa console, dòng lệnh (command line – CLI), terminal và Shell
Khi đề cập đến điều này, bạn có thể đã nghe đến các thuật ngữ Terminal, console, command line, CLI và shell. Mọi người thường sử dụng những từ này thay thế cho nhau nhưng về bản chất là chúng hoàn toàn khác nhau.
Việc phân biệt từng thứ không phải là điều quan trọng cần thiết, nhưng nó sẽ giúp làm sáng tỏ mọi thứ. Vì vậy, hãy giải thích ngắn gọn từng cái.
Console:
Console là một bảng giao diện cho phép người dùng tương tác với máy tính.
Hiểu một cách đơn giản, nó cũng giống như chuột, bàn phím hoặc màn hình máy tính, là một công cụ có thể giúp người dùng tương tác với máy tính.

Terminal:
Terminal là một môi trường hỗ trợ người dùng nhập thông tin đầu vào và xuất ra các thông tin trả về của máy tính. Nó là một chương trình hoạt động như một wrapper và cho phép chúng ta nhập các lệnh mà máy tính xử lý. Đơn giản hơn, Terminal chính là một “Window” cho phép bạn nhập lệnh để máy tính xử lý.

Tuy nhiên, bạn nên nhớ rằng bản chất Terminal vẫn là 1 phần mềm, và giống như tất cả các phần mềm khác, bạn có thể cài đặt hoặc gỡ cài đặt nó tuỳ theo ý mình. Bên cạnh đó, bạn cũng có thể cài đặt nhiều terminal khác nhau trên máy tính của mình và khởi chạy bất kỳ terminal nào mà bạn thích.
Tất cả các hệ điều hành hiện tại đều được đi kèm với một terminal mặc định. Tuy nhiên, có rất nhiều phần mềm terminal để bạn có thể lựa chọn với nhiều tính năng và tiện ích khác nhau.
Shell:
Shell là một chương trình hoạt động như một trình phiên dịch. Nó diễn giải, xử lý và đưa ra kết quả của các lệnh mà người dùng nhập vào.
Tương tự như terminal, Shell cũng là một phần mềm mặc định trong tất cả các hệ điều hành và người dùng có thể dễ dàng cài đặt hoặc gỡ cài đặt chúng. Tuy nhiên, tuỳ vào từng hệ điều hành mà các shell cũng có cú pháp và đặc điểm khác nhau.
Trong hầu hết các hệ điều hành Linux và Mac, shell mặc định là Bash. Trong khi trên Windows, đó là Powershell. Một số ví dụ phổ biến khác của shell là Zsh và Fish.
Shells cũng hoạt động như ngôn ngữ lập trình, nghĩa là với chúng, chúng ta có thể xây dựng các scripts để máy tính của chúng ta thực thi một tác vụ nhất định. Scripts không gì khác hơn là một loạt các commands mà chúng ta có thể lưu vào một tệp và sau đó thực thi bất cứ khi nào chúng ta muốn.
Chúng ta sẽ xem xét các script ở phần sau trong bài viết này. Bây giờ, hãy nhớ rằng shell là chương trình mà máy tính của bạn sử dụng để “hiểu” và thực hiện các lệnh của bạn, đồng thời bạn cũng có thể sử dụng nó để lập trình các tác vụ.
Command line hay CLI (command line interface):
CLI là giao diện mà chúng ta nhập các lệnh để máy tính xử lý. Đơn giản, đó là không gian mà bạn nhập các lệnh mà máy tính sẽ xử lý.

CLI trên thực tế khá giống với Terminal. Tuy nhiên, hầu hết các hệ điều hành thường có 2 loại giao diện khác nhau:
- CLI, nhận các lệnh làm đầu vào để máy tính thực thi các tác vụ.
- GUI (giao diện người dùng đồ họa), trong đó người dùng có thể nhìn thấy mọi thứ trên màn hình và nhấp vào chúng và máy tính sẽ phản hồi các sự kiện đó bằng cách thực hiện tác vụ tương ứng.
Tại sao chúng ta nên sử dụng terminal?
Chúng tôi vừa đề cập rằng hầu hết các hệ điều hành đều có GUI. Vì vậy, nếu chúng ta có thể nhìn thấy mọi thứ trên màn hình và thao tác bất cứ điều gì chúng ta muốn, bạn có thể tự hỏi tại sao bạn nên học terminal/cli/shell phức tạp hơn?
Lý do đầu tiên là đối với nhiều tác vụ, nó chỉ hiệu quả hơn. Chúng ta sẽ thấy một số ví dụ sau một giây, nhưng có nhiều tác vụ trong đó GUI sẽ yêu cầu nhiều lần nhấp xung quanh các cửa sổ khác nhau. Nhưng trên CLI, các tác vụ này có thể được thực hiện bằng một lệnh duy nhất.
Lý do thứ hai là bằng cách sử dụng các lệnh, bạn có thể dễ dàng tự động hóa các tác vụ. Như đã đề cập trước đó, chúng ta có thể xây dựng các scripts với shell của mình và sau đó thực thi các scripts đó bất cứ khi nào chúng ta muốn. Điều này cực kỳ hữu ích khi giải quyết các công việc lặp đi lặp lại mà chúng ta không muốn làm đi làm lại.
Lý do thứ ba là đôi khi CLI sẽ là cách duy nhất để chúng ta có thể tương tác với máy tính. Lấy ví dụ, trường hợp bạn cần tương tác với một máy chủ nền tảng đám mây. Trong hầu hết các trường hợp này, bạn sẽ không có sẵn GUI mà chỉ có CLI để chạy các lệnh.
Lý do cuối cùng là nó trông bắt mắt và rất vui. Bạn sẽ không bao giờ nhìn thấy một tin tặc sử dụng chuột để kích hoạt các cuộc tấn công. Thay vào đó, hầu hết các tin tặc đều sử dụng CLI phải không?
Phân biệt các loại Shell:
Trước khi đi sâu vào các commands bạn có thể thực thi, tôi nghĩ điều quan trọng là phải phân biệt được các loại Shell và nhận biết bản thân đang sử dụng loại Shell nào.
Các Shell khác nhau thường có cú pháp và tính năng khác nhau. Do đó, bạn cần biết chính xác mình đang sử dụng Shell nào để có thể nhập chính xác lệnh và các cú pháp của nó.
Posix
Posix được xem là tiêu chuẩn chung của hầu hết các loại Shell. Phương thức hoạt động của Posix khá giống với cách ECMAScript hoạt động trên JavaScript. Kể từ những năm 1980, Posix được xem là tiêu chuẩn của các loại Shell. Đó là lý do tại sao hầu hết các Shell đều sử dụng các cú pháp và tính năng gần như tương tự nhau.
Cách nhận biết thiết bị của bạn đang sử dụng Shell nào
Để biết thiết bị của bạn đang sử dụng shell nào, bạn chỉ cần mở terminal và nhập lệnh echo $0. Lệnh này sẽ xuất ra tên chương trình đang chạy hiện tại, trong trường hợp này là tên shell

Các Commands phổ biến và thường sử dụng:
Đọc đến đây, chắc các bạn cũng hiểu về nền tảng và cách mà các CLI hoạt động. Bây giờ, hãy cùng tôi tìm hiểu các lệnh thường dùng nhất mà bạn có thể áp dụng ngay cho công việc hàng ngày của mình. Lưu ý rằng các lệnh này đang được sử dụng trên Bash của Linux.
- Lệnh Echo: in ra tham số mà chúng ta nhập vào

- Lệnh pwd: pwd là viết tắt của cụm từ print working directory, lệnh này sẽ xuất ra thư mục mà chúng ta hiện đang làm việc trên máy tính
- Lệnh ls: sẽ xuất ra các thư mục và các tệp được chứa trong thư mục mà bạn đang đứng. Khi bạn sử dụng lệnh ls kết hợp với tham số -a, hệ thống sẽ xuất ra toàn bộ các tệp ẩn trong thư mục.

- Lệnh cd: cd là từ viết tắt của Change directory, và như nghĩa của nó, lệnh này sẽ đưa bạn từ thư mục này đến thư mục khác. Bạn có thể nhập lệnh cd Desktop để chuyển đổi thư mục làm việc đến Desktop. Nếu bạn muốn đi đến thư mục cha của thư mục đang làm việc, bạn có thể nhập cd ..
- Lệnh mkdir: mkdir là viết tắt của cụm từ make directory. Lệnh này sẽ giúp bạn khởi tạo một thư mục mới. Để thực thi lệnh mkdir, bạn phải buộc nhập thêm tên thư mục. Nếu bạn muốn tại 1 thư mục có tên là “Test”, bạn chỉ cần nhập lệnh mkdir test
- Lệnh rmdir: rmdir là từ viết tắt của Remove directory và đó cũng là công dụng của lệnh này. Để thực thi lệnh này, bạn cần cung cấp tham số tên thư mục cần xoá giống lệnh mkdir
- Lệnh touch: lệnh này cho phép bạn tạo 1 tệp rỗng với tên giống như tệp hiện tại đang có. Để thực thi lệnh này, bạn cần nhập vào tên tệp cần tạo. Lệnh sẽ có dạng touch text.txt
- Lệnh rm: Lệnh rm cho phép bạn xoá các tệp tin. Lệnh này hoạt động tư tự cách mà lệnh rmdir thực thi để xoá các thư mục: rm test.txt
- Lệnh cp: lệnh cp cho phép bạn sao chép các tệp tin hoặc thư mục. Lệnh này yêu cầu người dùng nhập vào 2 tham số. Tham số đầu tiền là tệp tin hoặc thư mục bạn muốn sao chép, tham số thứ 2 là thư mục mà bạn muốn sao chép tệp tin đến.
Nếu bạn muốn sao chép tệp tin test.txt thành 1 bản khác và đặt cùng thư mục, bạn có thể chạy lệnh sau:
cp test.txt testCopy.txt
Nếu bạn muốn sao chép tệp test.txt vào thư mục khác, bạn có thể nhập lệnh:
Cp test.txt /Thư mục đến/test.txt - Lệnh mv: mv là từ viết tắt của move. Như nghĩa của nó, lệnh này giúp người dùng di chuyển một tệp tin/thư mục từ nơi này sang nơi khác. Lệnh này thay thế cho thao tác Cut và Paste trên Windows
- Lệnh head: Lệnh head cho phép người dùng xem nhanh phần đầu nội dung trong 1 tệp tin.
- Lệnh tail: lệnh tail tương tự như lệnh head nhưng nó sẽ show nhanh đoạn nội dung cuối của tệp tin
Như vậy, chúng ta đã điểm sơ qua các lệnh cơ bản nhát trên CLI. Mời các bạn theo dõi tiếp phần 2 sẽ được cập nhật trong thời gian tới