Redirection: Input & Output

command-Loạt bài về sử dụng lệnh trên ubuntu
-Nguồn https://tuyetkiem.wordpress.com
-Hãy trích lại thông tin trên khi bạn phổ biến nội dung bài viết.

Bài liên quan : Tạo, xóa quản lí tài khoản trong Ubuntu
Tài liệu sử dụng: Ebook unixtut của tác giả M.Stonebank
Bài viết gốc: Redirection: Input & Output
Các lệnh có thể dùng: cat, more, less, head, sort, tail, grep

1, Lấy dữ liệu đầu vào, xuất dữ liệu đầu ra
Ví dụ :

cat [Options] [filename]

Options :
-A : In tất cả ra màn hình và thêm dấu $ cuối mỗi dòng (tương đương với -vET)
-b : In ra tất cả nhưng đánh chỉ số cho những dòng không trống (black)
-e : Như -vE (có thêm dấu $ mỗi cuối dòng. Bất kể bạn đang ở đâu và đang sử dụng tài khoản nào)
-E : In ra tất cả và thêm dấu $ ở mỗi dòng
-s : In ra tất cả nhưng sẽ không có 2 dòng trống (black) đứng cạnh nhau.
-n : In ra tất cả và đánh số tất cả bao gồm cả những dòng black
-T : Hiển thị kí tự tab (sẽ hiển thị thành ^I)
-t : Như -vT
VD :(Dấu $ ám chỉ người dùng có UID khác 0. Bỏ qua $ khi thực hiện lại các câu lệnh nếu có )

$cat filename

$cat -n filename

2a, Chuyển hướng dữ liệu đầu vào
Ở mục 1, dữ liệu đầu vào của lệnh cat là từ 1 file cụ thể nào đó
Hãy thực hiên lệnh cat (bao gồm gõ lệnh cat và nhấn phím Enter) không kèm thêm bất cứ đường dẫn đến file nào.

$cat

Con trỏ đang đợi bạn nhập kí tự
Nhập một vài kí tự từ bàn phím và nhấn Enter
Điều gì đang xảy ra:
Mỗi lần bạn nhập kí tự và nhấn Enter, lệnh cat sẽ in ra màn hình những kí tự bạn vừa nhập. Để kết thúc lệnh. Hãy nhấn tổ hợp phím Control+D (Từ nay tôi sẽ viết tắt tổ hợp phím này là ^D)
Nhận xét :
Khi thực hiện lệnh cat không kèm thêm bất cứ file nào. Tức là không cung cấp dữ liệu đầu vào cho cat. Thì cat sẽ đọc dữ liệu đầu vào từ bàn phím, nhận lệnh thực hiện việc in ra màn hình bằng phím Enter. Kết thúc lệnh bằng ^D.

2b, Chuyển hướng dữ liệu đầu vào theo thứ tự abc
Các phím số sẽ chiếm các vị trí đầu tiên từ nhỏ đến lớn
Lệnh dùng :

$sort

Tôi nhập vào các dòng sau: (Sau mỗi dòng nhấn phím enter)

2
1
a
e
g

Để kết thúc tôi nhấn ^D. Khi đó màn hình sẽ in ra các dòng theo thứ tự 1,2,a,e,g
Như vậy lênh sort không in ra ngay dòng dữ liệu mỗi khi nhấn enter. Nó chỉ thực hiện khi bạn kết thúc việc nhập liệu bằng ^D
Lấy dữ liệu đầu vào từ 1 file và xuất ra màn hình theo thứ tự anphabe

$sort < infile

Điều này sẽ thay thế cho việc phải nhập liệu từ bản phím
-Lấy một input ngổn ngang và xuất 1 output theo thứ tự :

$sort < input > output

3, Chuyển hướng dữ liệu đầu ra
Ở mục 1, 2, đầu ra dữ liệu của lệnh cat là màn hình
Hãy chú ý ví dụ sau : (outputfile là tên một file mà tôi đặt ở ~/. Bạn có thể đặt chỗ khác nhưng cần chỉ ra đường dẫn đầy đủ cho lệnh cat. outputfile có thể đã có trong đường dẫn bạn quy định, hoặc chưa được tạo ra)

$cat > outputfile

Con trỏ đang đợi nhập liệu và tôi nhập vào một danh sách. Mỗi dòng của danh sách tôi nhấn phím enter và con trỏ đợi tôi nhập thêm ở dòng dưới. Muốn kết thúc tôi nhấn ^D
Điều gì đang xảy ra:
Trước hết lệnh sẽ tạo ra 1 file trắng tên là outputfile nếu nó chưa có (nếu outputfile có rồi thì lệnh sẽ thế file outputfile cũ bằng một file trắng không chứa dữ liệu). Sau đó cứ mỗi dòng danh sách mà tôi nhập vào và nhấn Enter sẽ được lưu vào file outputfile . Để kết thúc lệnh này tôi nhấn ^D
-Nhận xét:
Lệnh trên sẽ xuất dữ liệu đầu ra vào 1 file chỉ định thay vì màn hình.
4, Nối dữ liệu
Thay vì tạo ra 1 file mới ta hãy nối dữ liệu đầu ra vào 1 file cũ
Lệnh sau sẽ nối vào dưới cùng của file oldfile

$cat >> oldfile

Hãy nhớ lệnh cat hiểu phím Enter bạn đã gõ trước đó nếu thay vì gõ thì bạn lại copy, pase dữ liệu
5, Nối 2 file thành 1 file mới
Tôi có 2 file inainb. Tôi sẽ tạo ra 1 file mới out chứa dữ liệu của cả 2 file này:

$cat ina inb > out

File output không được trùng tên với những file input. Có thể tạo ra 1 file mới chứa dữ liệu từ n file :

$cat in1 in2 in3 ...inn > out_1_to_n

Lệnh này sẽ tạo ra file out_1_to_n chứa dữ liệu theo thứ tự, nối nhau của n file in1,…,inn
Dĩ nhiên trong các câu lệnh trên bạn có thể thay > bằng >> (không được thay >> bằng >)
Vì nếu thế chúng ta sẽ giải thích việc nối file vào 1 file mới hoàn toàn bởi >>

Thực chất của việc này là chúng ta lấy dữ liệu đầu vào từ 1 hay nhiều file và xuất dữ liệu đầu ra vào một file khác.

6, Pipes
Hãy gõ lệnh sau:

sudo apt-get autoclean

Lệnh làm sạch này có in ra màn hình vài thông báo như sau :

Building dependency tree...
Reading package lists...
Reading state information...

Ta sẽ xuất thông báo vào một file thay vì in ra màn hình

$sudo apt-get autoclean > outputfile

Muốn đọc thông báo này kèm theo số thứ tự dòng ta có thể dùng lệnh cat -b

$cat -b outputfile

Pipe là một file được định nghĩa đặc biệt trong các hệ thống *NIX. Được kí hiệu bằng phím | . Pipe tạo ra một ống giao tiếp giữa 2 tiến trình. Xin được trở lại vấn đề này trong một bài viết khác.
Hãy gõ lệnh sau :

$sudo apt-get autoclean | cat -b

Và màn hình sẽ in ra :


1 Reading package lists...
2 Building dependency tree...
3 Reading state information...

Những gì mà pipe làm là kết nối trực tiếp đầu ra của lệnh autoclean với đầu vào của lệnh cat -b
———-
Đón đọc bài tiếp theo : Liên kết cứng và liên kết mềm

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: