Вопрос Команда для добавления строки в текстовый файл без открытия редактора


Предполагая, что у меня есть строка, которую я хочу добавить в файл, не открывая редактор.

Как я могу добавить эту строку?

alias list='ls -cl --group-directories-first'

к этому файлу

config.fish

126
2018-01-14 19:00


происхождения




ответы:


Вы можете добавить линия текста в файл с помощью >> оператор:

echo "hello world" >> my_file.txt

или в вашем случае

echo "alias list='ls -cl --group-directories-first'" >> config.fish

Пожалуйста, обратите внимание на разные типы котировок,


202
2018-01-14 19:09



Я использую эхо себя, но будьте осторожны, если вы укажете только один > то файл будет усекать, а не добавлять. для более безопасной команды вы можете использовать sed: sed -i '$a hello world' filename - invert
объяснение: -i будет обновлять файл (иначе он просто напечатает результат на stdout), $ это регулярное выражение, которое будет соответствовать концу файла, и a добавляет следующий текст в имя файла. - invert
echo "hello world" >> my_file.txt не создает новую последнюю строку с HW, но добавьте его в строку последней строки. - Timo
Что HW @timo? - 7wp
Может быть, «Hello World» @ 7wp :) Это echo который добавляет разрыв строки (делая его строкой, а не просто связкой символов). Вы можете отключить разрыв строки в конце с помощью -n, - Stefano Palazzo♦


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

  • tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
  • awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
  • sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish

2
2018-06-17 21:01





Добавление к Ответ Стефано, вы также можете использовать cat:

  • Использование heredoc:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF
    

    <<'EOF' означает «принимать в качестве входных данных, пока вы не достигнете линии, которая просто EOFMsgstr "Котировки означают, что нужно принимать входные данные буквально.

  • Или введите строку на stdin:

    $ cat >> config.fish
    

    Затем вставьте или введите строку, нажмите Войти чтобы перейти к новой строке, затем нажмите Ctrl + D, чтобы отметить конец.


1
2018-06-17 23:05