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