Как создать файл и вставить в него строку, используя терминал OS X

22

Как я могу сделать следующее, используя терминал на OS X?

Создайте файл с именем .inputrcв домашнем каталоге пользователя и поместите в него следующую строку:

set completion-ignore-case On

GGbro
источник

Ответы:

31

Быстрый ответ

touch ~/.inputrc
echo "set completion-ignore-case On" >> ~/.inputrc

объяснение

Сначала создайте файл:

touch ~/.inputrc

Затем добавьте содержимое в файл:

echo "set completion-ignore-case On" >> ~/.inputrc

touchсоздает пустой файл (при условии, что ~/.inputrcфайл еще не существует). echoзаписывает текст в «стандартный вывод» (сокращенно «stdout»), который обычно является вашим экраном, но из-за перенаправления ( >>) вывод перенаправляется в ~/.inputrc. Эта настройка добавит строку в файл.

Если он ~/.inputrcуже существует, и вы хотите стереть (замкнуть) его содержимое, а затем записать в него строку (т.е. создать файл только с этой строкой текста), выполните:

echo "set completion-ignore-case On" > ~/.inputrc

Одиночная стрелка ( >), также называемая символом «больше чем», указывает echoсоздать файл с только заданным текстом в качестве содержимого файла, вместо записи содержимого в конец файла. (На самом деле echoфайл не создается; оболочка создает файл, удаляя любое существующее содержимое, а echoкоманда записывает новое содержимое.)


Если вы используете первый подход (вместе с >>) и обнаружите, что добавленная вами строка будет перенесена на предыдущую строку, например,

некоторые вещи здесь
здесь есть еще кое -что:

Затем вам нужно отредактировать файл, чтобы исправить это. Это произошло бы, если бы последняя строка ранее существовавшего файла заканчивалась текстовым символом, а не символом новой строки (т. Е. Маркером конца строки). Это обычно для .TXTфайлов в Windows, но редко в * nix.

Если вы как-то заранее понимаете, что в вашем .inputrcфайле уже есть существующее содержимое, которое не заканчивается новой строкой, вам следует использовать echoвместо этого следующее утверждение:

echo -e "\nset completion-ignore-case On" >> ~/.inputrc

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

Или, немного больше печатать, но гораздо более читабельным,

echo "" >> ~/.inputrc
echo "set completion-ignore-case On" >> ~/.inputrc

или

(echo ""; echo "set completion-ignore-case On") >> ~/.inputrc

которые делают то же самое; т.е. предоставить недостающий символ новой строки в существующий текст, а затем добавить set completion-…команду после этого.

Калеб Сюй
источник
1
Здесь нет причин использовать touchкоманду; echo "…" >> ~/.inputrcвполне достаточно.
G-Man говорит: «Восстановите Монику»
1
Если файл, который вы хотите добавить, не существует.
AMRX
@ Барон: Нет, echo "…" >> ~/.inputrcсоздаст файл, если он не существует. За исключением патологических случаев, таких ~как не существует, у вас нет разрешения на запись ~или файловая система заполнена; и в таких случаях touchне поможет.  touchздесь совершенно лишнее.
G-Man говорит: «Восстановите Монику»
4

Все, что вам нужно сделать, это:

echo "set completion-ignore-case On" >> ~/.inputrc 

echo просто выводит текст, переданный ему через обычный выходной канал (stdout)

>>записывает вывод стандартного вывода команды левой рукой к правой руке файл, который в вашем случае,~/.inputrc

~/ такой же как /home/your_username/

0x7a79
источник