Piping in linux.


Piping là giống như 1 đường ông, lấy output của command trước làm input của command sau.

Ta xem ví dụ:

echo "Hello Piping" | wc -w 
[dt-arco:~]
[dt]% echo "Hello Piping" | wc -w
2
[dt-arco:~]

echo "Hello Piping" sẽ in ra output và output này sẽ là input của wc -w , đếm số từ, kết quả ta có 2 từ.

Hoặc ta ls file ra dùng more để xem theo từng trang.

[dt]% cd  test        
[dt-arco:test]
[dt]% ls -l | more       
total 84
-rw-r--r-- 1 dt dt     6 06:40 25 Thg 4  abc.txt
-rw-r--r-- 1 dt dt   361 20:30  4 Thg 3  app.js
-rw-r--r-- 1 dt dt    31 06:09 24 Thg 4  a.txt
-rw-r--r-- 1 dt dt   185 05:50 30 Thg 1  filter.txt
-rw-r--r-- 1 dt dt   473 13:16  4 Thg 3  index.html
-rw-r--r-- 1 dt dt   276 21:01 17 Thg 3  index.php
-rwxr-xr-x 1 dt dt 24024 17 Thg 9   2021 install_arco.txt
drwxr-xr-x 3 dt dt  4096 14:10 17 Thg 4  move
-rw-r--r-- 1 dt dt   547 11:08 17 Thg 4  o.txt
-rw-r--r-- 1 dt dt    61 23:44  3 Thg 2  output.txt
drwxr-xr-x 2 dt dt  4096 17 Thg 9   2021 remote_ubuntu
drwxr-xr-x 2 dt dt  4096 17 Thg 9   2021 t
-rw-r--r-- 1 dt dt     8 05:53 15 Thg 2  text2.txt
-rw-r--r-- 1 dt dt   202 07:30  3 Thg 2  text.txt
--More--

Ta Enter sẽ xuống từng hàng, space xuống từng trang.

Hoặc ta muốn xem 5 file đầu tiên khi ls ra.

[dt]% ls  | head -5
abc.txt
app.js
a.txt
filter.txt
index.html
[dt-arco:test]
[dt]%

Hoặc xem 2 file cuối.

[dt]% ls  | tail -2
x.txt
xyz
[dt-arco:test]

Hoặc ta dùng piping với awk để filter ra ip của card mạng eno1.

[dt]% ip address | awk '$NF ~ /^eno1/{print $2}'

192.168.10.10/24

Nếu bạn chưa biết awk là gì ? xem bài viết sau nhé. AWK