paint-brush
Dòng lệnh: Hướng dẫn toàn diệntừ tác giả@marcinwosinek
2,170 lượt đọc
2,170 lượt đọc

Dòng lệnh: Hướng dẫn toàn diện

từ tác giả Marcin Wosinek9m2023/01/18
Read on Terminal Reader

dài quá đọc không nổi

Có nhiều lập luận tốt để làm quen với giao diện dòng lệnh (CLI) Tuy nhiên, với tư cách là người mới bắt đầu hoàn chỉnh, việc bắt đầu có thể khó khăn và một phiên trình bao mới có thể cảm thấy hơi đáng sợ. Để bắt đầu, bạn cần một trình giả lập thiết bị đầu cuối: một chương trình mô phỏng quyền truy cập chỉ bằng văn bản vào máy của bạn.
featured image - Dòng lệnh: Hướng dẫn toàn diện
Marcin Wosinek HackerNoon profile picture

Có nhiều lập luận tốt để làm quen với giao diện dòng lệnh (CLI). Tuy nhiên, với tư cách là một người hoàn toàn mới bắt đầu, việc bắt đầu có thể khó khăn và một phiên trình bao mới có thể cảm thấy hơi đáng sợ:

Hãy xem qua những điều cơ bản về CLI!

Bắt đầu từ đâu

Điều đầu tiên bạn cần là một trình giả lập thiết bị đầu cuối: một chương trình mô phỏng quyền truy cập chỉ bằng văn bản vào máy của bạn. Bất kỳ hệ điều hành (HĐH) nào cũng sẽ có nhiều lựa chọn trình giả lập: tất cả chúng đều khá giống nhau và sự khác biệt chính sẽ là:


  • số lượng màu được hỗ trợ,


  • các tùy chọn có sẵn cho các loại phông chữ, kích cỡ hoặc lược đồ màu,


  • phím tắt để tăng kích thước phông chữ, v.v.


Ngay từ đầu, bạn sẽ thấy ổn với những gì có sẵn trong hệ điều hành hoặc môi trường phát triển tích hợp (IDE) của mình.

vỏ sò

Shell là một chương trình diễn giải các lệnh của bạn và chạy các chương trình cho bạn. Đó là một thứ khác với trình giả lập thiết bị đầu cuối mà chúng ta đã nói ở trên. Theo một cách nào đó, trong giao diện đồ họa của bạn, bạn mở thiết bị đầu cuối và bên trong thiết bị đầu cuối, bạn có một trình thông dịch các lệnh chỉ ở dạng văn bản.


Có nhiều tùy chọn có sẵn, với những khác biệt tinh tế có thể thay đổi rất nhiều trải nghiệm người dùng.

Zsh

Z shell, hay Zsh, là một trình thông dịch lệnh hiện đại và phổ biến. Giao diện của nó thân thiện với người dùng và có sẵn các gói cộng đồng cho phép bạn tùy chỉnh trải nghiệm shell của mình: Oh My Zsh . Tôi đã sử dụng nó được vài năm và hầu hết các thói quen CLI của tôi đều được điều chỉnh từ nó.

Bash

Bash là một giải pháp thay thế cũ hơn một chút so với Zsh. Nó rất phổ biến, vì vậy bạn có thể mong đợi nó có sẵn trên nhiều máy mà bạn sẽ gặp ngoài kia. Nhiều lối tắt từ Zsh cũng hoạt động ở đó, nhưng nó sử dụng các tệp cấu hình khác nhau và ngôn ngữ kịch bản lệnh hơi khác một chút.

SH

Vỏ tiêu chuẩn. Nó là một phần của các lệnh Unix tiêu chuẩn và nó hầu như được đảm bảo có trên bất kỳ máy nào giống Unix mà bạn tìm thấy. Do đó, đây là một lựa chọn an toàn khi viết kịch bản.


Giao diện người dùng thiếu nhiều cải tiến hiện đại, vì vậy tôi sẽ không sử dụng nó cho bất kỳ mục đích nào ngoài các tập lệnh nối dây.

Shell của tôi là gì Dù sao?

Bạn có thể kiểm tra shell của mình bằng echo $? :
Hình ảnhMô tả

Trong trường hợp của tôi, đó là zsh

Cách thay đổi vỏ của bạn

Mỗi shell là một chương trình và có thể chạy trực tiếp từ một shell khác. Ví dụ:


asciicast

Bằng cách này, bạn có thể kiểm tra shell nào mình đã cài đặt và kiểm tra chúng một cách nhanh chóng. Để thay đổi shell vĩnh viễn, bạn có thể sử dụng lệnh chsh (thay đổi shell), trong cả Linux và macOS:


