Re: Duda nombre de carpetas con espacios

2014-02-22 Por tema Camaleón
El Fri, 21 Feb 2014 16:37:12 -0500, Ismael L. Donis Garcia escribió:

 Estoy intentando realizar un script que va a ser ejecutado sh backup.sh
 
 Pero resulta que dentro existe una carpeta que tiene espacios y no logro
 que me funcione:
 
 He intentado de mil formas, pero ninguna me funciona:
 
 con:
 DIR=/mnt/Salvas/Bases de Datos/diarias 
 DIR=/mnt/Salvas/Bases\ de\ Datos/diarias 
 DIR=/mnt/Salvas/'Bases de Datos'/diarias
 
 Pero de ninguna forma va.

Hum... veamos:

sm01@stt008:~$ cat Escritorio/test.sh 

DIR1=/mnt/Salvas/Bases de Datos/diarias; echo $DIR1
DIR2=/mnt/Salvas/Bases\ de\ Datos/diarias; echo $DIR2
DIR3=/mnt/Salvas/'Bases de Datos'/diarias; echo $DIR3

sm01@stt008:~$ sh Escritorio/test.sh 
Escritorio/test.sh: 3: Escritorio/test.sh: de: not found

/mnt/Salvas/Bases de Datos/diarias
/mnt/Salvas/Bases de Datos/diarias

Salvo la primera el resto parece funcionar sin problemas. ¿Qué error te 
aparece?

 Como solventar esto sin eliminar los espacios?

Prueba a depurar el error tú mismo y si no te entiendes manda la salida a 
la lista:

sm01@stt008:~$ sh -x Escritorio/test.sh 
+ DIR1=/mnt/Salvas/Bases de Datos/diarias
Escritorio/test.sh: 1: Escritorio/test.sh: de: not found
+ echo

+ DIR2=/mnt/Salvas/Bases de Datos/diarias
+ echo /mnt/Salvas/Bases de Datos/diarias
/mnt/Salvas/Bases de Datos/diarias
+ DIR3=/mnt/Salvas/Bases de Datos/diarias
+ echo /mnt/Salvas/Bases de Datos/diarias
/mnt/Salvas/Bases de Datos/diarias

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/pan.2014.02.22.15.16...@gmail.com



Re: Duda nombre de carpetas con espacios

2014-02-22 Por tema Eduardo A . Bustamante López
On Fri, Feb 21, 2014 at 04:37:12PM -0500, Ismael L. Donis Garcia wrote:
 Estoy intentando realizar un script que va a ser ejecutado sh backup.sh
 
 Pero resulta que dentro existe una carpeta que tiene espacios y no
 logro que me funcione:
 
 He intentado de mil formas, pero ninguna me funciona:
 
 con:
 DIR=/mnt/Salvas/Bases de Datos/diarias
 DIR=/mnt/Salvas/Bases\ de\ Datos/diarias
 DIR=/mnt/Salvas/'Bases de Datos'/diarias
 
 Pero de ninguna forma va.
 
 Como solventar esto sin eliminar los espacios?
Creo que ya un listero comentó, pero yo quiero recalcar en la
IMPORTANCIA de esto, ya que veo que los que te están pasando
sugerencias no tienen idea de lo que hablan.

Es de GRAN importancia que cuando utilices una variable, la protejas
con comillas dobles. Esto es, usa $variable, nunca $variable. La
razón es un poco compleja, pero haré mi intento para simplificar.

Por estándar, el shell está mandado a aplicar estos dos pasos, a
aquellas variables que se expanden SIN resguardar con comillas
dobles:

1. Fragmentación en palabras
2. Expansión de patrones de tipo glob

La fragmentación en palabras significa que si tu variable contiene
espacios, al expandirla SIN comillas, el shell partirá lo que se
considera como una sola palabra, en múltiples, utilizando los
espacios como punto de fragmentación.

Esto lo puedes ver muy simple con este código:

dualbus@debian:~$ args(){ printf '%s' $@; printf \\n; }
dualbus@debian:~$ var='variable con espacios'
dualbus@debian:~$ args $var
variableconespacios
dualbus@debian:~$ args $var
variable con espacios

Si notas, en el primer caso, args recibe 3 argumentos, 'variable',
'con', y 'espacios', cada uno de forma individual. En el segundo
caso, cuando está entre comillas dobles, lo recibe como un solo
argumento (en tu caso es lo que buscas, que se preserve el nombre de
archivo como uno solo).

Nota: nunca uses el comando 'echo' para diagnosticar este tipo de
asuntos. Es inútil, ya que no puedes distinguir entre:

echo 'hola mundo'

y

echo hola mundo

que en realidad son comandos muy diferentes.

Ahora, para guardar espacios en el nombre es bastante sencillo, de
hecho hay tres maneras típicas:

1.- var='mi variable con espacios'
2.- var=mi variable con espacios
3.- var=mi\ variable\ con\ espacios

Nota que no usé la aberración que es:

var=mi\ variable\ con\ espacios # esto está MAL, MAL


Así que hasta el momento ya vimos cómo evitar que se pierdan tus
espacios, y cómo ponerlos en tus variables.

Una cosa particular es que puede que esté algún caracter adicional en
el nombre que no estés notando. Para diagnosticar esto, te recomiendo
hagas un:

printf '%q\n' /mnt/Salvas/Bases*

(nota, no omitas ningún caracter)

Con este comando, podrás darte cuenta de si hay algún caracter
escondido en el nombre que no estés notando. Y la ventaja es que su
resultado lo puedes usar para definir la variable:

dualbus@debian:~$ mkdir 'Nombre Con Espacios'
dualbus@debian:~$ printf '%q\n' Nombre*
Nombre\ Con\ Espacios

por lo que puedes hacer:

nombre=Nombre\ Con\ Espacios

También, como recomendó otro listero, puedes usar sh -x tuscript para
diagnosticar problemas, y ver que realmente haga lo que tú pretendes.


En resúmen: Para guardar cadenas con espacios basta con utilizar ya
sea comillas sencillas ('), dobles (), o el contradiagonal (\). Esto
es para *guardar* en la variable. Para utilizar la variable, y que no
se *pierdan* los espacios, recuerda poner la variable entre comillas
dobles: $var, nunca $var.

De tal forma que al final tengas algo así:


DIR='/mnt/Salvas/Bases de Datos/diarias'
echo prueba  $DIR/archivo-de-prueba


Este es un ejemplo de como utilizar la variable para crear un archivo
dentro del directorio.


Saludos,

-- 
Eduardo Alan Bustamante López


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20140222161239.ga13...@dualbus.me



Re: OT - autofs y tmpfs

2014-02-22 Por tema Juan José López
El Fri, 21 Feb 2014 15:15:32 + (UTC)
Camaleón noela...@gmail.com escribió:
 El Thu, 20 Feb 2014 22:19:02 +0100, Juanjo López escribió:
 
  Hola.
 
 (ese html...)

Perdón; envié envie desde el cliente WEB de GMail, y hace mucho que no
lo uso. Esta respuesta va desde claws-mail :-)

 
  Recientemente, he instalado un SSD como segundo disco duro, con una
  partición F2FS para /.
  /home se encuentra en esa misma partición.
  
  El objetivo es minimizar las escrituras en este disco SSD, por lo
  que había pensado en lo siguiente:
  
  * Para cada usuario, crear un archivo .tar en /var/local, que
  contenga todos los archivos de su home.
  * En auto.master, crear un mapa para el directorio /home:
  '/home  program:/usr/local/bin/autohome'
  
  Cada vez que un usuario entre al sistema, el script que genera el
  mapa se encarga de extraer el tar bajo /tmp/home ( /tmp es tmpfs ),
  y devuelve a su vez un mapa del tipo '$NAME  -fstype=bind 
  :/tmp/home/$NAME'.
 
 Uhhh... uséase, que la /home esté en la memoria RAM, pero ¿no es un
 poco arriesgado? Si la sincronización falla podrías perder datos :-?

Es un equipo doméstico. Ni mis niños ni sus padres trabajan con 'datos
críticos'. De todas formas, un pequeño script desde cron minimiza
pérdidas. ;-)

  Hasta aquí, todo OK. El problema es:  ¿ como actualizar el tar con
  los datos de cada usuario al desmontar su /home ??
  
  No encuentro ninguna forma de ejecutar ningún tipo de script al
  desmontar el directorio, con lo que los datos de cada usuario no son
  volcados a su archivo .tar correspondiente, y cualquier cambio se
  pierde.
  
  He pensado en poner un script en cron que actualice los datos del
  usuario cada cierto tiempo (si es que hay cambios), por ejemplo con
  rsync (y eliminar el tar del esquema), pero no me parece una
  solución elegante, y siempre puede suceder que un usuario salga
  antes de que el cron llame al script de sincronización y se pierdan
  los últimos cambios.
  
  ¿ Alguna sugerencia ?
 
 Lo del archivo .tar se me escapa, pero creo que este sistema te
 podría servir:
 
 Ubuntu thumb drive
 http://robwicks.com/tag/tmpfs/

Lo del tar es una 'pijada'. En vez de guardar los datos en un
directorio, hacerlo dentro de un archivo tar. Ya lo he eliminado del
esquema.

Efectivamente, lo que quiero realizar es algo como lo que explican en
el enlace.

En un principio, la idea era utilizar autofs para montar los
directorios de los usuarios en tmpfs, sincronizandolos con un archivo
tar (eliminado del esquema), o desde un directorio.

Este sistema tiene un inconveniente: algunos programas, como por
ejemplo 'lightdm', acceden a TODOS los directorios de los usuarios
buscando ciertos archivos. Por ejemplo, 'lightdm' busca los archivos
'.face' para mostrar las imágenes de los usuarios. Si utilizo autofs,
se cargan en memória todos los directorios /home/, lo cual no es
aceptable.

Actualmente, estoy experimentando con otra secuencia, en varios pasos:

1.- Arranque del sistema. Se crean y sincronizan los directorios /home/
de todos los usuarios, copiando tan solo ciertos datos (archivos .face
en este caso).

2.- libpam-script, que a su vez ejecuta un script cada vez que un
usuario INICIA sesión. Un rsync y listo.

3.- Un script en cron, que periodicamente (cada 15 minutos) realice un
rsync de los directorios /home/ de los USUARIOS LOGUEADOS.

4.- libpam-script, que a su vez ejecuta un script cada vez que un
usuario FINALIZA sesión. Otro rsync.

Estoy en ello; si os resulta interesante, cuando lo termine posteo los
detalles exactos. Creo que puede resultar útil para algunos.

En lo referente a la pregunta inicial, alguna forma de ejecutar algo al
desmontar una unidad, no he encontrado nada relevante. Aparece por ahí
algo sobre programas auxiliares, del tipo umount.smb, pero no he
profundizado. Como ya he comentado, el automontaje presenta ciertos
inconvenientes, por lo que he descartado esa ruta de acción.

 Saludos,

Saludos.


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/2014020325.25c94537@lilu



Re: Duda nombre de carpetas con espacios

2014-02-22 Por tema jEsuSdA 8)

El 22/02/14 17:12, Eduardo A. Bustamante López escribió:

On Fri, Feb 21, 2014 at 04:37:12PM -0500, Ismael L. Donis Garcia wrote:

Estoy intentando realizar un script que va a ser ejecutado sh backup.sh

Pero resulta que dentro existe una carpeta que tiene espacios y no
logro que me funcione:

He intentado de mil formas, pero ninguna me funciona:

con:
DIR=/mnt/Salvas/Bases de Datos/diarias
DIR=/mnt/Salvas/Bases\ de\ Datos/diarias
DIR=/mnt/Salvas/'Bases de Datos'/diarias

Pero de ninguna forma va.

Como solventar esto sin eliminar los espacios?

Creo que ya un listero comentó, pero yo quiero recalcar en la
IMPORTANCIA de esto, ya que veo que los que te están pasando
sugerencias no tienen idea de lo que hablan.

Es de GRAN importancia que cuando utilices una variable, la protejas
con comillas dobles. Esto es, usa $variable, nunca $variable. La
razón es un poco compleja, pero haré mi intento para simplificar.

Por estándar, el shell está mandado a aplicar estos dos pasos, a
aquellas variables que se expanden SIN resguardar con comillas
dobles:

1. Fragmentación en palabras
2. Expansión de patrones de tipo glob

La fragmentación en palabras significa que si tu variable contiene
espacios, al expandirla SIN comillas, el shell partirá lo que se
considera como una sola palabra, en múltiples, utilizando los
espacios como punto de fragmentación.

Esto lo puedes ver muy simple con este código:

dualbus@debian:~$ args(){ printf '%s' $@; printf \\n; }
dualbus@debian:~$ var='variable con espacios'
dualbus@debian:~$ args $var
variableconespacios
dualbus@debian:~$ args $var
variable con espacios

Si notas, en el primer caso, args recibe 3 argumentos, 'variable',
'con', y 'espacios', cada uno de forma individual. En el segundo
caso, cuando está entre comillas dobles, lo recibe como un solo
argumento (en tu caso es lo que buscas, que se preserve el nombre de
archivo como uno solo).

Nota: nunca uses el comando 'echo' para diagnosticar este tipo de
asuntos. Es inútil, ya que no puedes distinguir entre:

echo 'hola mundo'

y

echo hola mundo

que en realidad son comandos muy diferentes.

Ahora, para guardar espacios en el nombre es bastante sencillo, de
hecho hay tres maneras típicas:

1.- var='mi variable con espacios'
2.- var=mi variable con espacios
3.- var=mi\ variable\ con\ espacios

Nota que no usé la aberración que es:

var=mi\ variable\ con\ espacios # esto está MAL, MAL


Así que hasta el momento ya vimos cómo evitar que se pierdan tus
espacios, y cómo ponerlos en tus variables.

Una cosa particular es que puede que esté algún caracter adicional en
el nombre que no estés notando. Para diagnosticar esto, te recomiendo
hagas un:

printf '%q\n' /mnt/Salvas/Bases*

(nota, no omitas ningún caracter)

Con este comando, podrás darte cuenta de si hay algún caracter
escondido en el nombre que no estés notando. Y la ventaja es que su
resultado lo puedes usar para definir la variable:

dualbus@debian:~$ mkdir 'Nombre Con Espacios'
dualbus@debian:~$ printf '%q\n' Nombre*
Nombre\ Con\ Espacios

por lo que puedes hacer:

nombre=Nombre\ Con\ Espacios

También, como recomendó otro listero, puedes usar sh -x tuscript para
diagnosticar problemas, y ver que realmente haga lo que tú pretendes.


En resúmen: Para guardar cadenas con espacios basta con utilizar ya
sea comillas sencillas ('), dobles (), o el contradiagonal (\). Esto
es para *guardar* en la variable. Para utilizar la variable, y que no
se *pierdan* los espacios, recuerda poner la variable entre comillas
dobles: $var, nunca $var.

De tal forma que al final tengas algo así:


DIR='/mnt/Salvas/Bases de Datos/diarias'
echo prueba  $DIR/archivo-de-prueba


Este es un ejemplo de como utilizar la variable para crear un archivo
dentro del directorio.


Saludos,



Magnífica respuesta, Eduardo.
Lo has explicado todo muy bien. Me la guardo en marcadores.

Yo creo que el problema del usuario que inició la consulta irá en el 
sentido que apuntas de no entrecomillar las variables cuando se usan. A 
mi me pasaba mucho al principio de hacer scripts. ;)


un saludo!


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/5309144a.3040...@jesusda.com



Compilar e instalar programa en C++.

2014-02-22 Por tema Brenillos

Buenas, buenas.
Primero que todo, un saludo a todos.
Mi pregunta es, yo tengo un programa escrito en C++ (Code-Blocks) y 
quisiera compilarlo de forma que lo pueda convertir en un .deb e 
instalarlo en Debian y poder manejarlo como una aplicación normal.

Saludos y muchas gracias.


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/blu0-smtp181e833f4ebd840f7da32b0a1...@phx.gbl



Re: Compilar e instalar programa en C++.

2014-02-22 Por tema Matías Bellone
2014-02-22 18:19 GMT-03:00 Brenillos brenil...@hotmail.com:
 Buenas, buenas.
 Primero que todo, un saludo a todos.
 Mi pregunta es, yo tengo un programa escrito en C++ (Code-Blocks) y quisiera
 compilarlo de forma que lo pueda convertir en un .deb e instalarlo en Debian
 y poder manejarlo como una aplicación normal.

Para aprender a crear paquetes Debian, te recomendaría empezar leyendo:

https://wiki.debian.org/IntroDebianPackaging

Saludos,
Toote


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/CANk6MLYzPFj8VRvzEpCr=ik-dqiaqn_q03ycd489htjgriz...@mail.gmail.com