To bit or not to bit, ingeniera en desarrollo de software, criadora de mantis, mujer transgénera
Ingeniería de software

Comandos básicos para ver y modificar ficheros y directorios en Linux

Normalmente cuando administramos un servidor Linux usamos SSH y una terminal para administrarlo, aquí quiero enlistar un par de comandos básicos para ver y modificar ficheros y directorios en Linux.

Comandos

Comando touch

Con este comando creamos un archivo vacío con el nombre indicado.

[root@localhost ~]# touch archivo.txt
[root@localhost:~]# ls -lh
total 32
drwx------ 2 root root 4.0K Sep 20  2021 Desktop
drwx------ 4 root root 4.0K Sep 20  2021 Documents
drwx------ 2 root root 4.0K Sep 20  2021 Downloads
drwx------ 2 root root 4.0K Sep 20  2021 Music
drwx------ 2 root root 4.0K Sep 20  2021 Pictures
drwx------ 2 root root 4.0K Sep 20  2021 Public
drwx------ 2 root root 4.0K Sep 20  2021 Templates
drwx------ 2 root root 4.0K Sep 20  2021 Videos
drwx------ 2 root root 4.0K Sep 20  2021 Videos
-rw-rw-r-- 1 root root    0 Sep 20 02:10 archivo.txt

Comando mkdir

Con este comando creamos una nueva carpeta.

[root@localhost ~]# mkdir Directorio
[root@localhost:~]# ls -lh
total 32
drwx------ 2 root root 4.0K Sep 20  2021 Desktop
drwxr-xr-x 2 root root    6 sep 20 21:54 Directorio
drwx------ 4 root root 4.0K Sep 20  2021 Documents
drwx------ 2 root root 4.0K Sep 20  2021 Downloads
drwx------ 2 root root 4.0K Sep 20  2021 Music
drwx------ 2 root root 4.0K Sep 20  2021 Pictures
drwx------ 2 root root 4.0K Sep 20  2021 Public
drwx------ 2 root root 4.0K Sep 20  2021 Templates
drwx------ 2 root root 4.0K Sep 20  2021 Videos
drwx------ 2 root root 4.0K Sep 20  2021 Videos
-rw-rw-r-- 1 root root    0 Sep 20 02:10 archivo.txt

Comando cp

Con este comando podemos copiar un archivo de un origen a un destino.

[root@localhost ~]# cp archivo.txt archivo2.txt
[root@localhost:~]# ls -lh
total 32
drwx------ 2 root root 4.0K Sep 20  2021 Desktop
drwxr-xr-x 2 root root    6 sep 20 21:54 Directorio
drwx------ 4 root root 4.0K Sep 20  2021 Documents
drwx------ 2 root root 4.0K Sep 20  2021 Downloads
drwx------ 2 root root 4.0K Sep 20  2021 Music
drwx------ 2 root root 4.0K Sep 20  2021 Pictures
drwx------ 2 root root 4.0K Sep 20  2021 Public
drwx------ 2 root root 4.0K Sep 20  2021 Templates
drwx------ 2 root root 4.0K Sep 20  2021 Videos
drwx------ 2 root root 4.0K Sep 20  2021 Videos
-rw-rw-r-- 1 root root    0 Sep 20 02:10 archivo.txt
-rw-rw-r-- 1 root root    0 Sep 20 02:30 archivo2.txt

Comando mv

Con este comando podemos mover un archivo de un origen a un destino, muy similar a cortar y pegar un archivo de Windows.

