Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Piping Command Output và Chạy Nhiều Lệnh Trên Một Dòng trong Linux

    Piping Command Output và Chạy Nhiều Lệnh Trên Một Dòng trong Linux


    Trong Linux, ngoài việc điều hướng luồng output (STDOUT), input (STDIN)error (STDERR), bạn còn có thể chuyển kết quả đầu ra của một lệnh thành đầu vào của một lệnh khác. Kỹ thuật này được gọi là piping.
    1. Piping – Kết nối đầu ra và đầu vào của lệnh


    Ví dụ:



    ps -ef | grep ssh



    Giải thích:
    • Lệnh ps -ef liệt kê toàn bộ các tiến trình đang chạy.
    • Ký tự | (pipe) sẽ chuyển output của ps thành input của grep.
    • Lệnh grep ssh sẽ lọc và chỉ hiển thị các dòng có chứa chuỗi "ssh".
    • Kết quả: bạn chỉ thấy các tiến trình liên quan đến SSH, thay vì toàn bộ danh sách.

    Ví dụ nâng cao – Piping nhiều lệnh liên tiếp:



    ps -ef | grep ssh | sort -d
    • ps -ef → liệt kê tiến trình.
    • grep ssh → lọc kết quả.
    • sort -d → sắp xếp kết quả theo thứ tự bảng chữ cái.

    Điểm mạnh của piping là bạn có thể kết hợp bất kỳ số lượng lệnh nào, miễn là lệnh sau có thể nhận dữ liệu từ STDIN.
    2. Chạy nhiều lệnh trong cùng một dòng


    Khác với piping (chuyển dữ liệu giữa lệnh), việc chạy nhiều lệnh trên cùng một dòng chỉ đơn giản là thực hiện tuần tự nhiều lệnh, lệnh này xong mới đến lệnh kia.

    Ký hiệu: &&

    Ví dụ khi compile source code:



    ./configure && make && make install
    • ./configure → cấu hình build.
    • make → biên dịch.
    • make install → cài đặt.
    • && đảm bảo rằng lệnh tiếp theo chỉ chạy nếu lệnh trước đó thành công (exit code = 0).

    Nếu một lệnh thất bại, toàn bộ chuỗi sẽ dừng lại, giúp tránh các lỗi liên tiếp.
    3. Câu hỏi ôn tập


    Câu 1: Piping thực hiện chức năng nào?
    Cho phép người dùng gửi output của một lệnh sang lệnh khác để xử lý.

    Câu 2: Để chạy nhiều lệnh trên cùng một dòng (theo thứ tự và chỉ khi lệnh trước thành công), dùng ký hiệu nào?
    &&
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X