Istnieje wiele sposobów odczytywania i zapisywania pliku w bash. Najprostszym sposobem jest użycie operatorów „>” i „>>”.
- Operator „>” nadpisze istniejące dane
- Operator ">>" dołączy dane
Ogólny format używania operatorów przekierowania to:
Dane > Nazwa plikuDane >> Nazwa pliku
Rozumiemy procedurę zapisu do pliku na przykładzie:
Jak napisać plik za pomocą operatorów przekierowania
Jak omówiono powyżej, prostym i bezpośrednim podejściem do zapisu do pliku jest użycie operatorów przekierowania. Na przykład, jeśli chcesz zmienić tekst już istniejącego pliku, najpierw utwórz plik tekstowy o nazwie „plik testowy.tekst” i napisz w nim cokolwiek:
Zapisz plik tekstowy.
Wpisz w terminalu poniższe polecenie:
$ echo “Nadpisywanie istniejącego tekstu w pliku” > plik testowy.tekst
Nadmierne wykręcanie może być ryzykowne; dlatego dobrą praktyką jest włączenie funkcji „noclobber”. Ustawienie „noclobber” zablokowałoby wszelkie nadpisywanie do dowolnego wychodzącego pliku.
$ set -o noclobber$ echo “Nadpisywanie istniejącego tekstu w pliku” > plik testowy.tekst
Ale jeśli chcesz ominąć „noclobber”, użyj „>|” operator zamiast “>”:
$ echo “Nadpisywanie istniejącego tekstu w pliku” >| plik testowy.tekstMożesz też po prostu wyłączyć „noclobber”:
$ set + o noclobber
Ale to polecenie odbierze ochronę wszystkim plikom.
Powyższe dane wyjściowe wskazują, że istniejący tekst został nadpisany. Teraz użyjmy „>>” operator:
$ echo “Dołączanie tekstu do istniejącego pliku tekstowego” >> testfile.tekst
“Echo” nie zawsze jest idealny do użycia, ponieważ nie można go sformatować, dlatego użyj „printf” zamiast „echa”, aby sformatować tekst, jak pokazano w następującym poleceniu:
$ printf “Witamy \n To jest nowy plik tekstowy.” > nowy plik testowy.tekst
Zrozummy tę koncepcję na przykładzie skryptu bash. Otwórz Vima, wpisując „vim” w terminalu. Jeśli nie masz edytora Vima na swoim urządzeniu, zainstaluj go za pomocą:
$ sudo apt zainstaluj vimWpisz skrypt:
#! /bin/bashecho „Wpisz swoje imię”
przeczytaj imię
echo $nazwa > katalog_danych.tekst
echo „Wpisz swój wiek”
przeczytaj wiek
echo $wiek >> katalog_danych.tekst
cat data_dir.tekst
„kot”polecenie służy do tworzenia i edycji plików. Zapisz powyższy skrypt w Vimie, przełączając tryb po naciśnięciu „wyjście”, a następnie wpisz „:w mój skrypt.cii”. Otwórz terminal i uruchom kod:
Jak napisać plik za pomocą Heredoc
Jeśli chcesz napisać wiele wierszy, najłatwiejszą metodą jest użycie „Heredoc”. Tutaj dokument, znany również jako „Heredoc”, jest wielozadaniowym blokiem kodu. Składnia Heredoc to:
Komenda <<[-] Delimiter.
tekst/polecenia
.
Ogranicznik
Zamiast „ogranicznika” można użyć dowolnego ciągu, a „-” można również użyć do usunięcia wszelkich spacji tabulacji w pliku. Zrozummy to na prostym przykładzie:
#! /bin/bashkot << TEXTFILE
To jest plik tekstowy.
Ten plik jest tworzony przy użyciu heredoc.
PLIK TEKSTOWY
Powyższe polecenie skryptu „cat” tworzy plik tekstowy o nazwie „TEXTFILE” i zapisuje tekst do właśnie utworzonego pliku. Teraz zapisz plik pod nazwą „mój skrypt.cii”. Uruchom terminal i uruchom skrypt.
Jak napisać plik za pomocą polecenia Tee
Inną metodą zapisania pliku jest użycie polecenia „Tee”. Jako nazwa wskazująca, że to polecenie pobiera dane wejściowe i zapisuje do pliku oraz jednocześnie pokazuje dane wyjściowe. Domyślnie polecenie „Tee” nadpisze istniejące dane.
$ echo “To jest jakiś tekst” | plik tekstowy koszulki.tekst
Aby dołączyć użyj -a:
$ echo “To jest inny tekst” | tee -plik tekstowy.tekst
Aby napisać wiele wierszy, użyj:
$ echo “Dodawanie tekstu do wielu plików” | plik tekstowy koszulki1.txt plik tekstowy2.txt plik tekstowy3.tekst
Powyższe polecenie utworzy trzy pliki, jeśli nie istnieją i zapisze tekst do każdego z nich.
Wniosek
Ten przewodnik skupia się na wielu podejściach do pisania do pliku w bash z przykładami. W skryptach bash istnieje wiele sposobów na zapisanie pliku, ale najprostszym z nich jest użycie operatorów przekierowania „>”, „>>”. Aby napisać wiele wierszy, można użyć „heredoc”, a jeśli chcesz zapisać te same dane w wielu wierszach, bardzo przydatne jest polecenie „tee”.