Newsgroup: it.comp.os.linux.iniziare
Titolo: Creare semplice script

Salve,
devo creare un seplicissimo script che mi permetta di spostarmi dalla mia
directory home in una sottodirectory di questa, ed essendo il percorso
abbastanza lungo da digitare, avevo pensato ad uno script che mi esegua la
semplice istruzione cd percorso-directory.
Allora creo il file change_dir.sh cn il seguente contenuto
#!/bin/sh
cd /c_programming
cd /network_programming
ed apparentemente funziona, perchč, se inserisco le istruzioni per
visualizzare la directory corrente, cioč:
#!/bin/sh
cd /c_programming
echo pwd
cd /network_programming
echo pwd
quando eseguo lo script mi visualizza il percorso corretto. Solo che alla
fine dello script mi trovo sempre nella stessa directory da cui lancio lo
script. Come risolvo questo problema?
Grazie per l'aiuto
Franz

 
Non so se c'entri col tuo problema, e potrei dire una fesseria, ma non
c'è un "/" di troppo?
Se ho ben capito la directory network_programming si trova dentro
c_programming, giusto? in questo caso nella terza riga dovresti scrivere
"cd network_programming" e non "cd /network_programming", altrimenti lui
cerca quella directory in root e non in c_programming.
Ciao.
-- 
Lucio.
"Tutto quello che possiamo fare è sperare per il meglio, aspettarci 
il peggio e accontentarci di una via di mezzo"

 cerca quella directory in root e non in c_programming.
Si, nella fretta di ricopiare a mano per scrivere il m essaggio, ho inserito
un / in più. Ma l'istruzione funziona correttamente, perchè poi l'ultima
istruzione pwd mi mostra proprio la directory nella quale mi voglio
spostare.
Franz

 semplice istruzione cd percorso-directory.
Non fai prima a creare nella tua home un link simbolico alla directory da
raggiungere?
Dario Basile
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
iD8DBQE/+G1v7mRkrRsDl/8RAnEpAKCZIfDAJ5Yw8DdKvFfCZnNRdbM7twCfXIe5
+5Dy/DwsPjVo8dvNfLUvh6g=
=fc2c
-----END PGP SIGNATURE-----

 
Non vorrei dire un idiozia ma non fai prima a definire un alias?
Per esempio:
alias cdnet='cd ~/c_programming/network_programming'
dove "cdnet" e' il nome che vuoi dare al comando.
Ciao


Lo script si comporta come dovrebbe: lancia una shell al cui interno cambia 
directory, ma quando quella shell muore (alla fine dello script) ritorni 
alla shell da cui sei partito che non si e' mossa.
Quello che vuoi fare non si fa con uno script, ma con un alias come ti hanno 
gia' detto. 
Si' puo' fare anche con uno script, ma e' macchinoso per esempio:
creo lo script:
$ echo "cd Documenti" >prova.sh
$ echo "echo `pwd` " >>prova.sh
$ chmod u+x prova.sh
lancio lo script da /home/bodo
$ pwd
/home/bodo
$ ./prova.sh
/home/bodo/Documenti
$ pwd
/home/bodo
sono rimasto in /home/bodo anche se lo script in Documenti c'e' andato.
Adesso lancio lo script con questa sintassi:
$ pwd
/home/bodo
$ . prova.sh
/home/bodo/Documenti
$ pwd 
/home/bodo/Documenti
Sono andato in Documenti usando lo script. Pero' come vedi e' scomodo usare 
quella sintassi.
-- 
Enrico Bodo  -   Postdoctoral Research Fellow      
University of Rome "La Sapienza" 
Department of Chemistry         

  abbastanza lungo da digitare,
ma... Usare l'autocompletamento dei percorsi? (tasto tab per intendersi)
con quello piu` pushd/popd non dovresti aver problemi.
A me per questo -se ho ben capito- anche un'alias pare un po`
un'overkill...
-- 
Ikitt (signature under [re]construction)

 gia' detto.
Beh, io volevo capire se era possibile realizzare la mia idea, e con gli
alias, veramente non li conoscevo proprio, ma ora inizierò a studiare la
faccenda. Sai, non mi sono mai messo a creare script in Linux, e la shell la
conosco pochissimo.
Ciao
Franz

 semplicissimo.
  Che fai paragoni la shell del DOS con la bash?
  E come paragonare una 500 alla ferrari ;)
-- 
"Senza lilleri non si lallera"

 script. Come risolvo questo problema?
essenzialmente quando esegui lo script generi una nuova istanza 
della shell nella quale cambi directory. Quando termina lo script 
torni nella vecchia shell e nella sua current directory.
Per capirci, prova a fare così in un xterm:
$ pwd 
/home/pippo
$ bash
 $ cd c_programming
 $ pwd
 $ /home/pippo/c_programming
 $ ^D
$ pwd 
/home/pippo
usando il tuo script succede più o meno la stessa cosa ;-)
Soluzioni: alias, uso del tab e  link simbolici te li hanno già
suggeriti. Se guardi nel man di bash, c'è anche la possibilità di 
"marcare" una directory in modo da poterci andare rapidamente.
Controlla se questo "marchio" può essere reso permanente,
magari aggiungendo qualcosa in ~/.bashrc
So che esiste questa possibilità, ma non l'ho mai utilizzata.
Un altro metodo poco pratico è togliere la prima riga dal tuo 
script e lanciarlo con 
$ source tuo_script
i comandi contenuti verranno eseguiti dalla shell corrente
ciao, andrea