Pagina 1 di 2

[Risolto - Problema aggirato] Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 17:53
da fiamma
Ciao a tutti
ho letto da qualche parte (ma non ricordo dove) che esiste un comando per far leggere a bash gli spazi contenuti in un nome.
Avrei bisogno del file "file con spazi.txt" ma ovviamente bash non riesce a leggere per intero il nome.

Vi ricordate per caso qual è il comando?
Grazie

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 17:59
da tomm
ci sono diversi metodi: Uno è file\ con\ spazi.txt
Un altro è "file con spazi.txt"

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 18:15
da fiamma
O mi sono spiegato male o non ho capito.
Avrei bisogno di passare ad un comando un file che nel suo nome ci sono spazi "file con spazi.txt".
Bash vuole che i nomi vengano scritti tutti attaccati, ma mettermi a rinominare centinaia di file è un suicidio, quindi cercavo un comando che leggesse gli spazi.

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 18:17
da mous16
facciamo che devi copiare il file "nome con spazio.txt" nella tua home. hai 2 modi
1)

Codice: Seleziona tutto

cp nome\ con\ spazio.txt ~/
2)

Codice: Seleziona tutto

 cp "nome con spazio.txt" ~/
Esattamente come diceva tomm

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 18:19
da fiamma
Ok grazie
allora non avevo capito  :-[

Re: [Risolto] Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 18:37
da fiamma
Ho cantato vittoria troppo presto.
Il file "file con spazi.txt" lo devo passare al comando sotto forma di variabile e con questi due modi non funizona.

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 19:55
da tomm
non saprei (ma trovi sicuramente la risposta in un tutorial per bash, es http://www.tldp.net/LDP/abs/html/index.html ) ma su questo sito trovi un ottimo script per riniminare tutti i file e cartelle con gli spazi:
http://www.spaghettilinux.org/spaghetti-script/sostituire-spazi-bianchi-con-underscore

guardando nello script probabilmente trovi anche la soluzione al problema

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 19:59
da Guiodic
che vuol dire "come variabile"? intendi come paramentro nella riga di comando? di cosa si tratta? uno script bash, perl, python... o altro?

Re: [Risolto] Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 20:12
da crap0101
fiamma ha scritto: Ho cantato vittoria troppo presto.
Il file "file con spazi.txt" lo devo passare al comando sotto forma di variabile e con questi due modi non funizona.
variabile...come?
marco@gNS:~$ A="file con spazi.txt"
marco@gNS:~$ echo $A
file con spazi.txt
marco@gNS:~$

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 20:18
da Volans
Usa le virgolette anche quando usi la variabile ;) :

Codice: Seleziona tutto

A="file con spazi.txt"
ls "${A}"

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 20:36
da fiamma
Lo script è in bash

cd "$audio"    #$audio è la cartella in cui sono presenti i file
music=`ls`
xterm -e mplayer "$music"

"Cartella con spazi" che contiene "file con spazi.ape"

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 20:42
da Guiodic
forse il problema è che mplayer non vuole spazi nei nomi dei file, poi non sono sicuro che li accetti uno dietro l'altro così...

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 20:45
da Volans
Allora devi usare music=`ls -Q` che ti mette le virgolette all'output di ls... ;)

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 20:52
da fiamma
Guiodic ha scritto: forse il problema è che mplayer non vuole spazi nei nomi dei file, poi non sono sicuro che li accetti uno dietro l'altro così...
Ho fatto la prova con dei file senza spazi, e vengono riprodotti uno dietro l'altro.
Se metto i doppi apici alla variabile del comando cd, funizona, ma se metto i doppi apici per la variabile di ls, xterm si apre ma poi si  chiude subito.
Se non metto i doppi apici xterm rimane aperto con scritto
Playning file
File not found: file

Playning senza
File not found:senza

Playning spazio
Reading from stdin
Volans ha scritto: Allora devi usare music=`ls -Q` che ti mette le virgolette all'output di ls... ;)
Non funge, sia se metto i doppi apici a $music sia che no

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 21:04
da Volans
Scusa fai la prova a mano:

Codice: Seleziona tutto

xterm -e mplayer "file con spazi.ape" "secondo file.ape"
se funziona così allora dovrebbe funzionare con -Q non so però se xterm o mplayer diano problemi.

Se posso perché usi xterm?

Re: Far leggere a bash gli spazi

Inviato: domenica 7 settembre 2008, 21:12
da fiamma
Volans ha scritto: Scusa fai la prova a mano:

Codice: Seleziona tutto

xterm -e mplayer "file con spazi.ape" "secondo file.ape"
se funziona così allora dovrebbe funzionare con -Q non so però se xterm o mplayer diano problemi.

Se posso perché usi xterm?
Se faccio a mano funziona! Se gli passo la variabile no  ???

Sto usando l'interprete buc (interfaccia grafica per script bash) ma se lancio mplayer senza xterm o gnome-terminal l'applicativo si scurisce e quindi non posso cliccare il bottone per interrompere la riproduzione dei file.

Re: Far leggere a bash gli spazi

Inviato: lunedì 8 settembre 2008, 0:24
da Volans
Con che utente lo stai lanciando mplayer?
In caso controlla con:
ps ux | grep mplayer

Re: Far leggere a bash gli spazi

Inviato: lunedì 8 settembre 2008, 20:27
da fiamma
Volans ha scritto: Con che utente lo stai lanciando mplayer?
In caso controlla con:
ps ux | grep mplayer
Dall'output di questo comando esce il mio nome utente.

Re: Far leggere a bash gli spazi

Inviato: martedì 9 settembre 2008, 4:46
da Volans
Se hai controllato quando mplayer era in esecuzione tramite lo script allora viene lanciato con il tuo stesso utente e dovresti poterlo chiudere se vuoi... sicuro che non fosse un mplayer avviato normalmente dal menu?

Re: Far leggere a bash gli spazi

Inviato: martedì 9 settembre 2008, 13:39
da fiamma
Correggo quanto detto.
Lancio mplayer attraverso lo script, si apre xterm (sul titolo della finestra compare la scrita mplayer) con scritto :
Playning file
File not found: file

Playning senza
File not found:senza

Playning spazio
Reading from stdin

Apro il terminale e digito i comandi che mi hai dato e compare:

mionome  7257  0.5  0.2  10328  3296 ?        S    13:32   0:00 xterm -e mplayer
e l'elenco dei file (dentro alle virgolette) presenti nella cartella scelta.
mionome  7258  1.0  1.0  51056 16336 pts/0    Ss+  13:32   0:00 mplayer
di nuovo  l'elenco dei file (dentro alle virgolette) presenti nella cartella scelta.
mionome  7283  0.0  0.0   3008   760 pts/1    R+   13:32   0:00 grep mplayer
mionome@mionome-desktop:~$

Questo è tutto.