• Publicidad

Histórico de comandos y permisos a ficheros

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Histórico de comandos y permisos a ficheros

Notapor floen » 2010-06-21 05:36 @275

Buenas, soy nuevo en el foro, un saludo a todos.

Debo realizar un script para una asignatura, y al no haber tocado antes este lenguaje me encuentro con problemas muy básicos y esperaba a ver si alguien me los pudiera resolver.

El primero de ellos es que necesito realizar un fichero histórico que vaya almacenando cada orden que se le pasa al script para después poder mostrarlo, modificarlo o borrarlo, y no sé cómo puedo tomar de la consola la línea de comandos, ya que he intentado con <STDIN> pero no me almacena el comando completo.

Y el siguiente de los problemas es que debo darle unos permisos específicos a varios archivos, y supongo que son con la orden chmod(), pero me dan error.
Estos son los permisos que me piden:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
chmod a-r config3
chmod a+x mifind.pl            
touch historicos/h3.log        
chmod a-r historicos/h3.log    
chmod a-xr ../pruebas/pruebano
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y así es como había pensado resolverlo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
chmod 333 "config3";
chmod 111 "mifind.pl";
touch "historicos/h3.log";
chmod 333 "historicos/h3.log";
chmod 444 "../pruebas/pruebano";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Muchas gracias de antemano por la ayuda.

Un saludo.
floen
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-21 05:25 @267

Publicidad

Re: Histórico de comandos y permisos a ficheros

Notapor explorer » 2010-06-21 05:44 @280

Bienvenido a los foros de Perl en Español, floen.

Para el primer problema, sería interesante ver el código, al menos la parte que dice que no eres capaz de leer del STDIN.

Y del segundo problema, solo te faltan indicar los números como lo que quieres que sean: números escritos en base octal. Para ello, te basta con agregar un '0' delante de ellos. Por ejemplo: chmod 0333, "config3"; (y una coma separando los argumentos).

Más información en perldoc -f chmod.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Histórico de comandos y permisos a ficheros

Notapor floen » 2010-06-21 06:25 @309

Muchas gracias por la aclaración del chmod().

El primero, simplemente necesito almacenar en un fichero las órdenes que se le van pasando al script por la terminal para poder realizar así un histórico de órdenes dadas.

El histórico es para poder después mostrarlo, en el cual cada línea se corresponda con una orden con su identificador y si se desea volver a ejecutarla.

Es decir, que si yo le paso por la terminal, por ejemplo:
$perl mifind.pl -w
Me gustaría poder guardar en el fichero una linea así:
1 mifind.pl -w

¡Muchas gracias y un saludo!
floen
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-21 05:25 @267

Re: Histórico de comandos y permisos a ficheros

Notapor floen » 2010-06-21 06:32 @314

También desearía borrar el fichero, y lo hago utilizando la orden unlink().
Primero compruebo si existe, y después lo borra, pero utilizando la ruta, y querría hacerlo utilizando el manejador, ya que no siempre va a ser el mismo fichero el que borre, ¿cómo podría hacer esto?

Así es como me funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if(-e "historicos/historico1.log")
        {
                unlink "historicos/historico1.log";
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero me gustaría hacerlo de una manera parecida a ésta, aunque ésta en concreto no funciona:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(FICH_HIST, "historicos/historico1.log");
@fichero = <FICH_HIST>;
close(FICH_HIST);
       

        if(-e "historicos/historico1.log")
        {
                unlink @fichero;
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Muchas gracias de nuevo!
floen
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-21 05:25 @267

Re: Histórico de comandos y permisos a ficheros

Notapor explorer » 2010-06-21 10:26 @476

floen escribiste:Es decir, que si yo le paso por la terminal, por ejemplo:
$perl mifind.pl -w
Me gustaría poder guardar en el fichero una linea así:
1 mifind.pl -w

¡Muchas gracias y un saludo!

Los argumentos están en @ARGV. Solo tienes que abrir el fichero de destino y guardar allí esa salida.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Histórico de comandos y permisos a ficheros

Notapor explorer » 2010-06-21 10:55 @496

floen escribiste:También desearía borrar el fichero, y lo hago utilizando la orden unlink().
Primero compruebo si existe, y después lo borra, pero utilizando la ruta, y querría hacerlo utilizando el manejador, ya que no siempre va a ser el mismo fichero el que borre, ¿cómo podría hacer esto?

Así es como me funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if(-e "historicos/historico1.log")
        {
                unlink "historicos/historico1.log";
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero me gustaría hacerlo de una manera parecida a ésta, aunque ésta en concreto no funciona:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(FICH_HIST, "historicos/historico1.log");
@fichero = <FICH_HIST>;
close(FICH_HIST);
       

        if(-e "historicos/historico1.log")
        {
                unlink @fichero;
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Muchas gracias de nuevo!
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Histórico de comandos y permisos a ficheros

Notapor explorer » 2010-06-21 10:56 @497

floen escribiste:También desearía borrar el fichero, y lo hago utilizando la orden unlink().
Primero compruebo si existe, y después lo borra, pero utilizando la ruta, y querría hacerlo utilizando el manejador, ya que no siempre va a ser el mismo fichero el que borre, ¿cómo podría hacer esto?

Pues te valdría con usar variables...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$fichero = "historicos/historico1.log";

unlink $fichero;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Histórico de comandos y permisos a ficheros

Notapor floen » 2010-06-24 03:46 @198

Tengo un problema, al meter una orden por la terminal, no me reconoce los dos ultimos argumentos. Yo escribo esto:

$perl mifind.pl -O d3 -name d3bis < 1.txt

y cuando veo qué es lo que tiene guardado @ARGV, solo me muestra:

-O d3 -name d3bis


Supongo que puede ser porque al tener el símbolo < toma el archivo 1.txt como referencia para leer, pero yo necesito que me coja esos dos argumentos escribiéndolos así, ya que debo hacer que ejecuten la orden find desde el programa.
¿Cómo puedo solucionar esto?

¡Gracias y un saludo!
floen
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-21 05:25 @267

Re: Histórico de comandos y permisos a ficheros

Notapor explorer » 2010-06-24 04:57 @248

Mi programa es este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. print scalar(@ARGV), ":[@ARGV]\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Debes indicarle al shell que no tome en cuenta esa redirección:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
~$ perl ./kk.pl -O d3 -name d3bis \< kk.txt
6:[-O d3 -name d3bis < kk.txt]
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

O pasar todos los argumentos como uno solo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl ./kk.pl '-O d3 -name d3bis < kk.txt'
1:[-O d3 -name d3bis < kk.txt]
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra opción sería ver qué fichero está abierto para STDIN (que es lo que hace la redirección), pero... no tengo ni idea de si eso es posible hacerlo desde Perl. Sé que se podría mirar en la lista de ficheros abiertos mediante un comando como lsof, pero me parece un poco rebuscado, además de ser nada portable.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Histórico de comandos y permisos a ficheros

Notapor floen » 2010-06-24 06:11 @299

Me sigo encontrando con el mismo problema, ya que solo puedo modificar lo que es código Perl, no puedo meter otra orden diferente.

He probado con esto:
print scalar(@ARGV), ":[@ARGV]\n";

Y me muestra 4 como escalar, y solo me coge lo que viene antes del <.
floen
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-21 05:25 @267

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado