GNU/Linux - Hilo general

Leos

#2640 Es un directorio con el nombre DIR_BASE en el home del usuario.

He faltado a las clases de scripts por lesión y ahora no se por donde cogerlos :S

2 respuestas
D

#2641 vamos,que hemos de ayudarte a hacer los deberes xD

Bueno, vamos por partes.

Hacer un script no deja de ser otra cosa que ir poniendo comandos o instrucciones que haríamos en la consola, siguiendo un orden.

Yo ya sé como hacer el script, pero no te voy a dar la solución. Otra cosa es ayudarte a que lo saques tú.

Para empezar, lo primero que te piden es crear un directorio de nombre DIR_BASE en la home de un usuario, llamemosle paco:

 /home/paco/DIR_BASE 

Y luego una serie de directorios dentro de DIR_BASE.

Bien, piensa como lo harías con comando en la consola/terminal, y luego los pones en el script, grabas el fichero, le das permisos de ejecución y lo pruebas.
También puedes pegarlo aquí.
Empieza con lo primero que te piden, una vez conseguido, continuas.

Ves pegando aquí el código.

1 respuesta
Leos

#2642 Lo primero que hago es cat /etc/passwd para ver el user de la maquina virtual no?

/home/ausias
Entonces hago mkdir /home/Ausias/DIR_BASE

Esto seria así no?

Pretendo aprender no que me lo hagáis por eso preguntaba algún consejo o ayudita, que si me lo hacéis en el examen no sabre hacerlo xD

1 respuesta
D

#2643 Para saber le usuario hay varias formas. Una de ellas es mirando el fichero /etc/passwd. Ahí, ademas te da mas información como la home del usuario.

Otra forma es con las variables de entorno. Si el usuario que va a ejecutar el script, es el usuario en el cual, tienes que crear el directorio en su home,puedes usar las variables de entorno:

 env | grep HOME

revisa que la home del usuario ausias sea /home/ausias. Y recuerda que en Linux, ausia, no es lo mismo que Ausias, o que AuSiAS. diferencia las mayus de las minus.

1 respuesta
Leos

#2644 Comprobado es

/home/ausias

todo en miniscula.
Ahora para crear los demas directorios sería

mkdir /home/ausias/DIR_BASE/DIR1

correcto?
Y volver a hacerlo dos veces más para el DIR2 y el DIR3.

1 respuesta
D

#2645 prueba y nos dices :)

1 respuesta
Leos

#2646 Vale ya he creado los tres directorios dentro de DIR_BASE y lo he comprobado.

Ahora dentro de cada DIR hago:

touch nom.txt

para crear el fichero, ahora mi duda es: para que salga el nombre de usuario sería poner

touch nom.txt > $USER
1 respuesta
D

#2647 el comando touch lo único que hace es crear un fichero con el nombre que le indicas, pero si lo abres está vacío.

El simbolo > redirige la salida de un comando, a un fichero.

$USER no es un fichero, es una variable. Por lo tanto, ¿tiene sentido el ultimo comando que has puesto?

1 respuesta
Leos

#2648 No tiene sentido xD Se que el touch crea un fichero en blanco y se que en el terminal con nano puedo rellenarlo, pero no se como hacer que te diga el USER sin ser cutre y ponerlo yo a mano.

1 respuesta
D

#2649 prueba el comando, whoami y me dices que te devuelve

1 respuesta
Leos

#2650 Me devuelve el user. Mi problema ahora es que en el terminal crear el archivo nombre.txt y que contenga el user no se como ponerlo.

He probado modificando con nano el archivo e intentando introducir el comando whoami pero no lo he logrado.

2 respuestas
Zetkin

#2651 Supongo que:

whoami > nom.txt

Con el ">" le dices que lo que salga del whoami lo guarde en el .txt

1 respuesta
D

#2651

Ahí entra el símbolo >. Te envía la salida de un comando, a un fichero.

Si ponemos:

whoami > nom.txt

En lugar de mostarte el usuario por pantalla, te lo guardará en el fichero nom.txt

