Command line là gì? dùng như thế nào?

Sau một vài lần support các bạn cài đặt và sử dụng các tools, mình biết 1 điều là hầu hết các bạn ko biết dùng command line. Và đây là bài mình giúp các bạn hiểu về nó, mặc dù có thể không đầy đủ tất cả các thành phần nhưng bạn sẽ tự tin sử dụng và biết sửa lỗi nếu gặp phải.

1. Command line (CLI) là gì?

  • Command là lệnh
  • Command line là dòng lệnh.
  • Hết.

Haha đùa thôi, theo mình hiểu thì ngày trước máy tính chủ yếu sử dụng dòng lệnh để giao tiếp, khi Windows ra đời thì nó nhanh chóng phổ cập hệ điều hành với giao diện đồ họa –> làm cho người dùng mất luôn khả năng giao tiếp bằng command line và không biết đến sự tồn tại của nó nữa. Đúng rồi, chính là bạn và tôi đấy. =)))

1 Tool thường có 2 kiểu: CLI và UI. Cũng có tool chỉ có UI và cũng có tool chỉ có CLI.

CLI thường được sử dụng trong các trường hợp configuration bằng code, các task lặp đi lặp lại. Ví dụ dự án mình làm là desktop app, khi có bản build mới mình phải uninstall bản cũ rồi install bản mới để test. Nếu mình cứ làm qua UI thì rất mất thời gian (đi qua rất nhiều form và dialog), thay vào đó mình chỉ run 1 câu lệnh là đã uninstall và 1 câu lệnh nữa là đã install được bản mới. Easy.

2. Làm thế nào để tương tác với command line?

Ok, bây giờ bạn có 1 tool mà nó support command line, nhưng làm thế nào để tương tác với các tool đó, bạn cần có Shell. Shell là tool đứng giữa bạn và hệ điều hành (OS), nó sẽ gọi đến OS và từ OS gọi đến CLI tool của bạn.

User --> Shell --> OS --> CLI tool
  • Shell ở trong Windows có Command Prompt (CMD) hoặc Powershell
  • Ở Linux thì có bash (default), Kornshell…
  • Ở MacOS thì có bash, zsh (default)…

Vì mình dùng máy Windows nên mình sẽ hướng dẫn 1 vài lệnh của CMD và Powershell nhé.

2.1 Command Prompt (CMD)

  • Cách open: Mở khung search gõ “CMD”
  • Trong này có 2 options:
    • Open: sẽ mở CMD mà vị trí đứng sẽ ở folder User, Ví dụ: C:\Users\NguyenGiang. Khi dùng với profile User, thì cái shell này chỉ tương tác với permission của user, nếu nó muốn save file vào 1 folder mà phải có quyền Admin thì nó bị failed. Hoặc nó muốn uninstall 1 cái program nào đó thì cũng sẽ bị failed thì uninstall cũng cần quyền admin.
    • Run as administratior: sẽ mở CMD mà vị trí đứng sẽ ở folder System. C:\Windows\System32. Đây là profile Admin, nó sẽ ko có quyền access vào các folder của User, ngược lại với bên trên, nhưng lại có quyền access vào các folder của hệ thống, ví dụ như save file vào folder C:\Program Files

2.2 Powershell

  • Open Powershell: Mở khung search gõ “Powershell”
  • Tương tự như CMD ở trên, Powershell cũng có 2 options tương ứng với 2 loại: User và Admin.
  • Trên hình, còn có 2 loại ghi là Powershell ISE, nó ko phải là Shell, nó là 1 khung code editor, có list sẵn các lệnh của Powershell để giúp bạn viết code Powershell.

2.3 Cách gọi 1 câu lệnh

Cú pháp của 1 câu lệnh sẽ là [tên câu lệnh] [tham số]

  • [tên câu lệnh] là tên của function bên trong CMD, mà từ đó CMD sẽ gọi đến hệ điều hành để thực hiện 1 việc.
  • [tham số] là các parameters của function.

Như bạn đã biết thì 1 function có thể có 0, 1, hoặc nhiều parameter.

Lệnh dir để list ra các files và folder có trong thư mục hiện tại. Ở đây mình đang đứng ở folder C:\Users\NguyenGiang

[tên câu lệnh] = dir
[tham số] = (không có)

mkdir là lệnh để tạo folder, nó có tham số là tên folder đi kèm theo. Ở đây mình tạo folder test1 bên trong folder C:\Users\NguyenGiang

[tên câu lệnh] = dir
[tham số] = test1

2.4 Làm thế nào SHELL biết tool CLI ở đâu?

