Nếu bạn mới sử dụng Linux thì mình khuyên bạn nên làm quan dần với các lệnh Linux cơ bản trên terminal đi. Khi bạn đã quen thuộc với các lệnh, bạn sẽ thấy rằng Linux và Mac có nhiều điểm chung, nhưng các lệnh trên Windows lại có ít điểm tương đồng hơn. Chúng ta sẽ tìm hiểu điều đó trong bài viết sau.
Các lệnh linux cơ bản
Những người mới làm quen với Linux thường ngạc nhiên về lượng thời gian mà người dùng Linux lâu năm dành cho dòng lệnh. Có nhiều lý do chính đáng tại sao terminal lại phổ biến như vậy. Đối với quản trị hệ thống, cho đến nay đây là cách linh hoạt và mạnh mẽ nhất để ra lệnh cho máy tính của bạn. Bạn có thể gõ nhiều lệnh hơnvới nhiều tùy chọn hơn, môi trường máy tính để bàn và các ứng dụng của bạn đều có thể điều khiển qua lệnh, đồng thời dòng lệnh nhanh hơn nhiều nếu so với GUI. Bạn cũng có thể viết các tác vụ lặp đi lặp lại, tạo các Alias và viết các hàm shell để nâng cao hiệu suất.
Nếu bạn đang nghĩ đến việc chuyển từ Windows sang Linux hoặc chỉ muốn chơi với Windows Subsystem for Linux, bạn sẽ thấy dòng lệnh giống như một môi trường rất mới mẻ và hữu ích. Có rất nhiều lệnh có sẵn. Do vậy, cũng có rất nhiều người mới thấy ngộp khi sử dụng Linux.
Nhiều lệnh trên Linux có tên hai chữ cái khá khó hiểu và khó nhớ. Nhưng cũng có những lệnh mà bạn có thể nhận ra nếu bạn đã từng sử dụng cmd trên Windows. Ví dụ, các lệnh như ping và netstat có cùng tên trên Windows và Linux.
Tự khám phá và ghi nhớ các lệnh cho các tác vụ bạn thường làm thường là cách tuyệt vời để làm quen dần với Linux. Nhưng trong bài viết này, mình đã lọc ra 10 lệnh thường sử dụng nhất trên Linux, các lệnh cơ bản và đơn giản sẽ không được đề cập.
Thay đổi thư mục bằng cd là giống nhau trên cả hai nền tảng và ls trên Linux giống với dir trong Windows. Các lệnh Linux mà mình đã chọn rất hữu ích và giống trên Windows mà bạn sẽ thấy quen thuộc nếu đã sử dụng cmd của Windows.
1. Hiển thị nội dung của file: cat
Lệnh cat là bản sao của lệnh type
trên Windows. Nó hiển thị nội dung của tệp trong terminal. Bạn cũng có thể nối nhiều tệp thành một tệp duy nhất.
Trong file “verse-1.txt” có một đoạn thơ. Chúng ta có thể kiểm tra nội dung của file bằng lệnh cat
:
cat verse-1.text
Để xem nội dung của tệp khác, chúng ta chỉ cần gõ tên của file đó:
cat verse-2.txt
Để xem cả hai tệp cùng một lúc với một lệnh duy nhất, chúng tôi chuyển cả hai tên tệp cho cat
:
cat verse-1.txt verse-2.txt
Để tạo một tệp mới chứa nội dung của hai tệp, chúng ta có thể sử dụng lệnh sau:
cat verse-1.txt verse-2.txt > newfile.text
2. Liên kết phần mềm với các loại tệp: mimeopen
Lệnh mimeopen hoạt động giống như lệnh assoc của Windows. Nó liên kết một chương trình mặc định với một loại tệp.
Windows sử dụng phần mở rộng tệp để xác định các loại tệp. Linux thì làm theo cách khác. Nó xác định loại tệp bằng cách xem nội dung của tệp văn bản hoặc chữ ký điện tử có trong vài byte đầu tiên của tệp kỹ thuật số.
Để thiết lập liên kết tệp, hãy sử dụng lệnh mimeopen
với tùy chọn -d (yêu cầu mặc định) và nhập tên của loại tệp mà bạn muốn liên kết.
mimeopen -d kernel-article.mm
Nếu ứng dụng bạn muốn sử dụng được liệt kê, hãy nhập số của ứng dụng đó. Trong ví dụ này, ứng dụng mình muốn không được liệt kê. Nên chúng ta có thể nhập “6” và sau đó gõ lệnh khởi chạy ứng dụng. Mình muốn mở loại tệp này bằng FreeMind, một ứng dụng lập bản đồ tư duy.
Ứng dụng sẽ được khởi chạy và mở tệp bạn đang thao tác trong terminal.
Ứng dụng này sẽ được sử dụng để mở các loại tệp đó.
3. Đặt thuộc tính tệp: chmod
Lệnh chmod
thiết lập các thuộc tính cho tệp, giống như lệnh attrib
trên Windows. Trên Linux, bạn có thể đặt quyền đọc tệp, ghi tệp và thực thi tệp. Các thuộc tính này cũng có thể được áp dụng cho thư mục.
Sử dụng tùy chọn -l (định dạng dài) với lệnh ls sẽ hiển thị danh sách các ký tự cho mỗi tệp, trông như thế này.
-rwxrwxrwx
Nếu ký tự đầu tiên là dấu gạch nối “-” thì có nghĩa là danh sách đại diện cho một tệp. Nếu ký tự đầu tiên là “d” thì danh sách đại diện cho một thư mục.
Phần còn lại của chuỗi được tạo thành từ ba nhóm ba ký tự. Từ bên trái, ba ký tự đầu tiên hiển thị quyền đối với tệp của chủ sở hữu, ba ký tự ở giữa hiển thị quyền đối với tệp của nhóm và ba ký tự ngoài cùng bên phải hiển thị quyền đối với những người dùng khác.
Trong mỗi nhóm, từ trái sang phải, các ký tự đại diện cho các quyền đọc, ghi và thực thi. Nếu có “r”, “w” hoặc “x” thì thuộc tính đó đã được bật. Nếu một chữ cái đã được thay thế bằng dấu gạch ngang “-” thì quyền đó không được bật.
Một cách dễ dàng để sử dụng chmod
là đại diện cho mỗi bộ ba quyền bằng một chữ số. Bằng cách cung cấp một số có ba chữ số cho chmod
, bạn có thể đặt quyền cho chủ sở hữu, nhóm và những người dùng khác. Chữ số ngoài cùng bên trái đại diện cho chủ sở hữu. Chữ số ở giữa đại diện cho nhóm. Chữ số ngoài cùng bên phải đại diện cho những chữ số khác. Các chữ số nằm trong khoảng từ 0 đến 7.
- 0: Không có quyền
- 1: Thực thi quyền
- 2: Quyền viết
- 3: Viết và thực thi quyền
- 4: Quyền đọc
- 5: Đọc và thực thi quyền
- 6: Quyền đọc và ghi
- 7: Đọc, ghi và thực thi quyền
Tệp “howtogeek.txt” có đầy đủ quyền được thiết lập cho mọi người. Chúng ta sẽ thay đổi thành quyền đầy đủ cho chủ sở hữu (7), đọc và ghi (6) cho nhóm và đọc (4) cho tất cả những người dùng khác.
ls -l howtogeek.text
chmod 764 howtogeek.txt
ls -l howtogeek.text
4. Tìm chuỗi: grep
Windows có lệnh find
. Nó tìm kiếm các tệp văn bản để tìm các chuỗi phù hợp. Tương đương với Linux là grep
. Tính linh hoạt và tinh vi của grep có thể khiến bạn bất ngờ, nhưng các nguyên tắc cơ bản của nó rất đơn giản. Nó quét qua văn bản để tìm các chuỗi phù hợp.
Để tìm kiếm trong tệp “/etc/passwd” các mục chuỗi có “dave”, chúng ta sử dụng lệnh sau:
grep dave /etc/passwd
Chuỗi không cần phải là một từ hoàn chỉnh. Trên thực tế, bạn có thể tìm kiếm bằng cách sử dụng một tập hợp các ký tự đại diện và biểu thức chính quy.
grep ove verse-1.txt
Bạn cũng có thể sử dụng grep để tìm kiếm thông qua đầu ra từ một lệnh khác. Lệnh ps liệt kê các tiến trình đang chạy. Tùy chọn -e (everything) liệt kê tất cả các quy trình. Chúng ta có thể chuyển nó thành grep và tìm kiếm các quy trình có “naut” trong tên.
ps -e | grep naut
5. Tìm sự khác biệt của tệp: diff
Lệnh diff
trên Linux, giống với lệnh fc
trên Windows. Nó so sánh hai tệp và tìm sự khác biệt giữa chúng. Điều này đặc biệt hữu ích khi bạn so sánh các phiên bản mới hơn và cũ hơn của mã nguồn, nhưng nó cũng hữu ích khi bạn đang kiểm tra hai phiên bản của bất kỳ tệp văn bản lớn nào.
Để so sánh hai tệp, hãy nhập tên của 2 tệp như sau:
diff core.c old-core.c
Các thay đổi là các dòng đã được thêm vào, các dòng đã bị loại bỏ hoặc các dòng đã được sửa đổi. Mỗi thay đổi được mô tả dưới dạng tốc ký. Tốc ký liệt kê số dòng (hoặc phạm vi dòng) trong tệp đầu tiên, một chữ cái, sau đó là số dòng hoặc các số trong tệp thứ hai. Chữ cái có thể là:
- c: Dòng trong tệp đầu tiên cần được thay đổi để khớp với dòng trong tệp thứ hai.
- d: Dòng trong tệp đầu tiên phải được xóa để khớp với tệp thứ hai.
- a: Nội dung bổ sung phải được thêm vào tệp đầu tiên để khớp với tệp thứ hai.
Để xem so sánh song song, hãy sử dụng tùy chọn -y (sideways). Việc sử dụng tùy chọn -W (width) thường hữu ích hơn để giới hạn chiều rộng của đầu ra.
diff -y -W 70 core.c old-core.c
Các dòng được hiện thị cạnh nhau. Các dòng đã thay đổi, thêm hoặc xóa được hiển thị bằng một ký hiệu ở giữa màn hình. Các ký hiệu có thể là:
- |: Một dòng đã được thay đổi trong tệp thứ hai.
- <: Một dòng đã bị xóa khỏi tệp thứ hai.
- >: Dòng đã được thêm vào tệp thứ hai không có trong tệp đầu tiên.
6. Tìm địa chỉ IP của bạn: ip addr
Lệnh ipconfig
của Windows hiển thị thông tin về kết nối mạng và địa chỉ IP của bạn. Trên Linux, cũng có lệnh tương tự là ip
hoặc ifconfig
. Nó có nhiều đối tượng và tham số hơn, chẳng hạn như addr, hiển thị thông tin về địa chỉ IP của bạn.
ip addr
Bạn sẽ tìm thấy địa chỉ IP của mình trong đầu ra. Trong ví dụ này, địa chỉ IP được hiển thị là 192.168.1.40/24. Điều đó có nghĩa, địa chỉ IP là 192.168.1.40 và mask là 255.255.255.0. “/ 24” là ký hiệu định tuyến liên miền không phân lớp cho network mask với ba bộ 8 bit được đặt thành 1.
Có rất nhiều thông tin có sẵn thông qua lệnh ip
.
7. Khám phá thông tin mạng: netstat
Lệnh netstat
của Windows có cùng tên trên Linux. Lệnh netstat
của Linux hiển thị thông tin về các kết nối mạng của bạn, bao gồm các sockets và các cấu trúc dữ liệu khác. Nếu netstat
chưa được cài đặt trên máy tính của bạn, bạn có thể cài đặt nó bằng cách sử dụng trình quản lý gói của bản phân phối.
Để xem các sockets TCP / IP đang nghe, hãy sử dụng các tùy chọn -l (listening) và -t (TCP / IP):
netstat -lt
8. Khắc phục sự cố kết nối: ping
Một lệnh khác có cùng tên trên Windows là ping
. Đây là một công cụ tuyệt vời để kiểm tra các kết nối mạng và xem liệu có một kết nối hợp lệ giữa các thiết bị được nối mạng hay không.
Nó gửi các gói ICMP ECHO_REQUEST đến thiết bị từ xa và lắng nghe phản hồi. Sau đó, nó cho bạn biết liệu có thể thực hiện kết nối hay không và thời gian trung bình của gói tính bằng mili giây.
Bạn có thể sử dụng ping với địa chỉ IP hoặc tên miền và mạng.
ping www.howtogeek.com
Để gửi một số lượng yêu cầu ping cụ thể, hãy sử dụng tùy chọn -c (count).
ping -c 4 www.howtogeek.com
9. Khám phá chi tiết phần cứng: lshw
Người dùng dòng lệnh Windows sẽ quen thuộc với lệnh systeminfo
. Lệnh lshw
của Linux cung cấp tính năng tương tự. Bạn có thể cần cài đặt lệnh này trên một số bản phân phối.
Có rất nhiều đầu ra từ lệnh này. Ngoài ra, hãy sử dụng sudo với lệnh này để nó có quyền truy cập các tệp và luồng hệ thống.
sudo lshw | less
Để có cái nhìn tổng quan, hãy sử dụng tùy chọn -short.
sudo lshow -short
10. Xác định Lộ trình của Gói: traceroute
Lệnh traceroute
trong Linux tương tự như lệnh tracert
của Windows. Lệnh này đếm các bước nhảy từ bộ định tuyến khi các gói đi từ máy tính của bạn đến thiết bị từ xa. Một số thiết bị không tiết lộ nhiều thông tin về các gói này. Các thiết bị bí mật này được hiển thị dưới dạng một dòng dấu hoa thị “*” trong đầu ra.
Bạn có thể sử dụng traceroute
với địa chỉ IP hoặc tên miền và thiết bị.
traceroute www.blarneycastle.ie
Một thế giới của sự khác biệt
Windows và Linux là hai nền tảng khác nhau nhưng chúng có một số lệnh chung — và thậm chí cả tên lệnh. Điều đó không quá ngạc nhiên. Các socket Windows đến từ Unix, vì vậy chắc chắn sẽ có một số trùng lặp trong thuật ngữ trong hai hệ điều hành.