Jak usunąć ciąg znaków z pliku za pomocą skryptów powłoki?

9

Próbuję usunąć ciąg znaków z .bash_profile. Ciąg jest dodawany po uruchomieniu skryptu powłoki:

Mój ciąg w bash_profile w następujący sposób:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Chcę usunąć ciągi, .bash_profilegdy myapp jest usuwany za pośrednictwem rpm.

Jak usunąć dowolny ciąg z pliku za pomocą skryptu powłoki? (lub możliwa metoda alternatywna)

Gyhot
źródło

Odpowiedzi:

11

Możesz usunąć ciąg z pliku tekstowego za pomocą sed (istnieją inne narzędzia).

Na przykład:

sed -i -e '/myapp/d' .bash_profile

usuwa z .bash_profile każdej linii zawierającej ciąg myapp.

lgeorget
źródło
10

Plik taki jak ~/.bash_profilemieszka w katalogu domowym użytkownika. Taki plik jest całkowicie pod kontrolą użytkownika. Globalne polecenia działające jak rpmnie powinny zmieniać takich plików.

  • Zwykle masz podstawowy plik konfiguracyjny, który jest dostarczany przez pakiet rpm.

  • Następnie masz globalny plik konfiguracyjny, którego root może użyć do zastąpienia niektórych preferencji specyficznych dla danego systemu.

  • Następnie masz osobiste pliki konfiguracyjne w swoim katalogu domowym, których możesz użyć do zastąpienia globalnego ustawienia własnymi preferencjami.

Polecenie takie rpmpowinno zmienić tylko pierwsze i nigdy nie zmieniać drugiego.

michas
źródło
Czy możesz zasugerować adres URL do sprawdzenia w tym temacie?
Gyhot
1
@Gyhot unix.stackexchange.com/questions/77518/... jest dobry. Jeśli twoja dystrybucja docelowa ma /etc/profile.dkatalog, upuść tam plik zawierający tę exportlinię. W przeciwnym razie możesz edytować /etc/profile, ale uważaj, aby nie zniszczyć dostosowań przez administratora systemu.
Gilles „SO- przestań być zły”
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Hauke ​​Laging
źródło
0

Wypróbuj vim-way:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
kenorb
źródło