Khi bạn gọi các câu lệnh, tool của OS, bạn có thể đứng ở bất kỳ chỗ nào cũng được. Tuy nhiên với các tool mà bạn download từ bên ngoài như JMeter, Java thì bạn phải có step sửa biến môi trường. Vì sao? đơn giản là vì hệ điều hành cần biết cái tool bạn để ở đâu, để nó gọi cho đúng.

Ở Windows, chỗ bạn sửa biến môi trường là:

Mình từng gặp lỗi khi 1 bạn học viên sửa biến môi trường của your account, nó ko có tác dụng, hãy chọn System Environment.

Tìm đến chỗ Path và add thêm đường dẫn trỏ đến file là ok. Ví dụ: JMeter của mình để ở C:\Tools\apache-jmeter-5.6.3\bin

Sau khi setting như vậy, mình có thể mở CMD hoặc poweshell để thử.

Như bạn đã thấy, mình đang đứng ở folder C:\Users\NguyenGiang mà mình vẫn gọi được JMeter. Nếu bạn ko set biến môi trường thì bạn sẽ phải gọi full đường dẫn.

Nếu mình xóa cái C:\Tools\apache-jmeter-5.6.3\bin trong Path thì sẽ báo lỗi khi gọi từ JMeter.

Lưu ý quan trọng: Khi bạn đang mở Shell mà bạn edit environment thì bạn phải tắt Shell đi rồi bật lại thì cái Shell đó mới cập nhật Path mới. Nếu bạn không tin, bạn có thể show biến Path trên CMD bằng câu lệnh echo %path%, hoặc Poweshell echo $env:path

Ở đây, mình đã nhìn thấy đường dẫn của JMeter sau khi đã add lại.

Nếu bạn tự nhiên quên mất cái path của 1 tool nào đó, bạn muốn check xem tool đó nằm ở đâu. Bạn có thể dùng CMD where [tool] hoặc Powershell where.exe [tool]. Ví dụ:

3. Các lỗi thường gặp và cách khắc phục

  • Vậy chuyện gì sẽ xảy ra khi mình viết liền [tên câu lệnh] và [tham số] ?

Đương nhiên là nó coi cả cái đấy là [tên câu lệnh] và làm gì có câu lệnh nào tên là mkdirtest2. Do đó nó sẽ báo lỗi là cái mkdirtest2 kia không phải là internal command, external command, không phải program và cũng ko phải batch file.

Đây là ví dụ từ 1 bạn học viên.

Câu lệnh đúng phải là java -version.

  • Chuyện gì sẽ xảy ra nếu chúng ta vô tình viết thêm khoảng trống (white space)?

Nó sẽ coi mkdir test 2[tên câu lệnh] [tham số 1] [tham số 2]. Và vì câu lệnh mkdir chỉ nhận 1 tham số, nên tham số thứ 2 nó sẽ bỏ qua. Kết quả là nó chỉ tạo 1 folder có tên là test

Lưu ý 1: cách xử lý của mỗi Shell cho các trường hợp sai tham số, thừa thiếu tham số là khác nhau, có Shell sẽ ignore, có Shell sẽ báo lỗi.

Lưu ý 2: Lỗi về khoảng trống khi gõ lệnh command line quá phổ biến, nên khi đặt tên file hoặc tên folder, KHÔNG BAO GIỜ được viết thêm khoảng trống (white space), hãy dùng dấu gạch ngang (hyphen) hoặc dấu gạch dưới (underscore) để viết tên dễ nhìn.

  • Tên không tốt: Project A Selenium
  • Tên tốt: Project-A-Selenium hoặc Project_A_Selenium

Nếu trót dùng folder mà có khoảng trống ở giữa thì nên có dấu double quote “”. Ví dụ:

  • Chuyện gì xảy ra nếu bạn viết sai tên của câu lệnh?

Còn chuyện gì được nữa, đương nhiên nó sẽ không hiểu lệnh đấy là gì rồi. Lỗi của nó giống lỗi đầu tiên ở phía trên.

Ví dụ cũng đến từ 1 bạn học viên:

Bạn ý muốn run nodejs, nhưng viết sai chính tả thành code, lỗi của Shell zsh bắn ra là command not found: code. Nếu bạn biết về command line, thì bạn có thể biết ngay vấn đề ở đâu rồi. 😀

4. Kết luận

Bài này không dạy bạn các lệnh của command line, mà nói cho bạn biết cách sử dụng command thông qua các shell, để nếu bạn có gặp 1 tool CLI mới thì bạn cũng nhanh chóng tìm được cách sử dụng. Nếu bạn viết sai ở đâu đó thì cũng nhanh chóng tìm được lỗi. Chúc bạn sớm tự tin sử dụng command line.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments