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ì.
man bash
).
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ì.
man bash
).
Câu trả lời:
>
& >>
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 -n
sẽ 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.
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.
>>
để 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 >>file
tìm kiếm và do đó chỉ đến vị trí mới (bắt đầu).
Các ký hiệu >
và >>
đượ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 > myfile
sẽ tạo ra một tài liệu có tên myfile
nế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 >> myfile
sẽ 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ó.
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.