Thứ Tư, 16 tháng 5, 2018

[Shell] Standard Output and Error

Khi shell thực thi môt command sẽ sinh ra standard Output và standard Error

Nếu không có lỗi gì, những gì được in ra màn hình được gọi là standard Output.
Nếu có lỗi xảy ra khi chạy command, error message sẽ được print ra màn hình. Error messages đó là standard Error.

Ví dụ lệnh sau:

```

$ ls -la
total 24
drwxr-xr-x  14 thanh_nt  staff  448 May 17 09:35 .
drwxr-xr-x   7 thanh_nt  staff  224 May 10 08:54 ..
-rw-r--r--   1 thanh_nt  staff  852 May 14 14:26 README.md
-rw-r--r--   1 thanh_nt  staff  152 May 14 14:26 README.md_
```

Câu lệnh chạy thành công, những gì print ra là Output.


Khi thực thi câu lệnh sau:

```

$ ls hehe
ls: hehe: No such file or directory
```

do thư mục hoặc file hehe không tồn tại. Khi đo Standard Error sẽ dc in ra:

```
ls: hehe: No such file or directory
```

Chúng ta có thể redirect output đến một file dùng > hoặc >>:

$ command > filename

Câu lệnh này sẽ ghi output của câu lệnh command vào file filename, và XOÁ HẾT nội dung của filename trước đó. Nếu filename không tồn tại, shell sẽ tự động tạo ra file filename

hoặc:

$ command >> filename

Câu lệnh này sẽ ghi output của câu lệnh command vào file filename, và GHI TIẾP vào nội dung của filename trước đó. Nếu filename không tồn tại, shell sẽ tự động tạo ra file filename.

Chúng ta cũng có thể redirect Standard Error sử dụng cú pháp "2>":
2 xác định stream ID mà shell thay đổi. Stream ID 1 là standard Output, 2 là standard ERROR

```
$ command   2> filename1
```
trong câu lệnh trên, Output sẽ được in ra màn hình, standard Error sẽ được ghi vào filename1

Chúng ta cũng có thể đưa standard Error tới cùng nơi với Output với cú pháp ">&":

```
$ command > filename 2>&1
```
Trong câu lệnh trên, cả standard Output and Error sẽ được ghi vào filename.

Không có nhận xét nào:

Đăng nhận xét