Jak utworzyć plik i wstawić do niego linię za pomocą terminala OS X.

22

Jak mogę wykonać następujące czynności przy użyciu terminala w systemie OS X?

Utwórz plik o nazwie .inputrcw katalogu domowym użytkownika i umieść w nim następujący wiersz:

set completion-ignore-case On

GGbro
źródło

Odpowiedzi:

31

Szybka odpowiedź

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

Wyjaśnienie

Najpierw utwórz plik:

touch ~/.inputrc

Następnie dodaj zawartość do pliku:

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

touchtworzy pusty plik (zakładając, że ~/.inputrcplik jeszcze nie istnieje). echozapisuje tekst na „standardowym wyjściu” (w skrócie „stdout”), którym zwykle jest ekran, ale z powodu przekierowania ( >>) wyjście jest przekierowywane na ~/.inputrc. Ta konfiguracja doda linię do pliku.

Jeśli ~/.inputrcjuż istnieje i chcesz usunąć (clobber) jego zawartość, a następnie zapisz w nim wiersz (tj. Utwórz plik zawierający tylko ten wiersz tekstu), wykonaj:

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

Pojedyncza strzałka ( >), znana również jako symbol „większy niż”, mówi echoo utworzeniu pliku zawierającego tylko podany tekst jako zawartość pliku, zamiast zapisywania zawartości na końcu pliku. (W rzeczywistości echonie tworzy pliku; powłoka tworzy plik, odrzucając istniejącą zawartość, a echopolecenie zapisuje nową zawartość).


Jeśli użyjesz pierwszego podejścia (z >>) i okaże się, że dodana linia jest wtłaczana do poprzedniej linii, np.

kilka rzeczy tutaj
kilka innych rzeczy tutaj ustaw na zakończenie-ignorowanie-przypadku

następnie musisz edytować plik, aby go naprawić. Stałoby się tak, gdyby ostatni wiersz wcześniej istniejącego pliku kończył się znakiem tekstowym zamiast znakiem „nowej linii” (tj. Znacznikiem końca linii). Jest to powszechne w przypadku .TXTplików w systemie Windows, ale rzadko w * nix.

Jeśli w jakiś sposób zorientujesz się z góry, że .inputrcplik ma wcześniej istniejącą zawartość, która nie kończy się na nowej linii, powinieneś użyć tego echooświadczenia:

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

Poprzednia \nfraza jest interpretowana jako znak nowej linii, więc nowa linia jest dodawana po poprzedniej treści i przed nowymi rzeczami, które chcesz dodać.

Lub, nieco więcej pisania, ale o wiele bardziej czytelne,

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

lub

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

które robią to samo; tzn. podaj brakujący znak nowej linii do istniejącego tekstu, a następnie dodaj set completion-…polecenie.

Caleb Xu
źródło
1
Nie ma powodu, aby używać touchpolecenia tutaj; echo "…" >> ~/.inputrcwystarczy.
G-Man mówi „Reinstate Monica”
1
Chyba że plik, który chcesz dołączyć, nie istnieje.
amrx
@Baron: Nie, echo "…" >> ~/.inputrcutworzy plik, jeśli nie istnieje. Z wyjątkiem przypadków patologicznych, takich jak ~brak, nie masz uprawnień do zapisu ~lub system plików jest pełny; i w takich przypadkach touchnie pomoże.  touchjest tutaj całkowicie zbędny.
G-Man mówi „Przywróć Monikę”
4

Wszystko, co musisz zrobić, to:

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

echo po prostu odbij tekst nadany mu przez normalny kanał wyjściowy (stdout)

>>zapisuje wyjście stdout z polecenia lewej do prawej pliku, który w danym przypadku jest~/.inputrc

~/ jest taki sam jak /home/your_username/

0x7a79
źródło