Яка правильна назва команди «>»


38

Я намагався знайти, як передати якийсь текст у файл, не перезаписуючи те, що вже є за допомогою >команди, і зрозумів, що не знаю, як він викликається. Пошук стрілки праворуч або правої шеврони чи більше команд нічого не показав. Я завжди просто називав це переходом .

Відповіді:


53

>- це не команда, а перенаправлення дескриптора файлу. Це означає, що оболонка аналізує це завдання, видаляє його з командного рядка та змінює середовище для нового процесу, в якому воно запускається. Новий процес не помічає цієї частини командного рядка. Ось чому ви можете помістити його скрізь: на початку, наприкінці чи між ними.

Шукайте REDIRECTIONблок в man bash.

Для того, щоб додати до наявного файлу, вам потрібно скористатися >>.


Якщо параметр noclobberвстановлений, то >|перезапис і дозволить дозволити файл.
bsd

30

>є оператором перенаправлення . Зауважте, що використання >для переадресації до звичайного файлу замінить те, що вже є, якщо не встановлено noclobber . >>буде додано до кінця файлу.


І він не перезапише, якщо noclobberбуло встановлено (bash).
Hauke ​​Laging

Мою відповідь оновив, дякую за пояснення.
Джош Джоллі

5
@HaukeLaging noclobber- це не просто башізм. Це частина POSIX
якийro

6

Як відповіли інші, > це не команда, а скоріше оператор перенаправлення. Однак термін "оператор перенаправлення" не стосується конкретно операторів перенаправлення >, а декількох можливих операторів перенаправлення. На dashголовній сторінці вказані такі оператори перенаправлення:

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

Я не впевнений, що існує дійсне індивідуальне ім’я для кожного. Можливо, якщо ви перекопаєте старі інструкції з оболонки, ви знайдете щось цікаве. Це джерело , правильне чи неправильне, безумовно, має намір назвати деякі з них:

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

Але також:

2> - 'standard error redirection operator'

Однак я не думаю, що це дійсно правильно, оскільки 2технічно це аргумент, а не частина оператора.

Швидкий довідник (якщо ви не впізнаєте жодного з наведених вище):

>   - 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.

У bashвас також є:

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

Дуже приємний швидкий список довідок, але не <<-видаляє провідні вкладки та пробіли?
ikonoclast

@iconoclast, nope, безумовно, лише вкладки.
Graeme

0

> перенаправляє вихід у файл (або пристрій), перезаписуючи все, що вже існує

>> перенаправляє вихід у файл (або пристрій), додаючи до всього, що там уже існує

< спрямовує дані з файлу (або пристрою) до програми чи пристрою

<< ось тут документ



1
@ Graeme Я відредагував свою відповідь. Дякую за допомогу
ль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.