В чем разница между использованием команды «echo» и редактированием с помощью «vi» при внесении изменений в файл .bashrc?

Я закончил установку программы, и некоторые веб-сайты советуют мне использовать команду echo для экспорта переменной среды в файл .bashrc, в то время как другие советуют использовать vi .bashrc для непосредственного редактирования файла. Мне было интересно, какие различия между методами заставят меня использовать один против другого в любом конкретном случае? Я не уверен, что использование echo вставляет временную переменную, а vi может сделать ее постоянной?

2 ответа

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

Изменение файла всегда приводит к добавлению текста в конец файла; или перезаписать его полностью. Изменения так же постоянны, как и при использовании редактора, такого как vi.

      echo "foo" >.bashrc

Это заменяет весь этот файл всего одной строкой «foo». Вы, вероятно, не хотите этого.

      echo "foo" >>.bashrc

Это добавляет новую строку «foo» в конец .bashrc. Хотя иногда это может быть полезно, обычно вам нужен больший контроль над тем, куда идут ваши изменения, поэтому лучше используйте редактор.

И все это волшебство делает оболочка : она перенаправляет вывод команды в файл, перезаписывая в процессе все старое содержимое этого файла; похож, но он не перезаписывает старый контент, а только добавляет новый контент в конец.

Учебники используют echoкак правило, потому что это очень простая команда, которая просто — как вы уже догадались — повторяет свои аргументы. Но это перенаправление ввода-вывода с >или же >>работает с любой командой, которая записывает вывод в стандартный канал вывода (также известный как stdio ).

Только для некоторых случаевecho xxx >> fileследует использовать для добавления строки, в противном случае это может привести к сбою другого считывателя (например, при использованииvim). например при использованииkafka-connectзагрузить файл в тему.

Другие вопросы по тегам