View Full Version : [script bash] stampare tutti i nomi di file e directory
ciao a tutti ho il seguente problema: voglio stampare a video tutti i file e directory della stessa directory dove sta lo script bash su ubuntu. Ho usato un for in ls ma mi da un syntax error. qualcuno saprebbe aiutarmi ??? grazie
#!/bin/sh
for file in 'ls-l' do
echo $file
done
ciao a tutti ho il seguente problema: voglio stampare a video tutti i file e directory della stessa directory dove sta lo script bash su ubuntu. Ho usato un for in ls ma mi da un syntax error. qualcuno saprebbe aiutarmi ??? grazie
#!/bin/sh
for file in 'ls-l' do
echo $file
done
ls -l
ls -l
scusa non ho capito. non devo usare tra virgola semplice ls -l??? questo vuoi dire???
BlackShark92
28-06-2011, 20:43
Esiste un comando apposito, ls che, dotato di appositi switch, permette di vedere tutte le info di un file. Es.. ls -i mostra anche l'i-node number, ls -a mostra anche quelli nascosti e così via...
kevinpirola
28-06-2011, 21:12
ma soprattutto è
ls SPAZIO -l
sennò non funziona
ho fatto come mi avete suggerito
#!/bin/sh
for file in 'ls -l'
do
echo $file
done
cioè lasciando lo spazio tra ls e l. ma l output mi restituisce proprio ls -l
non so piu cosa fare :mc: spero mi aiutate
ho fatto come mi avete suggerito
#!/bin/sh
for file in 'ls -l'
do
echo $file
done
cioè lasciando lo spazio tra ls e l. ma l output mi restituisce proprio ls -l
non so piu cosa fare :mc: spero mi aiutate
se invece non uso il singolo apice per ls -l in output mi da :
ls
-l
:mc:
#!/bin/sh
for file in `ls-l` do
echo $file
done
Backquote invece che quote
oppure anche
#!/bin/sh
for file in $(ls-l) do
echo $file
done
ehm, ovviamente vanno riaggiunti gli spazi... ma non riesco a modificare il post...
#!/bin/sh
for file in `ls-l` do
echo $file
done
Backquote invece che quote
oppure anche
#!/bin/sh
for file in $(ls-l) do
echo $file
done
ho provato funziona grazie. vorrei sapere una cosa: se un file ha il nome compreso dello spazio come lo faccio a stampare sulla stessa riga???
ESEMPIO se il file è del tipo nome 1 me lo stampa su due righe:
nome
1
come posso ovviare a ciò???
ho provato funziona grazie. vorrei sapere una cosa: se un file ha il nome compreso dello spazio come lo faccio a stampare sulla stessa riga???
ESEMPIO se il file è del tipo nome 1 me lo stampa su due righe:
nome
1
come posso ovviare a ciò???
Hai bisogno solo dei nomi o anche delle informazioni che ti da il parametro "-l" ?
Hai bisogno solo dei nomi o anche delle informazioni che ti da il parametro "-l" ?
solo dei nomi.
ripeto voglio che il file( o directory) testo 1 venga visualizzato sulla stessa linea , non su due linee consecutive.
solo dei nomi.
ripeto voglio che il file( o directory) testo 1 venga visualizzato sulla stessa linea , non su due linee consecutive.
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for file in * ; do
echo $file
done
IFS=$SAVEIFS
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for file in * ; do
echo $file
done
IFS=$SAVEIFS
perdonami ma non ho capito molto non essendo molto pratico degli script.
nel mio script uso bin/sh mentre invece tu usi bin/bash. Poi questo ifs cos è???
e sopratutto il for con * cosa si intende??
IFS e' la variabile che contiene i caratteri considerati separatori per la shell expansion
http://www.faqs.org/docs/bashman/bashref_33.html
In pratica ho tolto lo spazio come separatore in modo da tenere unite le parole con spazi dentro
/bin/bash e' il percorso all'eseguibile di bash
sui sistemi unix /bin/sh e' di solito un link a /bin/bash, per cui in realta' non cambia tanto.
ah dimenticavo
ovviamente "*" e' la wildcard che viene espansa dalla shell in tutti i file della cartella corrente
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.