asciicast

Nếu bạn thiếu shell mà bạn muốn sử dụng, bạn cần cài đặt nó trước—lệnh chính xác tùy thuộc vào bản phân phối OS hoặc Linux của bạn.

Khu nhà

Vì vậy, khi bạn đã thiết lập và chạy thiết bị đầu cuối của mình, bạn sẽ sử dụng nó như thế nào?

lệnh

CLI cho phép bạn chạy các lệnh bằng cách nhập tên của chúng vào terminal và nhấn enter. Mỗi lệnh là một chương trình riêng biệt cung cấp giao diện mở rộng và mỗi lệnh đều có tài liệu riêng.


Tương tự như vậy, mỗi hệ điều hành đều có bộ lệnh riêng, nhưng chúng có những điểm tương đồng—đặc biệt là với các hệ thống lấy cảm hứng từ Unix, macOS và Linux.


Trên Windows, dòng lệnh tiêu chuẩn cmd có một bộ lệnh rất khác, nhưng cũng có nhiều tùy chọn để có giao diện tương tự ở đó:


  • Hệ thống con Windows gốc cho Linux


  • Git BASH do Git cung cấp cho Windows


Unix là một hệ điều hành được công bố rộng rãi vào năm 1973 và nó đã ảnh hưởng đến rất nhiều thứ sau này. Thông số kỹ thuật hiện tại của nó xác định 161 lệnh , nhưng thật may mắn là bạn chỉ cần một số ít trong số chúng để hưởng lợi từ CLI.


