Điều hướng Input, Output trong Linux.
1.Streams
Input và output trong Linux được chia thành ba luồng: - standard input(stdin) được đánh số là 0 - standard output(stdout) được đánh số là 1 - standard error(stderr) được đánh số là 2
Standard input được truyền vào từ bàn phím còn standard output và standard error đều được hiển thị lên màn hình của người dùng
2. Standard Input
- Luồng standard input mang dữ liệu từ người dùng đến chương trình. Standard input thường được truyền vào từ bàn phím.
- Standard input bị kết thúc bởi EOF. EOF có thể được ghi vào bằng ctrl+d.
3. Standard output.
- Standard output in ra những dữ liệu mà được sinh ra bởi chưonwg trình. Khi mà standard output không được điều hướng, nó sẽ xuất văn bản ra terminal. Ví dụ:
- Nếu không có tùy chọn nào thì
echo
sẽ hiển thị bất kì argument được truyền cho nó trong command line. Một argument là một cái gì nó mà được nhận bởi chương trình.
4. Standard error
Standard error viết ra lỗi được tạo ra bởi chương trình trong quá trình nó thực thi. Giống như Stdout, standard error cũng được in ra màn hình. Ví dụ:
5. Điều hướng luồng
Câu lệnh với dấu ngoặc nhọn đơn sẽ ghi đè lên nội dung đã tồi tại ở điểm đíc. Ghi đè - > - standard output - < - standard input - 2> - standard error
Câu lệnh với dấu ngoặc nhọn kép sẽ không ghi đè lên nội dung đã tồn tại ở điểm đích - » - standard output - « - standard input - 2» - standard error
Ví dụ:
6. Pipes
- Pipe(đường ống) thường được sử dụng để điều hướng output stream từ một chương trình đến chương trình khác. Output từ chương trình đầu sẽ không in ra mà sẽ gửi đến chương trình sau, output của chương trình cuối cùng sẽ được in ra.
- Pipe được đại diện bởi thanh dọc |.
ví dụ:
ls | less
Lệnh ls sẽ liệt kê các file, thư mục trong thư mục hiện tại và đưa dữ liệu này cho less để hiển thị.
- Chức năng của pipe có vẻ giống với > và », nhưng sự khác biệt ở đây là pipe dùng để điều hướng output từ lệnh này sang lệnh khác trong khi > và » điều hướng output đến riêng một file.
7. Filter
Một số filter thông dụng:
grep
- dùng để lọc các dòng văn bản mà phù hợp với điều kiện được đưa vào grepegrep, fgrep, rgrep
- tương đương với lệnhgrep -E
,grep -F
vàgrep -r
.tee
- điều hướng standard input đến cả standard output và một hay nhiều file nữa.tr
- tìm và thay thế một chuỗi với một chuỗi khác.wc
- đếm ký tự, dòng và từ.cut
- là lệnh có thể chọn cột trong một file phụ thuộc vào một dâu phân cách.sed
- như một text editer cho các luồng.sort
- là lệnh dùng để sắp xếp stdin và in kết quả ra stdout.diff
- dùng để so sánh hai file.
Ví dụ
who | wc -l
: đếm số người đăng nhập vào hệ thốngcat /etc/passwd | cut -d: -f1 | sort | uniq
hiển thị danh sách các user được sắp xếp và loại bỏ các user bị lặp.[lệnh] > /dev/null
để xóa output của một lệnh.[lệnh] > /dev/null 2>&1
để xóa stdout và stderr của một lệnh vì stderr được điều hướng đến stdout.
8. Unix tool cơ bản
find
hiển thị tất cả các file (đường dẫn tới file) trong một thư mục chỉ định hoặc tìm kiếm tất cả các file phù hợp với một yêu cầu nào đó.find /
sẽ liệt kê tất cả các file có trong hệ thống.find . -name "*.conf"
sẽ tìm các file kết thúc bằng .conf trong thư mục hiện tại.
locate
tìm file nhưng khác với find, locate sẽ tìm file trong *mục lục của nó. Thường mục lục sẽ cập nhật 1 lần mỗi ngày. chạy lệnhupdatedb
để cập nhật lại mục lục cho locate.date
hiển thị thứ, ngày, giờ, múi giờ,…cal
hiển thị tháng hiện tại.timedatectl
hiển thị thông tin ngày giờ, hoặc cài đặt ngày giờ,..hostnamectl
để hiển thị hoặc cài đặt các thông số như hostname, location, chassic,..
tar
dùng để nén hoặc giải nén file.