Tôi có một tập tin ví dụ / etc / passwd như thế này:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
Tôi đang cố gắng liệt kê tất cả người dùng có thư mục nhà /home/
.
tôi đã viết
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
trong đó e.txt là văn bản tôi đã sao chép ở đây.
Tôi hiểu có một vấn đề với dấu gạch chéo ngược là ký tự thoát, nhưng làm cách nào để khắc phục nó để tôi có thể liệt kê chúng trong một dòng lệnh?
grep home e.txt | cut -d ":" -f 1
. Chúc mừng giải thưởng UUOC của bạn. Tuy nhiên, đây không phải là một giải pháp tốt. Điều gì xảy ra nếu có một dịch vụ "trở về nhà" chạy dưới một người dùng riêng được đặt tên theo daemon? Đó là một dương tính giả.
cat > tool
biến thể của các dòng lệnh như vậy bởi vì nó có thể cải thiện độ rõ bằng cách duy trì luồng từ trái sang phải của đầu vào-xử lý-đầu ra của chuỗi ống. Nó là ít hiệu quả hơn, nhưng hầu như luôn luôn tối thiểu như vậy. Nó cũng làm cho việc thêm một thanh tiến trình có liên quan và hữu ích khi chạy tương tác rất rõ ràng (chỉ cần thay thế cat
bằng pv
nếu nó được cài đặt).
cat
với các công cụ nhưawk
hoặcsed
hoặc tương tự, vì chúng có thể được đặt tên tệp làm đối số.