Предположим, у меня есть строка, которую я хочу добавить в файл, не открывая редактор.
Как я мог бы добавить эту строку
alias list='ls -cl --group-directories-first'
к этому файлу
config.fish
Предположим, у меня есть строка, которую я хочу добавить в файл, не открывая редактор.
Как я мог бы добавить эту строку
alias list='ls -cl --group-directories-first'
к этому файлу
config.fish
Вы можете добавить линия текста в файл с помощью >>
оператор:
echo "hello world" >> my_file.txt
или в вашем случае
echo "alias list='ls -cl --group-directories-first'" >> config.fish
Пожалуйста, примите к сведению различные типы котировок.
Существует множество способов добавления к файлу без открытия текстовых редакторов, в частности, с помощью нескольких доступных утилит обработки текста в Ubuntu. В общем, все, что позволяет нам выполнять open()
системный вызов с O_APPEND
добавлен флаг, который можно использовать для добавления в файл.
Версия GNU для dd
утилита может добавлять данные в файл с помощью conv=notrunc oflag=append
printf "\nalias list='ls -cl --group-directories-first'\n" | dd conv=notrunc oflag=append bs=1 of=config.fish
Переносимо мы могли бы использовать что-то подобное на правой стороне конвейера:
dd conv=notrunc seek=$(wc -c < testFile.txt) bs=1 of=testFile.txt
Обратите внимание на использование bs=1
, который заключается в том , чтобы предотвращение коротких считываний из конвейера
То tee
команда может быть использована, когда вам нужно добавить к файлу и отправить его в stdout или в следующую команду в конвейере
tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
awk
имеет оператор добавления >>
который также является портативным и определяется спецификациями POSIX
awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
Мы можем объединить sed
флаг страны $
чтобы сопоставить последнюю строку с a
для добавления и -i
для редактирования на месте.
sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish
Мы могли бы даже реализовать что-то вроде dd
в Python 3:
#!/usr/bin/env python3 # read bytes from stdin, append to specified file import sys with open(sys.argv[1],'ab') as f: f.write(sys.stdin.buffer.read())
Добавление к Ответ Стефано, вы также можете использовать cat
:
Использование heredoc:
$ cat >> config.fish <<'EOF'> alias list='ls -cl --group-directories-first'> EOF
<<'EOF'
означает "принимайте следующее в качестве входных данных, пока не дойдете до строки, которая просто EOF
". Кавычки означают буквальное восприятие входных данных.
Или ввод строки в stdin:
$ cat >> config.fish
Затем вставьте или введите строку, нажмите Enter чтобы перейти к новой строке, затем нажмите Ctrl+D, чтобы отметить конец.