PDA

Visualizza la versione completa : cambiare default di cp


fausto
23-11-2005, 20:48
Ciao a tutti.

La quetsione e' semplice, ma mi chiedevo se ci fosse una maniera elegante di farlo.

Il comando cp di default non si preoccupa di avvertire se si sta copiando su un file presistente. L'opzione -i risolve il problema.
Cosa devo fare perche' il comportamento di default di cp sia con l'opzione -i?
Io ho fatto un microscript del tipo
# variazione di cp
cp -i $*;
# fine script
Lo posso chiamare miocp e amen.

Ma io vorrei che a cambiare sia il comportamento di cp.
Fermo restando che possio togliere cp da /bin, rinominarlo e cambiare il mio a miocp in cp, mi chiedevo appunto se ci fossero modi standard per personalizzare i comandi.

Idee?

fausto
23-11-2005, 20:48
:oVVoVe: :oVVoVe: :oVVoVe:
che vergogna....
ovviamente e' default..... :stordita: :stordita: :stordita:

Ikitt
23-11-2005, 20:51
Originariamente inviato da fausto
[...]
Ma io vorrei che a cambiare sia il comportamento di cp.
Fermo restando che possio togliere cp da /bin, rinominarlo e cambiare il mio a miocp in cp, mi chiedevo appunto se ci fossero modi standard per personalizzare i comandi.
Idee?
Definisci un alias per la tua shell (bash presumibilmente). Molte distribuzioni lo fanno di per se.

cacao74
23-11-2005, 20:54
Originariamente inviato da fausto
:oVVoVe: :oVVoVe: :oVVoVe:
che vergogna....
ovviamente e' default..... :stordita: :stordita: :stordita:
Non devi vergognarti di nulla. :)

(anche se non un comporamento predefinito)


Un modo elegante e diffuso per dare un volto nuovo alla
versione predefinita dei comandi, quello di utilizzare gli alias.


cacao74@winnie:~/tmp$ ls
cacao.sh cacao.sh~
cacao74@winnie:~/tmp$ alias ls="ls -l"
cacao74@winnie:~/tmp$ ls
total 8
-rw-r--r-- 1 cacao74 users 224 2005-11-23 19:46 cacao.sh
-rw-r--r-- 1 cacao74 users 171 2005-11-23 19:42 cacao.sh~
cacao74@winnie:~/tmp$ unalias ls
cacao74@winnie:~/tmp$ ls
cacao.sh cacao.sh~


man bash per i dettagli

ciao

fausto
23-11-2005, 21:16
fiko!
grazie.

comunque colgo l'occasione per dire una cosa.
C' una forte asimmetria per quanto riguarda la documentazione sui comandi.
Se uno sa il nome del comando, allora puo' trovare facilissimamente valanghe di informazioni. Ma al contrario, anche se la questione e' semplice, come quella qui esposta, e' difficile trovare da soli informazioni che, a partire da quello che uno vuole fare, conduca al comando.
Certo apropos non e' un cos valido aiuto.

Ciao,
f.

l.golinelli
24-11-2005, 12:55
http://a2.swlibero.org

fausto
24-11-2005, 19:45
ovviamente, sapere tutto e' sempre la migliore soluzione...

fausto
29-11-2005, 17:56
Mi e' venuto un dubbio.

Supponiamo che io abbia modificato attraverso un alias il comportamento di un cp.

Supponiamo pero' che io voglio scrivere uno script in cui viene usato cp e diciamo che voglio scrivere questo script nel modo piu' portabile possibile.

Se fra le itruzioni c'era quella di copiare su un file esistente, a causa dell'alias lo script si ferma e chiede per la conferma. Ma io no voglio questo...
E' chiaro che in questo caso risolvo il problema sostituendo a cp, cp-f.

Ma mi chiedo, non c'e' un modo per eliminare temporaneamente, per esempio la durata dell'esecuzione dello script, gli tutti gli alias?

Ikitt
29-11-2005, 18:02
Originariamente inviato da fausto
Ma mi chiedo, non c'e' un modo per eliminare temporaneamente, per esempio la durata dell'esecuzione dello script, gli tutti gli alias?
unalias -a, direi
oppure potresti usare direttamente il path assoluto dei programmi, oltrepassando cosi` gli alias impostati nel caso questi abbiano lo stesso nome di programmi esistenti.

fausto
29-11-2005, 18:04
:stordita: :stordita: :fagiano: :fagiano:
Sono un idiota.
Lo ammeto mestamente. :cry:

Se fate man bash nella parte dove spiega gli unalias, dice anche che gli alias vengo presi in considerazione solo se la shell e iterattiva. al trimenti no, a meno che non sia stata specificata una specifica direttiva.

Pardon pardon.
cioa,
f.

Loading