Перенаправление: Как дополнительное слово попало в файл?

529
Dennis Williamson

Я тестировал скрипт и хотел создать небольшой файл с небольшим количеством текста, поэтому набрал следующее и забыл пробел в имени файла:

echo "bob">other name 

Когда я это сделал ls, он показал файл «прочее», а когда я это сделал cat other, он показал содержимое как:

bob name 

Как «имя» попало в файл? Мне кажется, я где-то видел, что вы можете поместить перенаправление в любую команду. На самом деле, я только что проверил это:

echo >other Some text in a file 

и «Некоторый текст в файле» был содержимым «другого».

Какова цель этой функции?

Конечно, изначально я должен был набрать:

echo "bob">other\ name 
5

1 ответ на вопрос

13
John T

Вот как работает перенаправление bash.

Написание этого:

echo "bob">other name 

эквивалентно этому:

echo "bob" name >other 

Перенаправление может появиться в любом месте строки, chevron ( >) применяется только к «другому».

Это позволяет людям гибко структурировать свои команды. Если это выглядит более ясно, делая что-то вроде этого:

>file.txt echo "one" "two" "three" 

тогда это до человека, пишущего сценарий или команду.