combinando comandos en el terminal en Mac OS X

18

Me gustaría escribir lo siguiente en una línea en la terminal o si hay una forma más corta de crear un archivo y establecer los permisos, por favor haga un comentario.

sudo touch .htaccess
sudo chmod 766 .htaccess

Muy apreciado

Derren
fuente

Respuestas:

31

Use '&&' para ejecutar condicionalmente el segundo comando si el primero es exitoso.

sudo touch .htaccess && sudo chmod 766 .htaccess

escoba
fuente
2
Prefiero esta solución por dos razones: 1. &&generalmente es mejor que ;para que se detenga si falla el primer comando, 2. generalmente es mejor ejecutar solo el programa específico necesario sudo, en lugar de intentar combinarlos en una sola sudoinvocación y ejecución más código con privilegios elevados de lo necesario.
Chris Page
¿Qué pasa si quiero hacer scp [email protected]:file1 && scp [email protected]:file2 && scp [email protected]:file3y he establecido una contraseña en mi clave SSH, me está pidiendo una contraseña todo el tiempo, ¿hay alguna manera de combinarla?
Akshay Khale
2

No, no es.

Lo único que puede hacer es combinar estos dos comandos en uno sudo:

sudo sh -c 'touch .htaccess && chmod 766 .htaccess'

Otra solución (con una sola llamada externa, pero también con dos comandos):

sudo sh -c 'umask 011 && touch .htaccess'
Igor Chubin
fuente
1
Buenas sugerencias, pero las revisaría para usarlas en &&lugar de eso ;. Además, en general, solo usaría dos sudocomandos, porque es excesivo y arriesgado ejecutar un shell completo con privilegios elevados, en lugar de solo los programas exactos que deben ejecutarse con ellos (en este caso, touch y chmod).
Chris Page
Sí, tienes razón, sería mejor
Igor Chubin
1

Los punto y coma le permitirán ajustar múltiples comandos en una sola línea como esta:

sudo touch .htaccess; sudo chmod 766 .htaccess

Vickash
fuente
1
Esa es una buena sugerencia, aunque es una buena idea acostumbrarse a usar en &&lugar de ;ejecutar comandos interdependientes para que se detenga si un comando falla.
Chris Page
0

separe los comandos con punto y coma. (;)

Ejemplo

echo firstname; echo lastname;
Chetan Laddha
fuente