[root@localhost ~]# mv archivo2.txt archivo3.txt
[root@localhost:~]# ls -lh
total 32
drwx------ 2 root root 4.0K Sep 20  2021 Desktop
drwxr-xr-x 2 root root    6 sep 20 21:54 Directorio
drwx------ 4 root root 4.0K Sep 20  2021 Documents
drwx------ 2 root root 4.0K Sep 20  2021 Downloads
drwx------ 2 root root 4.0K Sep 20  2021 Music
drwx------ 2 root root 4.0K Sep 20  2021 Pictures
drwx------ 2 root root 4.0K Sep 20  2021 Public
drwx------ 2 root root 4.0K Sep 20  2021 Templates
drwx------ 2 root root 4.0K Sep 20  2021 Videos
drwx------ 2 root root 4.0K Sep 20  2021 Videos
-rw-rw-r-- 1 root root    0 Sep 20 02:10 archivo.txt
-rw-rw-r-- 1 root root    0 Sep 20 02:30 archivo3.txt

Comando rm

Con este comando eliminamos un archivo y si le incluimos la opción -R podemos borrar directorios recursivamente con los archivos y directorios dentro de él.

[root@iperf ~]# rm archivo.txt
rm: ¿borrar el fichero regular 'archivo.txt'? (s/n) s
[root@iperf ~]# rm -R Directorio/
rm: ¿borrar el directorio 'Directorio/'? (s/n) s
[root@localhost:~]# ls -lh
total 32
drwx------ 2 root root 4.0K Sep 20  2021 Desktop
drwx------ 4 root root 4.0K Sep 20  2021 Documents
drwx------ 2 root root 4.0K Sep 20  2021 Downloads
drwx------ 2 root root 4.0K Sep 20  2021 Music
drwx------ 2 root root 4.0K Sep 20  2021 Pictures
drwx------ 2 root root 4.0K Sep 20  2021 Public
drwx------ 2 root root 4.0K Sep 20  2021 Templates
drwx------ 2 root root 4.0K Sep 20  2021 Videos
drwx------ 2 root root 4.0K Sep 20  2021 Videos

Si no queremos que nos pregunte cada vez que va a borrar un archivo o directorio escribimos “sudo” antes del comando.

También podemos borrar un directorio con el comando “rmdir“.

Comando cat

Con este comando podemos ver los contenidos de un archivo. Suponiendo que los contenidos de nuestro archivo.txt son 15 líneas con los números del 1 al 15 en cada línea podemos ver el comando cat en acción:

[root@localhost ~]# cat archivo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]#

Comando head

El comando head te muestra las primeras 10 líneas de un archivo, si al comando le pasamos la opción -n seguido de un número x nos muestra las primeras x líneas del archivo. Suponiendo el caso anterior del archivo.txt con números del 1 al 15 nuestro comando se vería así:

[root@localhost ~]# head archivo.txt
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# head -n 6 archivo.txt
1
2
3
4
5
6

Comando tail

El comando tail te muestra las últimas 10 líneas de un archivo, si al comando le pasamos la opción -n seguido de un número x nos muestra las ultimas x líneas del archivo. Suponiendo el caso anterior del archivo.txt con números del 1 al 15 nuestro comando se vería así:

[root@localhost ~]# tail archivo.txt
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# tail -n 4 archivo.txt
12
13
14
15

Comando more

Hay veces que no podemos ver el output de un directorio por completo por que la terminal nos muestra un número limitado de líneas y necesitamos navegar en la salida para ver el contenido, podemos hacer esto haciendo un pipe al comando con more.

More nos muestra un output en el que podemos interactuar de varias maneras, las tres mas usadas son:

  • Usando la tecla de “barra espaciadora” para movernos una página adelante.
  • Usando la tecla “enter” para movernos una fila adelante.
  • Usar la tecla de la letra “q” para salirnos del comando more.

Cuando terminamos de ver el output finaliza el comando.

[root@localhost log]# ls -lh | more
total 10M
-rw-r--r-- 1 apache apache 10K jul  1 04:32 log20210601.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210602.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210603.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210604.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210605.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210606.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210607.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210608.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210609.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210610.log
--Más--

Comando less

Así como existe el comando more para buscar navegar en un output, también podemos usar el comando less, otro paginador.

