Tên chính xác của lệnh> >>


38

Tôi đã cố gắng tìm cách chuyển một số văn bản vào một tệp mà không ghi đè lên những gì đã sử dụng >lệnh và tôi nhận ra tôi không biết nó được gọi là gì. Tìm kiếm mũi tên phải hoặc chevron phải hoặc nhiều hơn lệnh không hiển thị bất cứ điều gì. Tôi đã luôn gọi nó là vượt qua .

Câu trả lời:


53

>không phải là một lệnh mà là một chuyển hướng mô tả tập tin. Điều này có nghĩa là shell phân tích cú pháp này, loại bỏ nó khỏi dòng lệnh và thay đổi môi trường cho quy trình mới mà nó được bắt đầu. Quá trình mới không nhận thấy phần này của dòng lệnh. Đó là lý do tại sao bạn có thể đặt nó ở mọi nơi: Lúc đầu, cuối hoặc ở giữa.

Tìm REDIRECTIONkhối trong man bash.

Để chắp thêm vào một tập tin hiện có, bạn cần sử dụng >>.


Nếu tùy chọn noclobberđược đặt, sau đó >|sẽ ghi đè và cho phép ghi đè tệp.
bsd

30

>là một toán tử chuyển hướng . Lưu ý rằng việc sử dụng >để chuyển hướng đến một tệp thông thường sẽ ghi đè lên những gì đã có, trừ khi noclobber được đặt. >>sẽ nối vào cuối tập tin.


Và nó không ghi đè nếu noclobberđã được đặt (bash).
Hauke ​​Laging

Cập nhật câu trả lời của tôi, cảm ơn đã làm rõ.
Josh Jolly

5
@HaukeLaging noclobberkhông chỉ là một bashism. Đó là một phần của POSIX
kojiro

6

Như những người khác đã trả lời, >không phải là một lệnh, mà là một toán tử chuyển hướng. Tuy nhiên, thuật ngữ 'toán tử chuyển hướng' không đề cập cụ thể đến >, nhưng một số toán tử chuyển hướng có thể khác nhau. Các dashliệt kê người đàn ông sau khi các nhà khai thác chuyển hướng:

 < > >| << >> <& >& <<- <>

Tôi không chắc chắn có một tên cá nhân hợp lệ cho mỗi người. Có thể nếu bạn đào qua một số hướng dẫn sử dụng vỏ cũ, bạn sẽ tìm thấy một cái gì đó thú vị. Nguồn này , chính xác hoặc không chính xác, chắc chắn có một cách để đặt tên cho một số trong số họ:

>  - 'output redirection operator'
<  - 'input redirection operator'
>> - 'output append operator'

Nhưng cũng:

2> - 'standard error redirection operator'

Tuy nhiên tôi không nghĩ rằng điều này thực sự chính xác vì về 2mặt kỹ thuật là một đối số chứ không phải là một phần của toán tử.

Tham khảo nhanh (trong trường hợp bạn không nhận ra bất kỳ câu hỏi nào ở trên):

>   - redirect output stream to a file, eg >somefile (for stdout) or 2>somefile
>|  - as above but overwrite the file even if the noclobber shell option is set
>>  - append output stream to file
<   - redirect input stream from file, n defaults to 0 for stdin
<>  - open file for reading and writing on stdin
>&  - redirect output stream to another stream (eg >&1) or close with - (eg 2>&-)
<<  - here document - see http://en.wikipedia.org/wiki/Here_document
<<- - here document with leading tabs removed.

Trong bashbạn cũng có:

<<< - here string, a one line here file. Eg <<<"foo bar"

Danh sách tham khảo nhanh rất đẹp, nhưng không <<-xóa các tab khoảng trắng hàng đầu ?
iconoclast

@iconoclast, không, chắc chắn chỉ là các tab.
Graeme

0

> chuyển hướng đầu ra cho một tập tin (hoặc thiết bị) ghi đè lên bất cứ thứ gì đã tồn tại ở đó

>> chuyển hướng đầu ra cho một tệp (hoặc thiết bị) nối thêm vào bất cứ thứ gì đã tồn tại ở đó

< hướng dữ liệu từ tệp (hoặc thiết bị) đến chương trình hoặc thiết bị

<< một tài liệu ở đây



1
@ Graeme tôi chỉnh sửa câu trả lời của tôi. Cảm ơn bạn đã giúp đỡ
les
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.