Я хочу вставить текст вверху уже существующего файла. Как я могу этого добиться. Я попробовал echo
и , tee
но не был успешным.
Я пытался вставить строку репо в верхней части sources.list
файла из терминала.
Заметка
Мне нужно быстрое решение в одну строку, потому что метод другого ответа мне уже был известен
apt
command-line
bash
Анвар
источник
источник
echo "deb http://extras.ubuntu.com/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
- вам также нужно использовать sudo перед tee, чтобы получить права администратора. Но с какой стати вы хотите добавить что-то в самый верх Source.list?Ответы:
На самом деле это довольно легко с
sed
:sed -i -e '1iHere is my new top line\' filename
1i
говорит sed вставить текст, следующий за строкой 1 файла; не забывайте\
перевод строки в конце, чтобы существующая строка 1 была перемещена в строку 2.источник
s
вместо я в1i
.echo "Text Here" >> Filename
В общем редактирования в месте со сценарием сложно, но вы можете использовать
echo
иcat
затемmv
Однако, если вы играете с sources.list, вам нужно добавить некоторую проверку и пуленепробиваемость для обнаружения ошибок и т.д., потому что вы действительно не хотите терять это. Но это отдельный вопрос :-)
источник
известно, что
prepend
это моя пользовательская оболочка :Используйте также относительный путь или абсолютный путь, он должен работать нормально:
Обновить :
если вам нужен постоянный скрипт для этого, откройте и
nano /etc/bash.bashrc
добавьте эту функцию в конец файла:Откройте свой терминал и наслаждайтесь:
источник
И почему бы не использовать настоящий текстовый редактор для этого? ed - стандартный текстовый редактор.
Или, если вы хотите, чтобы команды были более читабельными:
1
: перейти на первую линиюi
: режим вставки.
: прекратить вставку, вернуться в нормальный режимwq
: пиши и выходи, спасибо, до свидания.источник
FIRST LINE
) с этим?first_line
то:ed -s filename < <(printf '%s\n' 1i "$first_line" . wq)
. Убедитесь, что переменная не расширяется до одной точки и не содержит символов новой строки (поэтому очистите ее, если она поступает из пользовательского ввода).Всегда есть
awk
вариант. Заменитеstring
переменную вашим содержимым. Это не изменение на месте, хотя. Лично я склонен не вносить изменения на месте. Это определенно личное предпочтение. Две вещи,-v
означающие переменную в awk и переменнуюn
, используемую здесь для эффективного соответствия номеру строкиNR == 1
. Вы можете использовать это любым количеством способов, просто изменив значениеn
иs
.Пример:
источник
Вы можете использовать Vim в режиме Ex:
1
выберите 1-ую строкуi
вставить новую строку текстаx
сохранить и закрытьисточник