El material, cuya traducción publicamos hoy, está destinado a quienes quieran dominar la línea de comandos de Linux. La capacidad de utilizar esta herramienta de forma eficaz puede ahorrar mucho tiempo. En particular, aquí hablaremos sobre el shell Bash y 21 comandos útiles. También hablaremos sobre cómo usar indicadores de comando y alias de Bash para acelerar la escritura de instrucciones largas.
→
Condiciones
A medida que aprenda a trabajar con la línea de comandos de Linux, encontrará muchos conceptos que le resultarán útiles para navegar. Algunos de ellos, como "Linux" y "Unix", o "shell" y "terminal", a veces se confunden. Hablemos de estos y otros términos importantes.
Ahora que hemos cubierto los términos importantes, quiero señalar que aquí usaré los términos "Bash", "shell" y "línea de comando" indistintamente, así como los términos "directorio" y "carpeta".
Estándar stdin
), salida estándar (salida estándar, stdout
) y salida de error estándar (error estándar, stderr
).
Si en los comandos de ejemplo que se darán a continuación, encontrará algo como my_whatever
- Esto significa que este fragmento necesita ser reemplazado por algo tuyo. Por ejemplo, el nombre de un archivo.
Ahora bien, antes de continuar con el análisis de los comandos a los que está dedicado este material, echemos un vistazo a su lista y a sus breves descripciones.
21 comandos bash
▍Obtener información
man
: muestra la guía del usuario (ayuda) para el comando.pwd
: muestra información sobre el directorio de trabajo.ls
: muestra el contenido de un directorio.ps
: Le permite ver información sobre los procesos en ejecución.
▍Manipulación del sistema de archivos
cd
: cambiar el directorio de trabajo.touch
: crear un archivo.mkdir
: crea un directorio.cp
: Copia un archivo.mv
: mueve o elimina un archivo.ln
: crear un enlace.
▍Redirección de E/S y canalizaciones
<
: redirigirstdin
.>
: redirigirstdout
.|
: canaliza la salida de un comando a la entrada de otro comando.
▍Leer archivos
head
: lee el comienzo del archivo.tail
: leer el final del archivo.cat
: Lee un archivo e imprime su contenido en la pantalla, o concatena archivos.
▍Eliminar archivos, detener procesos
rm
: Eliminar un archivo.kill
: detener el proceso.
▍Buscar
grep
: buscar información.ag
: comando avanzado para buscar.
▍Archivar
tar
: crear archivos y trabajar con ellos.
Hablemos de estos comandos con más detalle.
Detalles del equipo
Para empezar, analicemos los comandos cuyos resultados se emiten en el formulario. stdout
. Normalmente estos resultados aparecen en una ventana de terminal.
▍Obtener información
man command_name
: muestra la guía de comandos, es decir, información de ayuda.
pwd
: muestra la ruta al directorio de trabajo actual. Mientras trabaja con la línea de comando, el usuario a menudo necesita saber exactamente en qué parte del sistema se encuentra.
ls
: muestra el contenido de un directorio. Este comando también se utiliza con bastante frecuencia.
ls -a
: mostrar archivos ocultos. bandera aplicada aquí -a
команды ls
. El uso de banderas ayuda a personalizar el comportamiento de los comandos.
ls -l
: muestra información detallada sobre los archivos.
Tenga en cuenta que las banderas se pueden combinar. Por ejemplo, así: ls -al
.
ps
: Ver procesos en ejecución.
ps -e
: muestra información sobre todos los procesos en ejecución, no solo los asociados con el shell del usuario actual. Este comando se utiliza a menudo de esta forma.
▍Manipulación del sistema de archivos
cd my_directory
: cambiar el directorio de trabajo a my_directory
. Para subir un nivel en el árbol de directorios, utilice my_directory
camino relativo ../
.
comando de disco compacto
touch my_file
: creación de archivos my_file
por el camino indicado.
mkdir my_directory
: crear una carpeta my_directory
por el camino indicado.
mv my_file target_directory
: mover archivo my_file
a la carpeta target_directory
. Al especificar el directorio de destino, debe utilizar la ruta absoluta (y no una construcción como ../
).
El equipo mv
También se puede utilizar para cambiar el nombre de archivos o carpetas. Por ejemplo, podría verse así:
mv my_old_file_name.jpg my_new_file_name.jpg
: crear una copia de un archivo
cp my_source_file target_directorymy_source_file
y ponerlo en una carpeta target_directory
.
ln -s my_source_file my_target_file
: crear un enlace simbólico my_target_file
por archivo my_source_file
. Si cambia el enlace, el archivo original también cambiará.
Si el archivo my_source_file
será eliminado, entonces my_target_file
permanecerá. Bandera -s
команды ln
le permite crear enlaces para directorios.
Ahora hablemos de la redirección de E/S y de las canalizaciones.
▍Redirección de E/S y canalizaciones
my_command < my_file
: reemplaza el descriptor de archivo de entrada estándar (stdin
) por archivo my_file
. Esto puede resultar útil si el comando está esperando alguna entrada del teclado y estos datos ya están guardados en un archivo.
my_command > my_file
: redirige los resultados del comando, es decir, lo que normalmente entraría stdout
y salida a la pantalla, a un archivo my_file
. Si el archivo my_file
no existe, se crea. Si el archivo existe, se sobrescribe.
Por ejemplo, después de ejecutar el comando ls > my_folder_contents.txt
Se creará un archivo de texto que contiene una lista de lo que hay en el directorio de trabajo actual.
Si en lugar del símbolo >
utilizar la construcción >>
, entonces, siempre que exista el archivo al que se redirige la salida del comando, este archivo no se sobrescribirá. Los datos se agregarán al final de este archivo.
Ahora echemos un vistazo al procesamiento de canalización de datos.
La salida de un comando se introduce en la entrada de otro comando. Es como conectar un tubo con otro.
first_command | second_command
: símbolo del transportador, |
, se utiliza para enviar la salida de un comando a otro comando. A qué envía el comando en el lado izquierdo de la estructura descrita stdout
, Caer en stdin
comando a la derecha del símbolo de la tubería.
En Linux, los datos se pueden canalizar utilizando prácticamente cualquier comando bien formado. Se suele decir que todo en Linux es un pipeline.
Puede encadenar varios comandos utilizando el símbolo de canalización. Se parece a esto:
first_command | second_command | third_command
Una canalización de varios comandos se puede comparar con una canalización
Tenga en cuenta que cuando el comando a la izquierda del símbolo |
, genera algo a stdout
, lo que ella produce está inmediatamente disponible como stdin
segundo equipo. Es decir, resulta que, utilizando la canalización, estamos ante la ejecución paralela de comandos. A veces esto puede conducir a resultados inesperados. Los detalles sobre esto se pueden leer.
Ahora hablemos de leer datos de archivos y mostrarlos en la pantalla.
▍Leer archivos
head my_file
: lee líneas desde el principio de un archivo y las imprime en la pantalla. Puede leer no sólo el contenido de los archivos, sino también lo que generan los comandos en stdin
usando este comando como parte de la canalización.
tail my_file
: lee líneas desde el final del archivo. Este comando también se puede utilizar en una canalización.
La cabeza (cabeza) está al frente y la cola (cola) está detrás
Si está trabajando con datos usando la biblioteca pandas, entonces los comandos head
и tail
debería resultarle familiar. Si este no es el caso, eche un vistazo a la figura anterior y los recordará fácilmente.
Considere otras formas de leer archivos, hablemos del comando cat
.
Equipo cat
imprime el contenido de un archivo en la pantalla o concatena varios archivos. Depende de cuántos archivos se pasen a este comando cuando se llame.
comando gato
cat my_one_file.txt
: cuando se pasa un solo archivo a este comando, lo envía a stdout
.
Si le proporciona dos archivos o más, se comporta de manera diferente.
cat my_file1.txt my_file2.txt
: habiendo recibido varios archivos como entrada, este comando concatena sus contenidos y muestra lo que sucedió en stdout
.
Si el resultado de la concatenación de archivos necesita guardarse como un archivo nuevo, puede utilizar el operador >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Ahora hablemos de cómo eliminar archivos y detener procesos.
▍Eliminar archivos, detener procesos
rm my_file
: borrar archivo my_file
.
rm -r my_folder
: elimina una carpeta my_folder
y todos los archivos y carpetas que contiene. Bandera -r
indica que el comando se ejecutará en modo recursivo.
Para evitar que el sistema solicite confirmación cada vez que se elimina un archivo o carpeta, use la bandera -f
.
kill 012345
: detiene el proceso en ejecución especificado, dándole tiempo para cerrarse correctamente.
kill -9 012345
: finaliza por la fuerza el proceso en ejecución especificado. Ver bandera -s SIGKILL
significa lo mismo que la bandera -9
.
▍Buscar
Puede utilizar diferentes comandos para buscar datos. En particular - grep
, ag
и ack
. Comencemos a familiarizarnos con estos comandos con grep
. Este es un comando confiable y probado en el tiempo, que, sin embargo, es más lento que otros y no es tan conveniente de usar como ellos.
comando grep
grep my_regex my_file
: búsquedas my_regex
в my_file
. Si se encuentra una coincidencia, se devuelve la cadena completa para cada coincidencia. Por defecto my_regex
tratada como una expresión regular.
grep -i my_regex my_file
: La búsqueda se realiza sin distinguir entre mayúsculas y minúsculas.
grep -v my_regex my_file
: devuelve todas las filas que no contienen my_regex
. Bandera -v
significa inversión, se parece al operador NOT
, que se encuentra en muchos lenguajes de programación.
grep -c my_regex my_file
: Devuelve información sobre el número de coincidencias para el patrón buscado que se encuentra en el archivo.
grep -R my_regex my_folder
: realiza una búsqueda recursiva en todos los archivos ubicados en la carpeta especificada y en las carpetas anidadas en ella.
Ahora hablemos del equipo. ag
. ella vino mas tarde grep
, es más rápido, es más conveniente trabajar con él.
comando agrícola
ag my_regex my_file
: devuelve información sobre los números de línea y las líneas mismas en las que se encontraron coincidencias con my_regex
.
ag -i my_regex my_file
: La búsqueda se realiza sin distinguir entre mayúsculas y minúsculas.
Equipo ag
procesar automáticamente el archivo .gitignore
y excluye de la salida lo que se encuentra en las carpetas o archivos enumerados en ese archivo. Es muy cómodo.
ag my_regex my_file -- skip-vcs-ignores
: contenido de archivos de control automático de versiones (como .gitignore
) no se tiene en cuenta en la búsqueda.
Además, para decirle al equipo ag
en qué rutas de archivos desea excluir de la búsqueda, puede crear un archivo .agignore
.
Al comienzo de esta sección, mencionamos el comando ack
. equipos ack
и ag
muy similares, podemos decir que son 99% intercambiables. Sin embargo, el equipo ag
Funciona más rápido, por eso lo describí.
Ahora hablemos de trabajar con archivos.
▍Archivar
tar my_source_directory
: concatena archivos de una carpeta my_source_directory
en un único archivo tarball. Estos archivos son útiles para transferir grandes conjuntos de archivos a alguien.
comando alquitrán
Los archivos tarball generados por este comando son archivos con la extensión .tar
(Archivo de cintas). El hecho de que la palabra "tape" (cinta) esté oculta en el nombre del comando y en la extensión de los nombres de los archivos que crea indica cuánto tiempo existe este comando.
tar -cf my_file.tar my_source_directory
: crea un archivo tarball llamado my_file.tar
con el contenido de la carpeta my_source_directory
. Bandera -c
significa "crear" (creación), y la bandera -f
como "archivo" (archivo).
Para extraer archivos de .tar
-archivo, usa el comando tar
con banderas -x
("extracto", extracción) y -f
("archivo", archivo).
tar -xf my_file.tar
: extrae archivos de my_file.tar
al directorio de trabajo actual.
Ahora hablemos de cómo comprimir y descomprimir. .tar
-archivos.
tar -cfz my_file.tar.gz my_source_directory
: aquí usando la bandera -z
("zip", algoritmo de compresión) indica que el algoritmo debe usarse para comprimir archivos gzip
(GNUzip). La compresión de archivos ahorra espacio en disco al almacenar dichos archivos. Si, por ejemplo, se planea transferir los archivos a otros usuarios, esto contribuye a una descarga más rápida de dichos archivos.
Descomprimir archivo .tar.gz
puedes agregar una bandera -z
al comando extraer contenido .tar
-files, que discutimos anteriormente. Se parece a esto:
tar -xfz my_file.tar.gz
Cabe señalar que el equipo tar
Hay muchas más banderas útiles.
Alias de bash
Los alias de Bash (también llamados alias o abreviaturas) están diseñados para crear nombres abreviados de comandos o sus secuencias, cuyo uso en lugar de comandos normales acelera el trabajo. Si tienes un alias bu
, que oculta el comando python setup.py sdist bdist_wheel
, entonces para llamar a este comando, basta con usar este alias.
Para crear dicho alias, simplemente agregue el siguiente comando al archivo ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Si su sistema no tiene el archivo ~/.bash_profile
, luego puedes crearlo tú mismo usando el comando touch
. Después de crear el alias, reinicie el terminal, después de lo cual podrá usar este alias. En este caso, la entrada de dos caracteres reemplaza la entrada de más de tres docenas de caracteres del comando, que está destinado a
В ~/.bash_profile
puede agregar alias para cualquier comando utilizado con frecuencia.
▍Resultados
En esta publicación, cubrimos 21 comandos Bash populares y hablamos sobre la creación de alias de comandos. Si está interesado en este tema -
Estimados lectores! ¿Qué comandos útiles para principiantes agregaría a los discutidos en este artículo?
→
Fuente: habr.com