ubuntuusers.de

chmod in bashrc alias

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

CDrewing

Avatar von CDrewing

Anmeldungsdatum:
6. November 2007

Beiträge: 558

Wohnort: Berlin

Moin,

ich als alter bash-Legastheniker...

Um mein Medienarchiv gegen ungewollte Änderungen zu schützen entziehe ich mir selbst nach Komplettierung eines Archivs die Schreibrechte zu den entsprechenden Mediendateien:

1
2
find ./Meinemp3sammlung -type f -exec chmod 440 {} \;
find ./Meinemp3sammlung -type d -exec chmod 550 {} \;

und vice versa wenn ich doch noch was ändern will:

1
2
find ./Meinemp3sammlung -type f -exec chmod 660 {} \;
find ./Meinemp3sammlung -type d -exec chmod 770 {} \;

Da das ja immer das gleiche Prozedere ist, dachte ich mir, man könne das ja in ~/.bashrc über ein alias vereinfachen:

1
2
alias lock='find $1 -type d -exec chmod 440 {} \; find $1 -type d -exec chmod 550 {} \;'
alias unlock='find $1 -type d -exec chmod 660 {} \; find $1 -type d -exec chmod 770 {} \;'

Und er meckert:

1
find: Pfade müssen dem Ausdruck `find' vorangestellt werden

Was mache ich falsch oder ist dies der *vollkommen falsche* Ansatz?

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4450

Wohnort: Göttingen

Bei alias kannst Du keine Parameter verwenden, sprich das $1 funktioniert da nicht.

Da müsstest Du wohl eher "$HOME/Meinemp3sammlung" statt $1 setzen. Dann müsste das gehen, denke ich.

Evtl. müsstest Du noch die Single-Quotes durch Double-Quotes ersetzen. Da ist mir nich thundertpro klar, zu welchem Zeitpunkt das $HOME eigentlich ausgewertet wird...

EDIT: Ach, und hinter dem ersten \; fehlt noch ein weiteres ; zum Trennen der beiden Befehle.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9627

Wohnort: Münster

chmod kann selbst rekursiv arbeiten, also benötigst Du find nicht. Außerdem willst Du ja nur das Schreib-Bit für den Besitzer umschalten.

Dies sollte funktionieren:

alias lock='chmod -R a-w '
alias unlock='chmod -R u+w '

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Doc_Symbiosis schrieb:

Bei alias kannst Du keine Parameter verwenden, sprich das $1 funktioniert da nicht.

Aber in der .bashrc schon.

1
2
3
4
function lock_folder() {
  chmod -R a-w "$1"
}
alias lock='lock_folder'

/edit: Info vergessen 😉 Den alias brauchst du dann natürlich nicht, du kannst auch direkt lock_folder ~/whatever aufrufen. Der Alias dient nur als Beispiel, wie man diesen dann mit einer Funktion nutzt.

Antworten |