Ví dụ về các lệnh:


  • ls liệt kê các tệp trong một thư mục—theo mặc định, nó hiển thị nội dung của thư mục hiện tại:
    Hình ảnhMô tả

  • pwd hiển thị đường dẫn hiện tại mà bạn đang chạy các lệnh của mình:


    Mô tả hình ảnh

  • cd thay đổi thư mục—theo mặc định, nó chuyển đến thư mục chính ( https://asciinema.org/ bản ghi hoặc ảnh chụp màn hình)


    asciicast

Tranh luận

Mỗi lệnh có thể nhận các đối số bổ sung. Đối số là các giá trị được phân tách bằng dấu cách xuất hiện sau tên lệnh. Ý nghĩa của các đối số phụ thuộc vào chương trình. Bạn có thể đọc về các đối số khác nhau trong tài liệu lệnh:


asciicast

Tùy chọn

Nhiều lệnh tiêu chuẩn đi kèm với các tùy chọn khác nhau cho phép bạn sửa đổi hành vi của chương trình. Ví dụ: ls thường được sử dụng với các tùy chọn sau:


  • -a —để hiển thị tất cả các tệp, kể cả những tệp bắt đầu bằng . —một quy ước Unix cho các tệp ẩn


  • -l —hiển thị các tệp ở định dạng dài—cung cấp thêm thông tin


Một quy ước chung là cho phép các tùy chọn dưới dạng tham số riêng biệt, ls -a -l hoặc được kết hợp thành một tham số, ls -la .
Hình ảnhMô tả

Thông số

Tham số là đối số cung cấp giá trị cho lệnh hoặc một trong các tùy chọn của lệnh.


Vì vậy, chẳng hạn, với ví dụ ở trên, bạn có thể cung cấp một đường dẫn để thay đổi hành vi mặc định:


  • ls workspace —liệt kê các tệp trong thư mục không gian làm việc:


    asciicast

  • cd workspace —thay đổi thư mục hiện tại thành không gian làm việc:


    asciicast

  • cat file —hiển thị nội dung tệp trên màn hình:


    asciicast

Ý nghĩa của các tham số phụ thuộc vào chương trình—lúc đầu, bạn có thể cần phải kiểm tra tài liệu rất nhiều.

Đầu ra tiêu chuẩn

Đầu ra tiêu chuẩn là văn bản được thêm vào dòng lệnh khi bạn chạy chương trình. Văn bản của nó được hiển thị bằng con đường hạnh phúc của việc thực hiện. Các ví dụ mà chúng ta đã thấy cho đến nay đã cho thấy đầu ra tiêu chuẩn của các lệnh khác nhau.


Khi học C++, một trong những điều đầu tiên bạn học là cout — đầu ra tiêu chuẩn.


Theo mặc định, đầu ra tiêu chuẩn chỉ được hiển thị trên màn hình, nhưng bạn có thể dễ dàng chuyển hướng nó tới một tệp bằng toán tử > . Thí dụ:


asciicast

Đầu ra lỗi

Đầu ra lỗi là nơi các chương trình hiển thị thông tin về các sự cố gặp phải trong quá trình thực thi. Trong khi chạy các lệnh trực tiếp từ thiết bị đầu cuối, đầu ra lỗi và đầu ra tiêu chuẩn được xử lý như nhau—chúng chỉ được hiển thị trên màn hình. Ví dụ: khi tôi cố gắng ls một tệp không tồn tại:


Hình ảnhMô tả

Sự khác biệt trở nên rõ ràng khi bạn chuyển hướng đầu ra sang một tệp:


Mô tả hình ảnh

Đầu vào tiêu chuẩn

Trong một quy trình công việc bình thường, đầu vào tiêu chuẩn là những gì bạn nhập vào chương trình của mình. Các lệnh chúng ta đã thấy cho đến nay thường không được sử dụng trong chế độ tương tác. Một ví dụ đơn giản có thể là một trang man cho phép cuộn:


asciicast

Đối với những người có kinh nghiệm về C++, bạn đã nghe thuật ngữ này cho cin :

 cin >> variable;


Đối với nhiều lệnh phổ biến, đầu vào tiêu chuẩn trở nên đặc biệt quan trọng do toán tử đường ống.

Đường ống

Đường ống là cách kết nối đầu ra tiêu chuẩn của một chương trình với đầu vào tiêu chuẩn của chương trình khác. Đây là cách CLI đạt được khả năng tương tác mà tôi đã đề cập trong bài viết trước .


Sử dụng đường ống cho phép bạn kết hợp các lệnh khác nhau theo nhiều cách sáng tạo—tôi sẽ trình bày một số ví dụ ở phần sau của loạt bài này. Hiện tại, một ví dụ đơn giản là:


asciicast

Ở đâu:

  • cat … —đọc các tệp và trả về nội dung của chúng ở đầu ra tiêu chuẩn,


  • less —lấy giá trị từ đầu vào tiêu chuẩn và làm cho giá trị đó vừa với màn hình


Tương tự, bằng cách sử dụng tiện ích tìm kiếm grep :


asciicast

Ở đâu:

  • cat … —như trên


  • grep 1 —lấy giá trị từ đầu vào tiêu chuẩn và lọc nó thành chỉ những dòng chứa 1 .

Ghi vào tập tin

Chúng tôi đã đề cập đến toán tử > được sử dụng để ghi đầu ra tiêu chuẩn của một lệnh vào một tệp. Toán tử này sẽ ghi đè tệp bằng đầu ra mà chúng tôi cung cấp. Nếu bạn muốn nối nó vào một tệp hiện có, bạn có thể sử dụng >> để thay thế.

Thư mục làm việc

Mọi thứ xảy ra trong dòng lệnh đều được thực hiện trong ngữ cảnh của một vị trí đĩa cụ thể—một thư mục đang hoạt động. Khi bạn chỉ định đường dẫn tệp tương đối—để đọc hoặc ghi—chúng được giải quyết từ thư mục làm việc.


Thông thường, bạn đặt thư mục làm việc của mình thành thư mục trên cùng của dự án mà bạn đang thực hiện. Khi bạn bắt đầu một phiên làm việc mới, thư mục làm việc thường được đặt thành thư mục chính của bạn.

Chạy lệnh

Trình thông dịch Shell cung cấp cho bạn nhiều phím tắt để tăng tốc công việc của bạn. Theo thời gian, bạn sẽ bắt đầu sử dụng chúng một cách trực quan mà không cần suy nghĩ về chúng.


Thông thường, khi chia sẻ màn hình với những người mới bắt đầu, tôi được nhắc nhở rằng những phím tắt đó không có gì khác ngoài hiển nhiên—dưới đây, tôi sẽ chỉ cho bạn một vài thủ thuật năng suất để làm việc với dòng lệnh.


Bản thân tôi đang sử dụng Zsh và các phím tắt này hoạt động ở đó. Ít nhất một số trong số chúng cũng hoạt động trong Bash, nhưng nó có thể phụ thuộc vào phiên bản và cấu hình chính xác.

Không gõ hai lần—Sử dụng mũi tên

Thủ thuật chính để nhanh chóng với CLI là không phải lúc nào cũng gõ mọi thứ. Trường hợp cơ bản nhất là lấy lại một lệnh mà bạn đã chạy một vài dòng trước đó. Bạn có thể làm như vậy bằng cách nhấn phím mũi tên lên.


Với mũi tên lên và mũi tên xuống, bạn có thể cuộn qua các lệnh gần đây và khi tìm thấy lệnh tương tự với lệnh bạn muốn chạy bây giờ, bạn có thể chỉnh sửa lệnh đó. Điều này tăng tốc toàn bộ quá trình lên rất nhiều vì bạn thường chạy các lệnh giống nhau, với một số khác biệt nhỏ trong đối số.


asciicast

Tìm kiếm các lệnh cũ hơn

Cuộn thủ công là tốt để nhận một trong số hoặc một số lệnh gần đây nhất. Tuy nhiên, nếu bạn muốn tìm hiểu thêm điều gì đó từ quá khứ, bạn có thể sử dụng chức năng tìm kiếm. Theo mặc định, lệnh bạn có thể sử dụng là CTRL + R để bắt đầu tìm kiếm trong lịch sử lệnh của mình:


asciicast

Sử dụng để Tự động điền

Bạn không cần phải gõ toàn bộ lệnh mà bạn muốn chạy. Cả Zsh và Bash đều hỗ trợ phím tab như một cách yêu cầu tự động điền—chúng sẽ điền lệnh hoặc tên tệp nếu chúng là duy nhất hoặc hiển thị cho bạn tất cả các tùy chọn khả dụng nếu nội dung bạn nhập phù hợp với nhiều khả năng.


Zsh cũng cung cấp tính năng tự động điền cho các tùy chọn lệnh.


Tự động điền là một tính năng tuyệt vời ở hai cấp độ: giúp bạn tiết kiệm thời gian nhập và giảm lỗi. Khi bạn học CLI, bạn nên đảm bảo tập thói quen sử dụng tính năng tự động điền càng nhiều càng tốt.


asciicast

Ký tự đại diện tên tệp

Bạn có thể tăng tốc độ nhập hơn nữa bằng cách sử dụng ký tự đại diện để khớp với tên của nhiều tệp:


asciicast

Máy nhắn tin—Ít hơn

Thông thường, khi một chương trình có quá nhiều đầu ra không vừa với màn hình, nó sẽ sử dụng một chương trình khác làm máy nhắn tin—một công cụ cho phép bạn điều hướng đầu ra và cuộn lên xuống. Thông thường, chương trình được sử dụng cho việc đó less . Có một vài điều đáng chú ý khi bạn sử dụng nó.

Cuộn đơn giản

Đầu tiên và quan trọng nhất, không cuộn bằng thanh cuộn do trình giả lập thiết bị đầu cuối của bạn cung cấp. less vẽ lại toàn bộ màn hình văn bản ở cuối đầu ra.


Nếu bạn cuộn lên bên trong trình giả lập thiết bị đầu cuối, bạn sẽ thấy những gì đã được các chương trình khác trả về trước đó, chứ không phải nội dung của tệp bạn muốn đọc. Thay vì cuộn bằng thanh cuộn (bánh xe cuộn), hãy sử dụng các mũi tên lên và xuống để di chuyển xung quanh tệp.


asciicast

Lối ra

Một điểm nhầm lẫn phổ biến khác - làm thế nào để tôi rời đi bây giờ? Bạn có thể để chế độ toàn màn hình là 'ít hơn' bằng cách nhấn q . Nó thường được tạo kiểu là :q vì các chương trình khác (ví dụ vim ) sử dụng : để bắt đầu một lệnh.

Đang tìm kiếm

Trong dòng lệnh, mọi thứ đều là văn bản và văn bản rất dễ tìm kiếm. Bạn có thể tìm kiếm bên trong nội dung được hiển thị bởi less bằng cách nhập /<search term> và điều hướng qua các kết quả bằng cách nhập nN :


asciicast

cuộn ưa thích

less hỗ trợ các lệnh điều hướng khác tương tự như những gì bạn có thể tìm thấy trong vim :


  • j —cuộn xuống một dòng
  • k —cuộn lên một dòng
  • gg —cuộn đến đầu tệp
  • G —cuộn đến cuối tập tin
  • d/u —xuống/lên nửa màn hình


Những phím tắt đó sẽ giúp bạn điều hướng nhanh qua tệp.

Bạn có quan tâm đến việc tìm hiểu thêm?

Thật tuyệt! Dòng lệnh là một công cụ tuyệt vời để nâng cao hiệu quả của bạn trong khi lập trình. Bạn có thể đăng ký tại đây để nhận thông tin cập nhật từ tôi khi tôi xuất bản các tài liệu khác liên quan đến dòng lệnh.


Cũng được xuất bản ở đây