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


22

Як я можу зробити наступне за допомогою терміналу в OS X?

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

set completion-ignore-case On

Відповіді:


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команда записує новий вміст.)


Якщо ви використовуєте перший підхід (разом із >>), ви виявите, що доданий вами рядок переміщується на попередній рядок, наприклад,

деякі речі тут
ще деякі речі тут встановлюють завершення-ignore-case увімкнено

тоді вам потрібно відредагувати файл, щоб виправити його. Це станеться, якщо останній рядок попереднього файлу закінчувався текстовим символом, а не символом "нової лінії" (тобто маркером кінця рядка). Це звичайно для .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

@Baron: Ні, echo "…" >> ~/.inputrcстворить файл, якщо його не існує. За винятком патологічних випадків, таких як ~не існує, у вас немає дозволу на запис ~, або файлова система заповнена; і в таких випадках touchне допоможе.  touchтут абсолютно зайве.
G-Man каже: "Відновіть Моніку"

4

Все, що вам потрібно зробити, це:

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

echo просто перегукується з поданим йому текстом через звичайний вихідний канал (stdout)

>>записує висновок стандартного виводу команди лівою рукою до правої руки файл, який у вашому випадку,~/.inputrc

~/ те саме, що /home/your_username/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.