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
sudo
con 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
touch
comando y no hay necesidad de usarlosudo
. Para acortar aún más la línea de comando, puede usar labash
expansión de historial para guardar el nombre de archivo por segunda vez y omitir espacios innecesarios:La expansión del historial se reemplaza
!#:3
con 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
install
comando (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/stdin
puede 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
echo
no necesitar comillas a menos que contengan caracteres con un significado especial.fuente
install <(echo echo Hello World) script.sh
Prefiero usar
cat
para 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
umask
para configurar el bit ejecutable de forma predeterminada ...