5.4 Đầu vào/đầu ra tiêu chuẩn
103
5.3.2
Thao tác &
Thao tác & được dùng để tổ chức việc thực hiện các câu lệnh trong chế độ nền
sau. Nếu đặt dấu & ngay sau câu lệnh, thì hệ vỏ sẽ trả lại quyền điều khiển
cho người dùng ngay sau khi chạy câu lệnh, mà không đợi cho câu lệnh đó hoàn
thành. Ví dụ, nếu nhập vào dòng lệnh “command1 & command2 &”, thì hệ vỏ
chạy câu lệnh command1, ngay lập tức chạy lệnh command2, và sau đó không
chậm trễ trả lại dòng nhập lệnh cho người dùng.
5.3.3
Thao tác && và ||
Các thao tác && và || lá những thao tác điều khiển. Nếu trên dòng lệnh là
command1 && command2
, thì command2 sẽ thực hiện và chỉ thực hiện trong
trường hợp trạng thái thoát ra của lệnh command1 bằng không (0), tức là lệnh
đó thực hiện thành công. Một cách tương tự, nếu dòng lệnh có dạng
command1 || command2
, thì command2 sẽ thực hiện và chỉ thực hiện khi trạng
thái thoát của lệnh command1 khác không. Chúng ta sẽ không xem xét mặt kỹ
thuật của việc thực hiện một câu lệnh nào đó. Chỉ có thể nói ngắn gọn rằng, hệ
vỏ phải tìm mã (code) chương trình, nạp mã đó vào bộ nhớ, chuyển các tham số
đã nhập trên dòng lệnh vào cho câu lệnh, và sau khi thực hiện xong thì theo một
cách nào đó trả lại kết quả thực hiện lệnh này cho người dùng hay tiến trình
khác. Chúng ta sẽ xem xét qua các bước này. Bước đầu tiên - tìm kiếm câu lệnh.
Các câu lệnh chia thành hai loại: nội trú (mã của chúng có trong mã của chính
hệ vỏ) và ngoại trú (mã của chúng nằm trong một tập tin riêng lẻ trên đĩa). Hệ
vỏ luôn luôn tìm thấy lệnh nội trú, còn để tìm các lệnh ngoại trú người dùng,
theo nguyên tắc, phải chỉ cho hệ vỏ đường dẫn đầy đủ tới tập tin tương ứng. Tuy
nhiên để gỡ “gánh nặng” cho người dùng hệ vỏ biết cách tìm lệnh ngoại trú trong
các thư mục, mà được liệt kê trong
đường dẫn tìm kiếm. Chỉ khi (hệ vỏ) không
thể tìm thấy tập tin cần thiết trong các thư mục đó, nó mới quyết định rằng
người dùng đã nhầm khi nhập tên lệnh. Về cách thêm thư mục vào đường dẫn
tìm kiếm chúng ta sẽ nói đến ở dưới, còn bây giờ chúng ta sẽ xem xét cách hệ vỏ
tổ chức việc đưa dữ liệu vào cho câu lệnh đang thực hiện và việc đưa kết quả tới
cho người dùng.
5.4
Đầu vào/đầu ra tiêu chuẩn
5.4.1
Dòng dữ liệu vào – ra
Khi một chương trình được thực hiện, nó được cung cấp ba dòng dữ liệu (hay còn
gọi là kênh):
đầu vào tiêu chuẩn (standard input hay stdin). Qua kênh này dữ liệu được
đưa vào cho chương trình;
đầu ra tiêu chuẩn (standard output hay stdout). Qua kênh này chương trình
đưa ra kết quả làm việc của mình;