Newsgroup: it.comp.os.linux.iniziare
Titolo: script stupido ma non va

Ho salvato tutta una serie di file con un numero all'inizio per distinguere
le varie versioni tipo 27-nomefile. Ora ho tutti i file definitivi che
volevo rinominare eliminando la cifra iniziale.
Lo script è il seguente;
#! /bin/bash
for i in *.*
do name=$(echo $i | cut -s -d '-' -f 2-)
echo $name
cp -v -i $1 $'name'
#mv $i $name
done 
echo restitutisce ciò che vorrei, ma cp non funziona.
L'errore è che non esiste il file di destinazione(???).
Se invece commento la riga con cp e decommento quella con mv funziona tutto.
Ho letto cp --help, ma non ho capito dove sbaglio.
Ciao.
-- 
Antonio  @=D 

L'errore è che non esiste il file di destinazione(???).
Forse nel nome del file compare uno spazio ?
-- 
 __
| _         "The Internet is slow, could you please reboot it ?"
|__|iambo   mailto:
gabr...@giambonini.com
 
www.giambonini.com

Forse nel nome del file compare uno spazio ?
[1] Si. Ci sono spazi, e in un caso anche una virgola (non è colpa mia,
sigh!, in quelli miei io metto l'underscore). In quel caso come si fa?
Ciao, e grazie.
-- 
Antonio  @=D 

Nel fausto dì di Tue, 05 Feb 2002 22:18:15 GMT, il prode _LoSmilzo_
presente alla corte di _it.comp.os.linux.iniziare_
così ebbe l'ardire di pronunziarsi:
|Il giorno Tue, 5 Feb 2002 22:12:23 +0100, Giambo  ha scritto:
|
|
|>>#! /bin/bash
|>#!/bin/bash
|>>for i in *.*
|>for i in `ls *`; do
|
|Che vuol dire quel 'ls' E soprattutto, Come si fa quell'apice che hai fatto
|tu?
|
|>>do name=$(echo $i | cut -s -d '-' -f 2-)
|>	name=`echo $i | cut -s -d '-' -f 2-`
|
|Anche qui, perché metti gli apici e non la parentesi?  In un altro script la
|parentesi mi andava bene.
|
|>>echo $name
|>	echo $name;
|>>cp -v -i $1 $'name'
|
  Vediamo se questo esempio ti porta sulla buona strada:
Tue, 5 Feb 2002  23:40:30  Exit status: 0 Jobs: 2 tty: 2
ambapali@obscuritas ~>$ echo \[\033[1;34m\]\u@\h\[\033[36m\] \w\[\033[1;37m\]>\[\033[0;31m\]$\[\033[0m\] 
\[\033[1;34m\]\u@\h\[\033[36m\] \w\[\033[1;37m\]>\[\033[0;31m\]$\[\033[0m\]
Tue, 5 Feb 2002  23:40:36  Exit status: 0 Jobs: 2 tty: 2
ambapali@obscuritas ~>$ echo $'PS1'
PS1
  Sandro
-- 
"In a world without walls and fences
you would not need windows and gates."
(Confucius)

Nel fausto dì di Tue, 05 Feb 2002 22:18:15 GMT, il prode _LoSmilzo_
presente alla corte di _it.comp.os.linux.iniziare_
così ebbe l'ardire di pronunziarsi:
|Il giorno Tue, 5 Feb 2002 22:12:23 +0100, Giambo  ha scritto:
|
|
|>>#! /bin/bash
|>#!/bin/bash
|>>for i in *.*
|>for i in `ls *`; do
|
|Che vuol dire quel 'ls' E soprattutto, Come si fa quell'apice che hai fatto
|tu?
|
|>>do name=$(echo $i | cut -s -d '-' -f 2-)
|>	name=`echo $i | cut -s -d '-' -f 2-`
|
|Anche qui, perché metti gli apici e non la parentesi?  In un altro script la
|parentesi mi andava bene.
|
|>>echo $name
|>	echo $name;
|>>cp -v -i $1 $'name'
|
  Vediamo se questo esempio ti porta sulla buona strada:
Tue, 5 Feb 2002  23:40:30  Exit status: 0 Jobs: 2 tty: 2
ambapali@obscuritas ~>$ echo $PS1


Alessandro Selli wrote:

Che è, na battuta??? ^___^ A parte gli scherzi, se mommenti questo esempio 
te ne sarei molto grato.
Saluti,
        by Enri'S
 
-- 
                        --- Linux Powered ---

> PS1
HTH HAND
-- 
manuel 'fmf' ferrero

Vediamo se questo esempio ti porta sulla buona strada:
[...]
Non molto :-(
Il fatto che echo $PS1 
restituisca il valore della variabile è chiaro, un po' meno perché 
echo $'PS1' dia PS1.
Infattio echo $'PS1' dovrebbe dare in uscita il valore della variabile "che
contiene" PS1 e quindi nulla per me. Cosa sbaglio?
L'altro problema, che mi sembra staccato, ma potrebbe essere lo stesso è
perché nello script quello che avevo scritto io  la parte
name=$(echo $i | cut -s -d '-' -f 2-)
dovrebbe essere sostituita con questa qui?
name=`echo $i | cut -s -d '-' -f 2-`
Non mi è ben chiaro il comportamento di questi apici, che non so neanche
digitare. Mi diresti anche come si {chiamano|digitano}?
Grazie&Ciao.
-- 
Antonio  @=D 
|nell'indirizzo tra nome e cognome niente punti|

digitare. Mi diresti anche come si {chiamano|digitano}?
Atl Gr + '
-- 
manuel 'fmf' ferrero

Nel fausto dě di Wed, 06 Feb 2002 15:37:46 GMT, il prode _manuel 'fmf' ferrero_
presente alla corte di _it.comp.os.linux.iniziare_
cosě ebbe l'ardire di pronunziarsi:

  Meno male che qualcuno capisce le mie ... battute!
  Forza pinguini!
  :-)
  Sandro
-- 
In a world without wall and fences
You would not need windows and gates.
(Confucius)

Nel fausto dì di Thu, 07 Feb 2002 00:21:01 GMT, il prode _LoSmilzo_
presente alla corte di _it.comp.os.linux.iniziare_
così ebbe l'ardire di pronunziarsi:
|Il giorno 5 Feb 2002 23:39:07 GMT, Alessandro Selli  ha scritto:
|
|>Vediamo se questo esempio ti porta sulla buona strada:
|[...]
|
|Non molto :-(
|Il fatto che echo $PS1 
|restituisca il valore della variabile è chiaro, un po' meno perché 
|echo $'PS1' dia PS1.
|Infattio echo $'PS1' dovrebbe dare in uscita il valore della variabile "che
|contiene" PS1 e quindi nulla per me. Cosa sbaglio?
|
  Quando la shell legge la riga di comando esegue l'espansione di variabile
prima dell'espansione di comando o aritmetica.  Quindi, $PS1 causa la
sostituzione della stringa PS1 con il contenuto della rispettiva variabile,
mentre $'PS1' non produce che la stringa 'PS1' prché una variabile di nome
'PS1' non esiste.
|L'altro problema, che mi sembra staccato, ma potrebbe essere lo stesso è
|perché nello script quello che avevo scritto io  la parte
|name=$(echo $i | cut -s -d '-' -f 2-)
|dovrebbe essere sostituita con questa qui?
|name=`echo $i | cut -s -d '-' -f 2-`
  Perché nella prima espressione è presente il carattere "$".  La forma $( ...
) interpreta tutti i caratteri entro le parentesi tonde come comandi, anche
quando sono presenti i caratteri "`", "$" e "\", nessuno è trattato in modo
speciale.  Non è così con la sintassi ` ... `.
|Non mi è ben chiaro il comportamento di questi apici, che non so neanche
|digitare. Mi diresti anche come si {chiamano|digitano}?
|
|Grazie&Ciao.
  Dipende da come è definita la tabella di descrizione della tastiera sotto X
o nella console.  Di solito, nelle tastiere italiane, per ottenere il
carattere "`" si preme <AltGr>+<'>, a volte bisogna farlo due volte perché
potrebbe essere in attesa di una vocale per produrre la vocale accentata.
  Tra parentesi, le informazioni sull'espansione delle variabili le ho
ottenute a suon di man 1 bash, fai anche tu questo esercizio, è molto
remunerativo in termini di cultura informatica.
  Sandro
-- 
In a world without wall and fences
You would not need windows and gates.
(Confucius)

remunerativo in termini di cultura informatica.
Cioè dovrei dare $ man bash e poi leggermi tutta quella roba??  
Scomodissimo! :-)
Infatti ho stampato la versione in italiano da Pluto e fino a un po' di
tempo fa la tenevo sul comodino, ma evidentemente se non si provano le cose
non si afferrano.
Mille grazie per la pazienza.


 Scomodissimo! :-)
Beh, se hai 50 pagine, puoi dare:
man -k bash > 
bash.1.ps
lpr 
bash.1.ps
:-)
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

Nel fausto dì di Fri, 08 Feb 2002 19:35:18 GMT, il prode _LoSmilzo_
presente alla corte di _it.comp.os.linux.iniziare_
così ebbe l'ardire di pronunziarsi:
[...]
|
|>carattere "`" si preme <AltGr>+<'>, 
|
|Sotto Win non va; mo provo sotto Linux.
|
  Certo, uindous usa la sua propria mappatura caratteri.  Pure sotto Linus ce
ne sono di diverse.  Io ho una tastiera statunitense, l'ho ridefinita però per
avere le vocali con l'accento grave facendo <AltLeft>+<vocale>, con l'accento
acuto facendo <AltGr>+<vocale> ed altre amenità.  Però la combinazione
<AltGr>+<'> è presente in praticamente tutte le mappature standad delle
tastiere.
|
|Cioè dovrei dare $ man bash e poi leggermi tutta quella roba??  
|Scomodissimo! :-)
  Sì, ma necessario.  Come credi che abbia potuto rispondere alle tue domande?
|Infatti ho stampato la versione in italiano da Pluto e fino a un po' di
|tempo fa la tenevo sul comodino, ma evidentemente se non si provano le cose
|non si afferrano.
|
|Mille grazie per la pazienza.
  Non serve leggersi TUTTO, basta cercare la sezione giusta.  Io ho le pagine
man in inglese, comunque le sezioni equivalenti in italiano dovrebbero essere
facili da trovare.  Per gli argomenti di cui sopra, ho cercato "EXPANSION",
dove ho trovato i capitoli "Brace expansion" (per le {}), "Tilde expansion"
(la ~), "Parameter expansion" (costrutti con "$") e quindi: "Command
substitution", "Arithmetic expansion", "Process Substitution", "Word
Splitting", "Pathname expansion", "Pattern Matching" e "Quote Removal".  Sta
tutto lì, salta quello che non ti serve e vedi quanto è complessa e potente la
bash.
  Linux is power.
  :-)
  Sandro
-- 
"In a world without walls and fences
you would not need windows and gates."
(Confucius)