1 respuesta
Leos

#2653 #2652 Si ahora lo había conseguido pero de manera diferente

 $USER > nom.txt

así me ha funcionado, estaría bien?

El archivo de la maquina es lo mismo pero con hostname no?

1 respuesta
D

#2654 en tu caso, utilizas la variable de entorno $USER, que guarda el nombre del usuario, en este caso, ausias.
Claro que sirve :) En Linux hay varias formas o soluciones para hacer las cosas.

Si, con hostname es similar

1 respuesta
Leos

#2655 Ahora el que me da problemas es el resumen.txt, que me guarde el nombre del usuario y de la maquina es lo mismo, pero que me guarde la fecha actual seria

FECHA=`date +%C-%B-%A`

después poner

$FECHA > resumen.txt

?

1 respuesta
D

#2656 pruebalo y lo verás xD Pero si te fijas bien, solo pasarás en resumen.txt, el valor de la variable FECHA

1 respuesta
Leos

#2657 Vale, he puesto

echo "`date +%C-%B-%A`" > resum.txt

y me la ha guardado bien :D

Me falta saber el numero de ficheros que tiene el usuario en todo el sistema que eso si que no tengo ni una noción de como hacerlo. Y saber el numero de ficheros que tiene el usuario en todo el sistema y que tengan permiso para todos.

1 respuesta
D

#2658 en resum.txt no ha de guardar, el usuario, el hostname y la fecha? diria que tal como lo pones te guarda solo la fecha :P

1 respuesta
Leos

#2659 Si si me he colado xD para que me los guarde todos sería algo como

"$USER $HOST/hostname `date +%C-%B-%A`"

pero solo me guarda el user y la fecha :S

1 respuesta
D

#2660 busca las diferencias entre '>' y '>>' ;)

1 respuesta
Leos

#2661 Si pones > añades cosas al archivo, si vuelves a poner > se borra lo que tenias para ponerlo.

Si pones > y después >> añade las cosas sin borrar lo anterior no?

Ahora lo he hecho por separado, pero el $HOST me lo deja en blanco y el "hostname" >> resum.txt me pone hostname.

Pero si uso el comando hostname solo si que me devuelve el nombre de la maquina.

1 respuesta
Deoxys

#2641

cd ~/
mkdir DIR_BASE
cd DIR_BASE
mkdir DIR1
whoami > DIR1/nombre.txt
mkdir DIR2
hostname>DIR2/maquina.txt
mkdir DIR3
cd DIR3
whoami > resumen.txt
hostname >> resumen.txt
date >> resumen.txt
find / -type -f -print | wc -l >> resumen.txt
chmod -r / 777
find / -type -f -print | wc -l >> resumen.txt
1 respuesta
D

#2662 Con > , si en elarchivo a dodne rediriges la salida del comando, hay contenido, lo machaca con lo que le pasas tu. Con >>, lo que hace es agregarlo debajo, hace un "append".

si con elcomando hostname te funciona, usa el comando hostname, o la variable de entorno $HOSTNAME

#2663 la gracia es que lo saque por si solo el chaval. No darle la respuesta.

2 respuestas
Deoxys

#2664 Lee anda, que es una coña.

2 respuestas
D

#2665 vale, ya lo veo. Menudos huevos poner todo a 777 xD

Leos

#2664 Ahora si :D Con $HOSTNAME me lo coge, lo que no entiendo es porque con hostname >> resum.txt no me lo cogia :S

#2665 el chmod no sería u+x? xD

1 respuesta
D

#2667 con chmod se puede hacer como tu dices, o directamente con el valor númerico:

r = 4
w = 2
x = 1

rwx = 7

1 1 respuesta
Leos

#2668 Vale y para la última parte, sería usando find pero no se como hacer para que me busque todos los ficheros del usuario y menos aún los permisos.

1 respuesta
sPNkKkKkKkKk

#2669 Con el comando find y el argumento -perm y el argumento -user
find / -type f -user ausias -perm 0775

1 respuesta