Less nos muestra el output en le que podemos interactuar, parecido a more pero usando un tipo de ambiente parecido a vi , en este podemos interactuar de esta forma:

  • Usando la tecla de “barra espaciadora” para movernos una página adelante.
  • Usando la tecla “f” para movernos una página adelante.
  • Usando la tecla “b” para movernos una página atras.
  • Usando la tecla “flecha arriba” para movernos una línea atrás.
  • Usando la tecla “flecha abajo” para movernos una línea adelante.
  • Usando la tecla “enter” para movernos una fila adelante.
  • Usar la tecla de la letra “q” para salirnos del comando.
  • Usar en modo de comando la búsqueda tipo vi escribiendo “/texto” donde texto es el texto a buscar.

A diferencia del comando more con less tenemos que salirnos activamente con la tecla “q”.

[root@localhost log]# ls -lh | more
-rw-r--r-- 1 apache apache 10K jul  1 04:32 log20210705.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210706.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210707.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210708.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210709.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210710.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210711.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210712.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210713.log
-rw-r--r-- 1 apache apache 10K jul  1 04:31 log20210714.log
/0705

Comando dd

El comando dd es un comando para copiar archivos o particiones a nivel de bits.

  • Puede ser usado para clonar o eliminar discos o particiones.
  • Puede ser usado para copiar datos raw de algún disco montable.
  • Puede respaldar y restaurar el Master Boot Record.
  • Puede ser usado para crear archivos prellenados con caracteres default en memoria virtual.

Consideremos el siguiente archivo.txt

[root@localhost ~]# cat archivo.txt
123
1234
12345
123456
1234567
123456789

[root@localhost ~]#

Si ejecutamos el comando dd de la siguiente forma tendríamos la siguiente salida.

[root@localhost ~]# dd if=/root/archivo.txt of=/root/archivo2.txt bs=4 count=1
1+0 registros leídos
1+0 registros escritos
4 bytes copied, 0.0002448 s, 16.3 kB/s
[root@localhost ~]# cat archivo2.txt
123
[root@localhost ~]#

Donde if es el archivo de entrada, of el archivo de salida, bs el tamaño del buffer y count las veces que va a copiar bs blockes, los bloques o tamaño de buffer puede ser señalado con M, K o G para megabytes, kilobytes o gigabytes respectivamente.

En el comando mostrado copió los números 1, 2, 3 y el salto de línea lo que fueron 4 bytes y los copió hasta una vez, pero en el siguiente comando ponemos en vez de count 1, count 3.

[root@iperf ~]# dd if=/root/archivo.txt of=/root/archivo2.txt bs=4 count=3
3+0 registros leídos
3+0 registros escritos
12 bytes copied, 0.0003559 s, 33.7 kB/s
[root@iperf ~]# cat archivo2.txt
123
1234
123[root@iperf ~]#

Lo que nos copia 12 bytes, 3 veces 4 bytes, o lo que es lo mismo 10 caracteres de dígitos y 2 saltos de línea. También para copiar todo podemos no indicar “bs” ni “count” o un “bs” superior y “count” superior de bytes en nuestro archivo.

[root@localhost ~]# dd if=/root/archivo.txt of=/root/archivo2.txt bs=50M count=3
0+1 registros leídos
0+1 registros escritos
41 bytes copied, 0.0003355 s, 122 kB/s
[root@iperf ~]# cat archivo2.txt
123
1234
12345
123456
1234567
123456789

[root@localhost ~]# dd if=/root/archivo.txt of=/root/archivo2.txt
0+1 registros leídos
0+1 registros escritos
41 bytes copied, 0.0003723 s, 110 kB/s
[root@iperf ~]# cat archivo2.txt
123
1234
12345
123456
1234567
123456789

[root@localhost ~]#

Conclusiones

Espero haber abarcado los comandos más comunes y básicos para el manejo de archivos y directorios.

Como siempre si les gusta compartan y si no también.