Điểm:0

cat : Không đọc stdin nếu không có tệp đầu vào nào được cung cấp trên dòng lệnh

lá cờ ph

Tôi có một tập lệnh nối các tệp với con mèo. Nó chứa khoảng dòng sau treo tập lệnh khi đọc đầu vào tiêu chuẩn nếu thư mục không chứa tệp:

con mèo /path/to/dir/* > concat.txt

Có cách nào để thực hiện con mèo không đọc bất cứ thứ gì từ đầu vào tiêu chuẩn và tạo ra đầu ra trống nếu không có tệp nào tồn tại tại /đường dẫn/đến/thư mục/, hoặc sử dụng một lệnh khác để đạt được điều tương tự?

raj avatar
lá cờ cn
raj
Trong trường hợp của bạn, nếu không có tệp nào tồn tại tại `/path/to/dir/*`, `cat` sẽ hiển thị thông báo lỗi và không đọc bất kỳ thứ gì từ stdin. Bạn đã thực sự thử nó? `cat` chỉ đọc từ stdin nếu có **không có tham số**, không đọc nếu có **có** tham số chỉ định một tệp không tồn tại.
Điểm:3
lá cờ us

Có vẻ như bạn có nullglob kích hoạt để /path/to/dir/* mở rộng thành không có gì nếu không có tệp nào trong /đường dẫn/đến/thư mục/. Tất nhiên, bạn có thể vô hiệu hóa nullglob (shopt -u nullglob) và nhận hành vi mặc định, trong đó /path/to/dir/* vẫn như cũ nếu không có gì phù hợp và con mèo sẽ phàn nàn về tệp không tồn tại:

$ cat /path/to/dir/*
mèo: '/path/to/dir/*': Không có tệp hoặc thư mục như vậy

Bạn cũng có thể giải quyết một /dev/null thay vào đó:

$ shopt -s nullglob; mèo /đường dẫn/đến/dir/* /dev/null
$ tiếng vang $?
0

con mèo sẽ nhận được EOF ngay lập tức từ /dev/null, vì vậy nó sẽ không viết gì và thoát.

Serge Rogatch avatar
lá cờ ph
Cảm ơn, ý tưởng `/dev/null` đặc biệt thu hút.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.