
Của Linux rev
lệnh đảo ngược các chuỗi văn bản. Lệnh này có thể hoạt động trên văn bản hoặc tệp được cung cấp và nó có vẻ đơn giản. Nhưng giống như nhiều tiện ích dòng lệnh, sức mạnh thực sự của nó trở nên rõ ràng khi bạn kết hợp nó với các lệnh khác.
Các rev
command là một trong những tiện ích Linux đơn giản, thoạt nhìn, có vẻ là một thứ gì đó kỳ lạ. Nó thực hiện một chức năng duy nhất: nó đảo ngược các chuỗi. Và ngoài việc có thể in một trang trợ giúp nhanh chóng (-h
) và hiển thị cho bạn số phiên bản của nó (-V
), nó không chấp nhận bất kỳ tùy chọn dòng lệnh nào.
Vì thế, rev
đảo ngược chuỗi, và đó là nó? Không có biến thể hoặc tùy chọn? Vâng, có và không. Đúng, nó không có hoán vị, nhưng không, đó hầu như không phải là tất cả. Hướng dẫn này chỉ cho bạn cách kết hợp nó để có các hoạt động mạnh mẽ.
Khi bạn sử dụng rev
như một khối xây dựng trong các chuỗi lệnh phức tạp hơn, nó thực sự bắt đầu cho thấy giá trị của nó. rev
là một trong một nhóm lệnh (như tac
và yes
) là những người hỗ trợ. Sẽ dễ dàng hơn để đánh giá sự hữu ích của chúng khi bạn thấy cách chúng sử dụng các lệnh khác hiệu quả hơn.
Sử dụng lệnh rev
Được sử dụng trên dòng lệnh không có tham số nào khác, rev
nhận bất kỳ đầu vào đã nhập nào, đảo ngược nó, sau đó in nó trong cửa sổ đầu cuối. Nó tiếp tục làm điều này cho đến khi bạn nhấn Ctrl + C để thoát.
rev
Nếu bạn nhập một số văn bản và nhấn Enter, nó sẽ rev
in ngược lại chuỗi — tất nhiên trừ khi bạn cung cấp cho chuỗi đó một palindrome.
Chuyển văn bản đến vòng quay
Bạn có thể dùng echo
để chuyển văn bản thành rev
.
echo one two three | rev
Bạn cũng có thể dùng rev
để đảo ngược nội dung của toàn bộ tệp văn bản, từng dòng. Trong ví dụ này, chúng tôi có một tệp chứa danh sách các tên tệp. Tệp được gọi là “filelist.txt.”
rev filelist.txt
Mỗi dòng được đọc từ tệp, đảo ngược, và sau đó được in ra cửa sổ đầu cuối.
Kết hợp rev với các lệnh khác
Đây là một ví dụ sử dụng đường ống đầu vào gọi rev
hai lần.
Lệnh này loại bỏ ký tự cuối cùng khỏi chuỗi văn bản. Điều này có thể hữu ích để loại bỏ dấu chấm câu. Chúng ta cần sử dụng cut
lệnh để tước nhân vật.
echo 'Remove punctuation.' | rev | cut -c 2- | rev
Hãy phá vỡ điều đó.
-
echo
gửi chuỗi vào cuộc gọi đầu tiên tớirev
. -
rev
đảo ngược chuỗi và đưa nó vàocut
. - Các
-c
(ký tự) tùy chọn cho biếtcut
để trả về một chuỗi ký tự từ chuỗi. - Các
2-
tùy chọn nói vớicut
để trả về phạm vi ký tự từ ký tự hai cho đến cuối dòng. Nếu số thứ hai được cung cấp, chẳng hạn như2-5
, phạm vi sẽ là từ hai đến năm ký tự. Không có số thứ hai có nghĩa là “đến cuối chuỗi.” - Chuỗi đã đảo ngược — trừ đi ký tự đầu tiên — được chuyển đến
rev
điều này đảo ngược chuỗi, vì vậy nó trở lại thứ tự ban đầu.
Bởi vì chúng tôi đã cắt bỏ ký tự đầu tiên của đảo ngược chuỗi, chúng tôi đã cắt bỏ ký tự cuối cùng của nguyên chuỗi. Có, bạn có thể làm điều này với sed
hoặc là awk
, nhưng đây là một cú pháp dễ dàng hơn.
Tách từ cuối cùng
Chúng ta có thể sử dụng một thủ thuật tương tự để trả về từ cuối cùng của dòng.
Lệnh tương tự như lệnh cuối cùng: một lần nữa, nó sử dụng rev
hai lần. Sự khác biệt nằm ở cách cut
lệnh được sử dụng để chọn các phần của văn bản.
echo 'Separate the last word' | rev | cut -d' ' -f1 | rev
Đây là phân tích lệnh:
-
echo
gửi chuỗi vào cuộc gọi đầu tiên tớirev
. -
rev
đảo ngược chuỗi và đưa nó vàocut
. - Các
-d' '
(dấu phân cách) tùy chọn cho biếtcut
để trả về một chuỗi ký tự được phân tách bằng dấu cách. - Các
-f1
tùy chọn nói vớicut
để trả về phần đầu tiên của chuỗi không chứa dấu phân cách. Nói cách khác, phần đầu tiên của câu lên khoảng trắng đầu tiên. - Từ đầu tiên được đảo ngược được chuyển đến
rev
điều này đảo ngược chuỗi, vì vậy nó trở lại thứ tự ban đầu.
Bởi vì chúng tôi đã trích xuất từ đầu tiên của đảo ngược chuỗi, chúng tôi đã cắt bỏ từ cuối cùng của nguyên chuỗi. Từ cuối cùng của câu là “từ” và nó được in ra cho chúng tôi.
Cắt nội dung khỏi tệp
Giả sử chúng ta có một tệp chứa danh sách tên tệp và tên tệp nằm trong dấu ngoặc kép. Chúng tôi muốn xóa dấu ngoặc kép khỏi tên tệp.
Hãy xem tệp:
less filelist.txt
Nội dung của tệp được hiển thị cho chúng tôi trong less
.
Chúng ta có thể xóa dấu chấm câu ở cả hai đầu mỗi dòng bằng lệnh sau. Lệnh này sử dụng cả hai rev
và cut
hai lần.
rev filelist.txt | cut -c 2- | rev | cut -c 2-
Tên tệp được liệt kê cho chúng tôi mà không có dấu ngoặc kép.
Lệnh được chia nhỏ như thế này:
-
rev
đảo ngược các dòng trong tệp và chuyển chúng vàocut
. - Các
-c
(ký tự) tùy chọn cho biếtcut
để trả về một chuỗi ký tự từ mỗi dòng. - Các
2-
tùy chọn nói vớicut
để trả về phạm vi ký tự từ ký tự hai cho đến cuối mỗi dòng. - Các chuỗi đã đảo ngược, trừ đi các ký tự đầu tiên của chúng, được chuyển đến
rev.
-
rev
đảo ngược các chuỗi để chúng trở lại thứ tự ban đầu. Họ được đưa vàocut
lần thứ hai. - Các
-c
(ký tự) tùy chọn cho biếtcut
để trả về một chuỗi ký tự từ mỗi chuỗi. - Các
2-
tùy chọn nói vớicut
để trả về phạm vi ký tự từ ký tự hai cho đến cuối mỗi dòng. Điều này “nhảy qua” dấu ngoặc kép hàng đầu, là một ký tự trên mỗi dòng.
Rất nhiều đường ống
Đây là lệnh trả về danh sách được sắp xếp của mọi phần mở rộng tệp trong thư mục hiện tại. Nó sử dụng năm lệnh Linux riêng biệt.
ls | rev | cut -d'.' -f1 | rev | sort | uniq
Quá trình này rất đơn giản:
-
ls
liệt kê các tệp trong thư mục hiện tại. Chúng được đưa vàorev
. -
rev
đảo ngược tên tệp và chuyển chúng vàocut
. -
cut
trả về phần đầu tiên của mỗi tên tệp thành một dấu phân cách. Các-d'.'
nói vớicut
để sử dụng dấu chấm “.” làm dấu phân cách. Phần tên tệp đã đảo ngược cho đến thời kỳ đầu tiên là phần mở rộng tệp. Chúng được đưa vàorev
. -
rev
đảo ngược các phần mở rộng tệp vào thứ tự ban đầu của chúng. Chúng được đưa vàosort
. -
sort
sắp xếp các phần mở rộng tệp và chuyển kết quả vàouniq
. -
uniq
trả về một danh sách cho từng loại phần mở rộng tệp duy nhất. Lưu ý nếu không có phần mở rộng tệp (chẳng hạn như cho makefile và thư mục Trợ giúp và gc_help), toàn bộ tên tệp sẽ được liệt kê.
Để hoàn thiện nó, hãy thêm -c
(đếm) tùy chọn dòng lệnh cho uniq
chỉ huy.
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c
Bây giờ chúng ta nhận được một danh sách được sắp xếp của các loại tệp khác nhau trong thư mục hiện tại với số lượng từng loại.
Đó là một lớp lót khá tiện lợi!
drawroF og ot drawkcaB gnioG
Đôi khi bạn phải lùi lại để đi tiếp. Và bạn thường tiến nhanh nhất với tư cách là một phần của nhóm.
Thêm vào rev
vào danh mục các lệnh chuyển đến của bạn và bạn sẽ sớm sử dụng nó để đơn giản hóa các chuỗi lệnh phức tạp khác.