[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích

Tài liệu mà chúng tôi xuất bản ngày hôm nay là dành cho những ai muốn thành thạo dòng lệnh Linux. Khả năng sử dụng công cụ này một cách hiệu quả có thể tiết kiệm rất nhiều thời gian. Đặc biệt, chúng ta sẽ nói về Bash shell và 21 lệnh hữu ích tại đây. Chúng ta cũng sẽ nói về cách sử dụng cờ lệnh và bí danh Bash để tăng tốc độ gõ các lệnh dài.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích

Cũng đọc trên blog của chúng tôi một loạt ấn phẩm về tập lệnh bash

về

Khi học cách làm việc với dòng lệnh Linux, bạn sẽ gặp nhiều khái niệm hữu ích để điều hướng. Một số trong số chúng, như "Linux" và "Unix", hoặc "shell" và "terminal", đôi khi bị nhầm lẫn. Hãy nói về những điều này và các điều khoản quan trọng khác.

Unix là một hệ điều hành phổ biến được Bell Labs phát triển vào những năm 1970. Mã của cô ấy đã bị đóng.

Linux là hệ điều hành giống Unix phổ biến nhất. Nó hiện được sử dụng trên nhiều thiết bị, bao gồm cả máy tính.

Thiết bị đầu cuối (thiết bị đầu cuối) hoặc trình mô phỏng thiết bị đầu cuối là một chương trình cho phép truy cập vào hệ điều hành. Bạn có thể mở nhiều cửa sổ đầu cuối cùng một lúc.

Vỏ (shell) là một chương trình cho phép bạn gửi các lệnh được viết bằng ngôn ngữ đặc biệt tới hệ điều hành.

Cú đánh là viết tắt của Bourne Again Shell. Đây là ngôn ngữ shell phổ biến nhất được sử dụng để tương tác với hệ điều hành. Ngoài ra, shell Bash là mặc định trên macOS.

Giao diện dòng lệnh (Giao diện dòng lệnh, CLI) là một phương thức tương tác giữa người và máy tính, sử dụng phương pháp này người dùng nhập lệnh từ bàn phím và máy tính, thực thi các lệnh này, hiển thị thông báo dưới dạng văn bản cho người dùng. Công dụng chính của CLI là lấy thông tin cập nhật về một số thực thể nhất định, chẳng hạn như tệp và để làm việc với tệp. Giao diện dòng lệnh phải được phân biệt với giao diện đồ họa người dùng (GUI), giao diện này chủ yếu sử dụng chuột. Giao diện dòng lệnh thường được gọi đơn giản là dòng lệnh.

Kịch bản (script) là một chương trình nhỏ chứa một chuỗi lệnh shell. Các tập lệnh được ghi vào tập tin, chúng có thể được sử dụng nhiều lần. Khi viết tập lệnh, bạn có thể sử dụng các biến, điều kiện, vòng lặp, hàm và các tính năng khác.

Bây giờ chúng ta đã đề cập đến các thuật ngữ quan trọng, tôi muốn chỉ ra rằng tôi sẽ sử dụng các thuật ngữ "Bash", "shell" và "dòng lệnh" thay thế cho nhau ở đây, cũng như các thuật ngữ "thư mục" và "thư mục".

Tiêu chuẩn dòng suối, mà chúng ta sẽ sử dụng ở đây là đầu vào tiêu chuẩn (đầu vào tiêu chuẩn, stdin), đầu ra tiêu chuẩn (đầu ra tiêu chuẩn, stdout) và đầu ra lỗi tiêu chuẩn (lỗi tiêu chuẩn, stderr).

Nếu trong các lệnh ví dụ được đưa ra bên dưới, bạn sẽ tìm thấy một cái gì đó như my_whatever - điều này có nghĩa là đoạn này cần được thay thế bằng thứ gì đó của bạn. Ví dụ: tên của một tập tin.

Bây giờ, trước khi tiến hành phân tích các lệnh mà tài liệu này dành riêng cho chúng, chúng ta hãy xem danh sách và mô tả ngắn gọn của chúng.

21 lệnh Bash

▍Nhận thông tin

  • man: Hiển thị hướng dẫn sử dụng (trợ giúp) cho lệnh.
  • pwd: hiển thị thông tin về thư mục làm việc.
  • ls: hiển thị nội dung của một thư mục.
  • ps: Cho phép bạn xem thông tin về các tiến trình đang chạy.

▍Thao tác hệ thống tập tin

  • cd: thay đổi thư mục làm việc.
  • touch: tạo một tập tin.
  • mkdir: tạo một thư mục.
  • cp: Sao chép một tập tin.
  • mv: Di chuyển hoặc xóa một tập tin.
  • ln: tạo liên kết.

▍Chuyển hướng I/O và đường dẫn

  • <: chuyển hướng stdin.
  • >: chuyển hướng stdout.
  • |: chuyển đầu ra của một lệnh sang đầu vào của lệnh khác.

▍Đọc tập tin

  • head: đọc phần đầu của tập tin.
  • tail: đọc cuối tập tin.
  • cat: Đọc một tập tin và in nội dung của nó ra màn hình hoặc nối các tập tin.

▍Xóa tập tin, dừng tiến trình

  • rm: Xóa một tập tin.
  • kill: dừng quá trình.

▍Tìm kiếm

  • grep: tìm kiếm thông tin.
  • ag: lệnh nâng cao để tìm kiếm.

▍Lưu trữ

  • tar: tạo các kho lưu trữ và làm việc với chúng.

Hãy nói về các lệnh này chi tiết hơn.

Chi tiết đội

Để bắt đầu, hãy xử lý các lệnh, kết quả của chúng được đưa ra dưới dạng stdout. Thông thường những kết quả này xuất hiện trong cửa sổ terminal.

▍Nhận thông tin

man command_name: hiển thị hướng dẫn lệnh, tức là thông tin trợ giúp.

pwd: hiển thị đường dẫn đến thư mục làm việc hiện tại. Trong quá trình làm việc với dòng lệnh, người dùng thường cần tìm hiểu chính xác mình đang ở đâu trong hệ thống.

ls: hiển thị nội dung của một thư mục. Lệnh này cũng được sử dụng khá thường xuyên.

ls -a: hiển thị cac file bị ẩn. cờ được áp dụng ở đây -a đội ls. Việc sử dụng cờ giúp tùy chỉnh hành vi của các lệnh.

ls -l: Hiển thị thông tin chi tiết về tập tin.

Lưu ý rằng các cờ có thể được kết hợp. Ví dụ - như thế này: ls -al.

ps: Xem các tiến trình đang chạy.

ps -e: Hiển thị thông tin về tất cả các tiến trình đang chạy, không chỉ những tiến trình được liên kết với shell người dùng hiện tại. Lệnh này thường được sử dụng trong hình thức này.

▍Thao tác hệ thống tập tin

cd my_directory: thay đổi thư mục làm việc thành my_directory. Để di chuyển lên một cấp trong cây thư mục, hãy sử dụng my_directory đường dẫn tương đối ../.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
lệnh cd

touch my_file: tạo tập tin my_file dọc theo con đường đã cho.

mkdir my_directory: tạo một thư mục my_directory dọc theo con đường đã cho.

mv my_file target_directory: Di chuyển tệp tin my_file vào thư mục target_directory. Khi chỉ định thư mục đích, bạn cần sử dụng đường dẫn tuyệt đối đến nó (chứ không phải một cấu trúc như ../).

đội mvcũng có thể được sử dụng để đổi tên tập tin hoặc thư mục. Ví dụ: nó có thể trông như thế này:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: tạo một bản sao của một tập tin my_source_file và đặt nó vào một thư mục target_directory.

ln -s my_source_file my_target_file: tạo một liên kết tượng trưng my_target_file mỗi tập tin my_source_file. Nếu bạn thay đổi link thì file gốc cũng sẽ thay đổi.

Nếu tập tin my_source_file thì sẽ bị xóa my_target_file sẽ vẫn còn. Lá cờ -s đội ln cho phép bạn tạo liên kết cho các thư mục.

Bây giờ hãy nói về chuyển hướng I/O và quy trình.

▍Chuyển hướng I/O và đường dẫn

my_command < my_file: thay thế bộ mô tả tệp đầu vào tiêu chuẩn (stdin) trên mỗi tệp my_file. Điều này có thể hữu ích nếu lệnh đang chờ một số đầu vào từ bàn phím và dữ liệu này đã được lưu trong một tệp.

my_command > my_file: chuyển hướng kết quả của lệnh, tức là những gì thường đi vào stdout và xuất ra màn hình, ra file my_file. Nếu tập tin my_file không tồn tại - nó được tạo ra. Nếu tập tin tồn tại, nó sẽ bị ghi đè.

Ví dụ: sau khi thực hiện lệnh ls > my_folder_contents.txt một tệp văn bản sẽ được tạo chứa danh sách những gì có trong thư mục làm việc hiện tại.

Nếu thay vì ký hiệu > sử dụng công trình xây dựng >>, sau đó, miễn là tệp mà đầu ra của lệnh được chuyển hướng đến tồn tại, tệp này sẽ không bị ghi đè. Dữ liệu sẽ được thêm vào cuối tập tin này.

Bây giờ chúng ta hãy xem xử lý đường ống dữ liệu.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
Đầu ra của một lệnh được đưa vào đầu vào của lệnh khác. Nó giống như kết nối đường ống này với đường ống khác

first_command | second_command: ký hiệu băng tải, |, được sử dụng để gửi đầu ra của một lệnh này sang lệnh khác. Lệnh ở phía bên trái của cấu trúc được mô tả sẽ gửi tới stdout, Rơi vào stdin lệnh ở bên phải của biểu tượng đường ống.

Trên Linux, dữ liệu có thể được xử lý bằng cách sử dụng bất kỳ lệnh nào được định dạng đúng. Người ta thường nói rằng mọi thứ trong Linux đều là một đường dẫn.

Bạn có thể xâu chuỗi nhiều lệnh bằng cách sử dụng biểu tượng đường ống. Nó trông như thế này:

first_command | second_command | third_command

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
Một đường dẫn gồm một số lệnh có thể được so sánh với một đường dẫn

Lưu ý rằng khi có lệnh bên trái ký hiệu |, xuất cái gì đó tới stdout, những gì cô ấy xuất ra sẽ có sẵn ngay lập tức dưới dạng stdin đội thứ hai. Nghĩa là, hóa ra, bằng cách sử dụng đường ống, chúng ta đang xử lý việc thực thi các lệnh song song. Đôi khi điều này có thể dẫn đến những kết quả không mong đợi. Thông tin chi tiết về điều này có thể được đọc đây.

Bây giờ hãy nói về việc đọc dữ liệu từ tập tin và hiển thị chúng trên màn hình.

▍Đọc tập tin

head my_file: đọc các dòng từ đầu file và in ra màn hình. Bạn không chỉ có thể đọc nội dung của tập tin mà còn có thể đọc những gì lệnh xuất ra trong đó. stdinsử dụng lệnh này như một phần của đường ống.

tail my_file: đọc các dòng từ cuối tập tin. Lệnh này cũng có thể được sử dụng trong một đường ống.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
Đầu (đầu) ở phía trước và đuôi (đuôi) ở phía sau

Nếu bạn đang làm việc với dữ liệu bằng thư viện pandas thì các lệnh head и tail hẳn là quen thuộc với bạn. Nếu không phải như vậy, hãy nhìn vào hình trên và bạn sẽ dễ dàng ghi nhớ chúng.

Hãy xem xét các cách khác để đọc tệp, hãy nói về lệnh cat.

Đội cat in nội dung của tệp ra màn hình hoặc nối nhiều tệp. Nó phụ thuộc vào số lượng tệp được truyền cho lệnh này khi được gọi.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
lệnh mèo

cat my_one_file.txt: khi một tập tin được truyền cho lệnh này, nó sẽ xuất nó thành stdout.

Nếu bạn cung cấp cho nó hai tệp hoặc nhiều tệp thì nó sẽ hoạt động khác.

cat my_file1.txt my_file2.txt: sau khi nhận được một số tệp làm đầu vào, lệnh này sẽ nối nội dung của chúng và hiển thị những gì đã xảy ra trong stdout.

Nếu kết quả nối tệp cần được lưu dưới dạng tệp mới, bạn có thể sử dụng toán tử >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Bây giờ hãy nói về cách xóa tập tin và dừng quá trình.

▍Xóa tập tin, dừng tiến trình

rm my_file: xóa tài liệu my_file.

rm -r my_folder: xóa một thư mục my_folder và tất cả các tập tin và thư mục chứa trong đó. Lá cờ -r chỉ ra rằng lệnh sẽ chạy ở chế độ đệ quy.

Để ngăn hệ thống yêu cầu xác nhận mỗi khi xóa tệp hoặc thư mục, hãy sử dụng cờ -f.

kill 012345: Dừng quá trình đang chạy được chỉ định, cho nó thời gian để tắt nhẹ nhàng.

kill -9 012345: Buộc chấm dứt quá trình đang chạy được chỉ định. Xem cờ -s SIGKILL có nghĩa giống như lá cờ -9.

▍Tìm kiếm

Bạn có thể sử dụng các lệnh khác nhau để tìm kiếm dữ liệu. Đặc biệt - grep, ag и ack. Hãy bắt đầu làm quen với các lệnh này với grep. Đây là một lệnh đáng tin cậy, đã được thử nghiệm theo thời gian, tuy nhiên, lệnh này chậm hơn các lệnh khác và không thuận tiện khi sử dụng như hiện tại.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
lệnh grep

grep my_regex my_file: tìm kiếm my_regex в my_file. Nếu tìm thấy kết quả khớp, toàn bộ chuỗi sẽ được trả về cho mỗi kết quả khớp. Mặc định my_regex được xử lý như một biểu thức chính quy.

grep -i my_regex my_file: Việc tìm kiếm được thực hiện theo cách không phân biệt chữ hoa chữ thường.

grep -v my_regex my_file: trả về tất cả các hàng không chứa my_regex. Lá cờ -v có nghĩa là đảo ngược, nó giống với toán tử NOT, được tìm thấy trong nhiều ngôn ngữ lập trình.

grep -c my_regex my_file: Trả về thông tin về số lượng kết quả khớp với mẫu được tìm kiếm trong tệp.

grep -R my_regex my_folder: thực hiện tìm kiếm đệ quy trong tất cả các tệp nằm trong thư mục đã chỉ định và trong các thư mục được lồng trong đó.

Bây giờ hãy nói về đội ag. Cô ấy đến sau grep, nó nhanh hơn, thuận tiện hơn khi làm việc với nó.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
lệnh ag

ag my_regex my_file: trả về thông tin về số dòng và bản thân các dòng trong đó tìm thấy kết quả khớp với my_regex.

ag -i my_regex my_file: Việc tìm kiếm được thực hiện theo cách không phân biệt chữ hoa chữ thường.

Đội ag tự động xử lý tập tin .gitignore và loại trừ khỏi đầu ra những gì được tìm thấy trong các thư mục hoặc tệp được liệt kê trong tệp đó. Nó rất thoải mái.

ag my_regex my_file -- skip-vcs-ignores: nội dung của các tập tin kiểm soát phiên bản tự động (như .gitignore) không được tính đến khi tìm kiếm.

Ngoài ra, để thông báo cho nhóm ag trên đường dẫn tệp nào bạn muốn loại trừ khỏi tìm kiếm, bạn có thể tạo một tệp .agignore.

Ở đầu phần này, chúng tôi đã đề cập đến lệnh ack. Đội ack и ag rất giống nhau, chúng ta có thể nói rằng chúng có thể hoán đổi cho nhau tới 99%. Tuy nhiên, đội ag hoạt động nhanh hơn, đó là lý do tại sao tôi mô tả nó.

Bây giờ hãy nói về cách làm việc với kho lưu trữ.

▍Lưu trữ

tar my_source_directory: nối các tập tin từ một thư mục my_source_directory thành một tập tin tarball duy nhất. Những tệp như vậy rất hữu ích khi truyền một lượng lớn tệp cho ai đó.

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích
lệnh tar

Các tệp tarball được tạo bởi lệnh này là các tệp có phần mở rộng .tar (Băng lưu trữ). Thực tế là từ "băng" (băng) bị ẩn trong tên của lệnh và trong phần mở rộng tên của các tệp mà nó tạo ra cho biết lệnh này đã tồn tại được bao lâu.

tar -cf my_file.tar my_source_directory: tạo một tập tin tarball có tên my_file.tar với nội dung thư mục my_source_directory. Lá cờ -c là viết tắt của "tạo" (sáng tạo) và cờ -f là "tệp" (tệp).

Để trích xuất tập tin từ .tar-file, sử dụng lệnh tar với những lá cờ -x ("trích xuất", trích xuất) và -f ("tập tin", tập tin).

tar -xf my_file.tar: trích xuất các tập tin từ my_file.tar vào thư mục làm việc hiện tại.

Bây giờ hãy nói về cách nén và giải nén .tar-các tập tin.

tar -cfz my_file.tar.gz my_source_directory: ở đây sử dụng cờ -z ("zip", thuật toán nén) chỉ ra rằng thuật toán này nên được sử dụng để nén tệp gzip (GNUzip). Nén tệp giúp tiết kiệm dung lượng ổ đĩa khi lưu trữ các tệp đó. Ví dụ: nếu các tệp được lên kế hoạch để chuyển cho người dùng khác, điều này góp phần tải xuống các tệp đó nhanh hơn.

Giải nén tập tin .tar.gz bạn có thể thêm một lá cờ -z vào lệnh trích xuất nội dung .tar-files mà chúng ta đã thảo luận ở trên. Nó trông như thế này:

tar -xfz my_file.tar.gz
Cần lưu ý rằng đội tar Có nhiều cờ hữu ích hơn.

Bí danh Bash

Bí danh Bash (còn được gọi là bí danh hoặc tên viết tắt) được thiết kế để tạo tên viết tắt của các lệnh hoặc chuỗi của chúng, việc sử dụng chúng thay vì các lệnh thông thường sẽ tăng tốc công việc. Nếu bạn có bí danh bu, ẩn lệnh python setup.py sdist bdist_wheel, thì để gọi lệnh này, chỉ cần sử dụng bí danh này là đủ.

Để tạo bí danh như vậy, chỉ cần thêm lệnh sau vào tệp ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Nếu hệ thống của bạn không có tập tin ~/.bash_profile, sau đó bạn có thể tự tạo nó bằng lệnh touch. Sau khi tạo bí danh, hãy khởi động lại thiết bị đầu cuối, sau đó bạn có thể sử dụng bí danh này. Trong trường hợp này, đầu vào của hai ký tự sẽ thay thế đầu vào của hơn ba chục ký tự của lệnh, dành cho tổ hợp Các gói Python.

В ~/.bash_profile bạn có thể thêm bí danh cho bất kỳ lệnh nào được sử dụng thường xuyên.

▍Kết quả

Trong bài đăng này, chúng tôi đã đề cập đến 21 lệnh Bash phổ biến và nói về việc tạo bí danh lệnh. Nếu bạn quan tâm đến chủ đề này - đây một loạt các ấn phẩm dành riêng cho Bash. Здесь Bạn có thể tìm thấy phiên bản pdf của các ấn phẩm này. Ngoài ra, nếu bạn muốn học Bash, hãy nhớ rằng, cũng như bất kỳ hệ thống lập trình nào khác, thực hành là chìa khóa.

Gởi bạn đọc! Bạn sẽ thêm những lệnh nào hữu ích cho người mới bắt đầu vào những lệnh đã được thảo luận trong bài viết này?

Cũng đọc trên blog của chúng tôi một loạt ấn phẩm về tập lệnh bash

[đánh dấu] Bash cho người mới bắt đầu: 21 lệnh hữu ích

Nguồn: www.habr.com

Thêm một lời nhận xét