Sự khác biệt giữa những người khác nhau


12

Sự khác biệt giữa ls >và là ls >>gì? Tôi cần hiểu điều này cho tính toán GCSE của mình nhưng không biết sự khác biệt là gì.


1
Ngoài câu trả lời hay dưới đây, vui lòng xem câu trả lời thứ 2 (và được nâng cao nhất) trên stackoverflow.com/a/984761/1841533: sử dụng >> để ghi vào tệp (ví dụ: nhật ký) cũng có tác dụng phụ tốt không có ký tự "Nul" xuất hiện ở đầu tệp saif nếu tệp bị cắt bớt trong khi quá trình vẫn ghi vào đó! (ví dụ: trong quá trình quay tệp nhật ký). Bởi vì "foo> file" không tìm kiếm, nó không nhận thấy sự thay đổi kích thước và vẫn còn điểm hơn so với ban đầu, quảng cáo hệ điều hành sẽ lấp đầy bằng Nul. foo >> tập tin tìm kiếm và do đó chỉ đến vị trí mới (bắt đầu).
Olivier Dulac

Vì đây là một câu hỏi mang tính giáo dục, tôi khuyên bạn nên học cách làm việc với các tài liệu liên quan: Hướng dẫn tham khảo Bash, phần Red Redirections (cũng có thể truy cập qua man bash).
David foerster

Câu trả lời:


28

>& >>là các toán tử chuyển hướng; họ chuyển đầu ra của một cái gì đó, trong trường hợp này ls, ở nơi khác. Nếu đầu ra này đi vào một tệp, >sẽ cắt bớt tệp - tức là xóa bất kỳ nội dung nào trước đó, trong khi đó >>sẽ nối thêm dữ liệu mới vào cuối tệp, giữ nguyên nội dung trước đó. Điều này sẽ làm việc với bất kỳ đầu vào, do echo& cat, ví dụ, cũng có thể được sử dụng theo cách này.

Điều đáng quan tâm là |nhà điều hành chuyển dữ liệu sang ứng dụng khác - vì vậy ls | cat -nsẽ cung cấp cho bạn một danh sách được đánh số thứ tự!

Ống là thuật ngữ có liên quan.


2
Cắt ngắn hoặc ghi đè?
DK Bose

2
@DKBose từ straceđầu ra cho bash -c 'echo a > blah': open("blah, O_WRONLY|O_CREAT|O_TRUNC, 0666), vì vậy cắt ngắn sẽ là thuật ngữ đúng.
muru

"ống" và "chuyển hướng đầu ra", mà bạn sắp xếp sử dụng trong câu trả lời của mình. Làm tốt.
0xSheepdog

đã tìm thấy ý tôi là: Ngoài câu trả lời hay này, vui lòng xem câu trả lời thứ 2 (và được nâng cao nhất) trên stackoverflow.com/a/984761/1841533 : sử dụng >>để ghi vào tệp (ví dụ: nhật ký) cũng có mặt tốt có hiệu lực để không có ký tự "Nul" xuất hiện ở đầu tệp saif nếu tệp bị cắt bớt trong khi quá trình vẫn ghi vào đó! (ví dụ: trong quá trình quay tệp nhật ký). Bởi vì "foo> file" không tìm kiếm, nó không nhận thấy sự thay đổi kích thước và vẫn còn điểm hơn so với ban đầu, quảng cáo hệ điều hành sẽ lấp đầy bằng Nul. foo >>filetìm kiếm và do đó chỉ đến vị trí mới (bắt đầu).
Olivier Dulac

5

Các ký hiệu >>>được sử dụng để chuyển hướng đầu ra đến một tệp.

Cả hai sẽ tạo tập tin nếu tập tin không tồn tại. Nếu tệp đã tồn tại, sau đó >sẽ ghi đè lên tệp trong đó >>sẽ nối thêm dữ liệu vào tệp.

Vì vậy, ls > myfilesẽ tạo ra một tài liệu có tên myfilenếu nó không tồn tại. Nếu myfileđã có và chứa một số dữ liệu, thì nó sẽ được ghi đè bằng dữ liệu mới mà bạn truyền vào.

Trong khi đó ls >> myfilesẽ tạo một tệp nếu không tồn tại và ghi dữ liệu vào nó. Nếu tệp tồn tại với một số dữ liệu, thì dữ liệu mới sẽ được thêm vào cuối của nó.


0

NẾU bạn sử dụng một>, thì nó sẽ ghi đè lên tệp nếu nó đã tồn tại. Hãy thật cẩn thận khi bạn sử dụng cái này.

Nếu bạn sử dụng hai >>, thì nó sẽ chỉ nối thêm (nói cách khác, bắt đầu viết ở dưới cùng của tệp) nếu nó đã tồn tại. Mặt khác, nó tạo một tệp mới nếu nó không tồn tại.


1
Tại sao lặp lại một câu trả lời đã được đưa ra?
Yêu cầu
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.