
I Vea cuántos administradores calificados y scripts de envoltura de proveedores de nube están usando el comando de cliente ssh en el shell de esta manera:
ssh [email protected] -
¿Qué dos veces?-“(Doble barra) ¿está haciendo esto aquí? Por qué se usa en este comando de shell y por qué no solo eso ssh [email protected] ¿Sintaxis? Cuál es el significado de - ¿ahí?
Este breve tutorial explica cómo usar la barra doble en los comandos shell y ssh. Pero primero veamos qué hace y cuándo es posible que lo necesite.
Detalles de las instrucciones | |
---|---|
Nivel de dificultad | Sencillo |
Derechos de root | No |
requisitos | Shell de Linux / Unix / macOS |
Horario de verano europeo. Tiempo de leer | 4 minutos |
Que hace «-“¿(Doble barra) significa?
La doble línea «-«Significa» banderas de fin de línea de comando «. Le dice a ssh o cualquier otro comando de shell válido que no intente analizar lo que viene después de las opciones de la línea de comandos. Esto es lo que verá usando el contenedor de python gcutil ssh vmNameHere. Se mostrará y ejecutará ssh así:ssh -o UserKnownHostsFile=/dev/null
-o CheckHostIP=no
-o StrictHostKeyChecking=no
-i /Users/vivek/.ssh/google_compute_engine -A -p 22
[email protected] --
Esta sintaxis garantiza que pueda ejecutar comandos en el servidor remoto sin analizarlos a través de SSH:ssh [email protected] -- command1 --arg1 --arg2
La sintaxis anterior le dice a ssh que no analice --arg1 y --arg2 para - Opciones de la línea de comandos. Esto asegura que command1 aceptará --arg1 y --arg2 (o -opt1) como argumentos de la línea de comandos.
¿Qué significa un guión doble en los comandos de shell?
En otras palabras, un - (Doble barra) en un comando de shell indica el final de las opciones y dificulta el procesamiento posterior de opciones para el comando Unix o Linux.
## safe examples ## ssh nixcraft@server1.cyberciti.biz -- --commandName --arg1 --arg2
Este tipo de comportamiento es principalmente definido y manejado por el comando ssh y no por su bash / ksh / csh / sh / fish o cualquier otro shell de Unix. Esto también se aplica a muchos otros comandos de Linux y macOS.
¿Cuándo es necesario?
Así que ahora sabe más sobre las barras dobles y ciertos comandos de Unix solo lo admiten. Desafortunadamente, no todos los comandos de Linux admiten la sintaxis y la funcionalidad de doble barra. Entonces, ¿cuándo se necesita? Por ejemplo, no puede crear ni ver un archivo con el nombre --Archivo o -F Con el comando cat, haga lo siguiente:
## This should fail ## cat --file cat -f
En su lugar, intente pasar la barra doble.-”Para decirle al comando cat que no intente analizar lo que viene después de las opciones de la línea de comando:
## This should work ## cat -- --file cat -- -f
Probemos con un archivo llamado ‘--Archivo‘:
rm --file # fail # rm -- '--file' # works
Puede pasar opciones al comando rm de la siguiente manera:
rm -v -i -- '--file' rm -f -v -i -- '--f'
Que hace «-“¿(Doble barra) significa bajo Linux, macOS o un sistema operativo similar a Unix?
Ejemplo de secuencia de comandos de shell
Podemos usar el comando de comando lxc de la siguiente manera para actualizar el contenedor de Linux proporcionado por LXD de la siguiente manera:
lxc exec bash-wiki -- apt update lxc exec bash-wiki -- apt -y upgrade lxc exec nginx-proxy --env DEBIAN_FRONTEND=noninteractive -- sh -c "/usr/bin/apt-get update && /usr/bin/apt-get -y upgrade"
No todos los comandos son compatibles - sintaxis
Una advertencia, no todos los comandos lo admiten - Sintaxis y no funciona con todos los comandos de Unix o Linux. Por ejemplo:
/usr/bin/echo -- -n echo -- --test
De la documentación de bash:
A menos que se indique lo contrario, cada comando integrado documentado en esta sección acepta opciones precedidas por - aceptado - para indicar el final de las opciones. Ese :, Es correcto, incorrecto, y Prueba/[[[[ Los incorporados no aceptan opciones y no manejan - especial. Los comandos integrados exit, logout, return, break command, continue, let command y shift command aceptan y procesan argumentos que comienzan con - sin requerir -. Otras incorporaciones que aceptan argumentos pero no se especifican como opciones de aceptación interpretan argumentos que comienzan con - como opciones inválidas y requieren - para evitar esta interpretación.
graduación
Hemos explicado qué es la doble barra (-) hacer en comandos de shell o ejecutar comandos con ssh. El primero - Un argumento de línea de comando que no sea un argumento de opción debe aceptarse como un separador que indica el final de las opciones. Todos los siguientes argumentos deben tratarse como operandos, incluso si comienzan con ‘-‘ o ‘-‘Personaje. Es una función de seguridad, pero también sabemos que no todos los comandos de Linux / Unix admiten este tipo de opciones. Es posible que también desee consultar el siguiente tutorial que será útil:
Asegúrese de leer la página del manual de bash utilizando el siguiente comando man o el comando help para los comandos internos:man bash
man ssh
man rm
help :
help echo
help printf
help let
help exit
help logout