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

Respuestas:


31

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

sudo touch .htaccess && sudo chmod 766 .htaccess


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 admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com: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'

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


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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.