Mi código para crear un script ejecutable
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
command-line
scripts
Sham Fiorin
fuente
fuente

sudocon moderación. Tener el hábito de tirarlo puede ser peligroso. En este caso, usted posee el script que creó para que pueda hacer lo que quiera con los permisos, sin necesidad de sudo.Respuestas:
Puede omitir todo el
touchcomando y no hay necesidad de usarlosudo. Para acortar aún más la línea de comando, puede usar labashexpansión de historial para guardar el nombre de archivo por segunda vez y omitir espacios innecesarios:La expansión del historial se reemplaza
!#:3con la cuarta palabra de la línea de comando actual, que en su caso es el nombre del archivoscript.sh. Por supuesto, esto debe adaptarse en caso de que modifique el primer comando, por ejemplo:Tenga en cuenta que un script válido necesita un shebang :
Si necesita esta cadena de comandos con más frecuencia, le recomiendo que defina una función , de esta manera solo necesitará escribir el nombre de la función. Una forma igualmente adaptable, aunque más larga, es el uso de una variable que contenga el nombre del archivo:
Si su nombre de archivo contiene caracteres especiales, no olvide citarlos correctamente .
fuente
El
installcomando (parte de GNU junto con coreutilscp,mv,rm, etc.) puede copiar un archivo al mismo tiempo que el establecimiento de su propiedad y los permisos y la creación de directorios padre si es necesario. Por defecto hará que el nuevo archivo sea ejecutable. No entiende '-' pero/dev/stdinpuede usarse en su lugar:Lo anterior usa una ' cadena aquí ' para proporcionar el texto en stdin, que es un poco más corto que ponerlo. Los argumentos para
echono necesitar comillas a menos que contengan caracteres con un significado especial.fuente
install <(echo echo Hello World) script.shPrefiero usar
catpara tareas como esta:fuente
También puede omitir todo el chmod y usar umask en su lugar antes del eco. Debería ahorrarte unos pocos bytes. Shebang es opcional siempre que use comandos que todos los shell entienden (bourne y C principalmente).
fuente
umaskpara configurar el bit ejecutable de forma predeterminada ...