Newsgroup: it.comp.os.linux.iniziare
Titolo: Rimpiazzo ricorsivo stringhe con /

Ciao NG,
 
Premessa: so che è possibile cambiare username lasciando 
il vecchio nome della subdir utente in /home ma non so 
perché è una cosa che mi lascia un senso di grosso disagio :)
 
Ho fatto l'errore di creare un account con un nome a caso 
mentre io ho una certa codifica che seguo. Mi ero detto 
che sarebbe stato solo per provare un'altra installazione 
e adesso ci sono una ventina di scripts disseminati nella 
mia home, per limitarmi a quello che sono certo ci sia.
 
Ho creato l'account con il nome giusto tramite uno script 
che ne clona uno con un nuovo nome. Come immaginavo dal 
listato si limita a cambiare proprietario dei files e pare 
funzionare.
 
Ma molto stupidamente e dato che spesso mi sono serviti 
paths assoluti i miei script sono disseminati di stringhe 
in cui ovviamente compaiono i caratteri / carattere che è 
anche fondamentale nella linea di comando di sed.
 
Si tratterebbe di poter sostituire tutte le occorrenze del 
vecchio nome folder utente con quello nuovo, e oltretutto 
in modo ricorsivo e selettivo a partire da 
/home/nuovonomeutente. Dei files .sh e .desktop sono 
sicuro, ma ce ne saranno altri che non so?
 
Ovviamente è qualcosa di assolutamente superiore alle mie 
capacità. Ho guardato in rete ma intuisco che ogni 
situazione che trovo non è esattamente quella a cui si 
riferisce il comando consigliato e se pure posso rifare 
l'account con lo stesso script preferirei non fare pasticci.
 
Sepoffa'? E se sì, come? Ovviamente se esiste un 
superscript magico che clona l'account con un nuovo nome e 
si prende carico dei cambiamenti dentro i files rifaccio 
volentieri tutto da capo.
 
Grazie :)
 
 
-- 
- Amore, tu piangi. Che hai fatto?
- Non mi ascolti mai, per te sono solo
   un oggetto...
- Intendevo, che hai fatto per cena?

 sed.
 
Non lo e`, leggi bene la documentazione... :-)
 
sed 's,a/b/c,x/y/z,g'
 
Come separatore si puo` usare "/", ma anche
in alternativa "," e forse anche altro.
 
sed -i ... file.sh
 
Lo fa in-place, che puo` essere utile oppure
dannoso, dipende... :-)
 
bye,
 
-- 
 
piergiorgio

 volentieri tutto da capo.
 
man usermod
 
-- 
bye, Yoda
 

 man usermod
 
Conosco il comando ma credo che non riguardi il mio 
problema. Ho già clonato l'account e funziona, solo che 
gli script contengono ancora il nome della cartella 
vecchia. Forse usermod lo fa ma non vedo l'opzione. Si 
tratta di andare a pescare tutti i files .sh e chi sa 
quali altri. :/


 dipende... :-)
 
Grazie, sicuramente è buono a sapersi, proverò a creare un
sottoalbero per le prove sperando non sia troppo difficile
rimpiazzare le stringhe.


 Si tratta di andare a pescare tutti i files .sh e chi sa quali altri. :/
 
Se non ho capito male, hai ora in primo luogo la necessità di trovare 
nei file nella tua Home tutte le occorrenze che indicano ancora il 
vecchio percorso dei file che utilizza il tuo nome utente precedente.
 
Se, sempre facendo un esempio, prima il nome utente era 'ryx' ed invece 
ora l'hai cambiato in 'arch', puoi utilizzare il comando grep per 
cercare nei file e directory:
 
grep -rnw '/path' -e 'text'
 
cioè:
 
grep -rnw '/home/arch' -e '/home/ryx'
 
che ti elencherà tutti i file nella tua attuale Home che contengono 
"/home/ryx".
 
Starà poi a te con sed o a mano modificarli correttamente.