Lösungsansatz

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
flugopa
Beiträge: 21
Registriert: 27.08.2006 09:55:28
Wohnort: München

Lösungsansatz

Beitrag von flugopa » 14.09.2006 18:33:32

Hallo,

in unseren /home gibt es viele User.
/home/user1
/home/user2
u.s.w.

Ich möchte alle eine neue Programmkonfiguration verpassen.
1. Einmal unter dem installiert...
2. per .bashrc oder etwas besseres
2.1 unter windows lautet der Aufruf if exist C:\installlog_.txt neq 0 xcopy ....

3. Als nächstes wollte ich unter /home alle dateien incl. der unterverzeichnisse mit durch suchen und die Dateien die den Namen "testuser" enthalten und durch die variable $USER ersetzen.
cd /home
ls -alr * | grep "testuser" | sed -e $USER

So geht es natürlich nicht, aber hat einer ein Herz und zeigt mir wie es gehen kann.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 14.09.2006 18:43:18

Glaubst du, dass der Threadtitel aussagekräftig ist? Ich nicht.

Außerdem habe ich deinen Post auch nach zweimaligem Lesen nicht verstanden. Wenn du nicht die 10 Minuten Zeit hast, dein Problem und deine Frage sauber und verständlich zu formulieren, haben wir auch keine Zeit, dir zu helfen ;)

flugopa
Beiträge: 21
Registriert: 27.08.2006 09:55:28
Wohnort: München

Beitrag von flugopa » 14.09.2006 21:00:48

Ich versuchs nochmal:

1. Es gibt ein /home-Verz. mit Usernamen als Subdir.

z.B.:
/home/user1
/home/user2
/home/user3
u.s.w.

2. Jetzt bekommt user1 viele dateien und verzeichnisse in sein /home/user1-Verz. die den Usernamen enthalten.

z.B.: .mozilla
Jetzt zeigt natürlich der Browsercache auf user1 und nicht auf den Besitzer des Verz.
(Und noch andere Dateien die in weiteren U-Verz. des Userhome liegt.


3. es mehr als 3 User

4. ich dachte:
ls |grep user* |sed -e 's|user1|$USER|g' ????

Wie könnte das Script aussehen?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 15.09.2006 00:10:41

Als ein Entwurf (falls nur user-Verzeichnisse in /home existieren)

Code: Alles auswählen

#!/bin/bash
cd /home
for i in * ; do
find ./$i -regex ".*testuser.*" -exec rename 's|\(.*\)testuser\(.*\)|\1$i\2|' {} \;
done
- in den einzelnen user-Verzeichnissen ("$i") soll nach Dateien mit "testuser" gesucht werden,
- diese sollen mit regexe (daher 'rename') nach "$i" umbenannt werden.

Irgendwie muss der "-regex ..." noch verfeinert werden, sodass "testuser" nur im 'basename' und nicht im Pfad auftaucht.
Ich weiss gerade nicht, ob die Referenzierung mit "\1" formal richtig ist und das "$i" im 'rename' funktioniert.
Kontrolliere mal nach http://www.linuxfibel.de/sed.htm
Zuletzt geändert von rendegast am 15.09.2006 00:14:16, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 15.09.2006 00:11:22

Was hast du eigentlich genau vor? Welche Dateien kopierst du warum wohin?
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

flugopa
Beiträge: 21
Registriert: 27.08.2006 09:55:28
Wohnort: München

Beitrag von flugopa » 15.09.2006 08:05:59

> Was hast du eigentlich genau vor? Welche Dateien kopierst du warum wohin?

Eigentlich keine große Sache, aber als WINDOWS geschädigter schon.
Vereinfacht gesagt sieht das ganze so aus:

Ihr würdet auf euren Linuxsystemen Staroffice installieren und wollt das eure Kinder auch damit arbeiten können ohne z.B. die Registrierung durch zu führen und die haben natürlich auch keine root-rechte.
Abschließend evtl. noch die Drucker...

So jetzt das ganze im Schulumfeld ansiedeln.

Antworten