Chuyển hướng đầu ra và không gian


9

Tôi hoang tưởng về điều này, nhưng hy vọng đó là một câu hỏi đơn giản:

Có sự khác biệt nào giữa

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

tức là, có vấn đề gì không nếu tôi có khoảng trắng đệm các ký tự ống (|) và chuyển hướng (>)? Tôi thực sự hoang tưởng rằng có không gian ở đó các không gian sẽ bằng cách nào đó kết thúc trong tệp đầu ra khi tôi không muốn điều đó. Bất cứ ai có thể làm rõ? (Sử dụng Ubuntu 12 / bash nếu có vấn đề.)


Sự khác biệt duy nhất là a) mỹ phẩm và b) tiện lợi khi chỉnh sửa các dòng lệnh trong bash - ví dụ: "từ" được phân cách bằng khoảng trắng, do đó, không có khoảng trắng xung quanh |hoặc >sau đó gõ Ctrl-Wđể xóa "từ" trước đó sẽ xóa nhiều hơn bạn có thể muốn. ditto cho các lần nhấn phím di chuyển con trỏ Esc-fEsc-bv.v.
cas

Câu trả lời:


8

Trong dòng lệnh shell, khoảng trắng không trích dẫn chỉ phục vụ để phân định các từ trong quá trình phân tích cú pháp lệnh. Chúng không được truyền vào, trong các đối số mà lệnh nhìn thấy cũng như trong luồng đầu vào tiêu chuẩn.


Bạn có chắc chắn không có lỗ hổng bảo mật khi sử dụng khoảng trắng sau các toán tử không? Tôi hiện đang gặp khó khăn khi sao chép nó, nhưng có một cách khai thác phổ biến nơi người dùng độc hại có thể thay đổi thao tác dự định bằng cách sử dụng tệp như "fileName" khi tệp dự định là "fileName".
CripplingTable
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.