Il mio codice per creare uno script eseguibile
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Il mio codice per creare uno script eseguibile
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Risposte:
Puoi tralasciare l'intero touchcomando e non è necessario utilizzarlo sudo. Per abbreviare ulteriormente la riga di comando è possibile utilizzare bashHistory Expansion per salvare il nome del file la seconda volta e omettere gli spazi non necessari:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
L'espansione della cronologia sostituisce !#:3la quarta parola della riga di comando corrente, che nel tuo caso è il nome del file script.sh. Naturalmente questo deve essere adattato nel caso in cui si modifichi il primo comando, ad esempio:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
Nota che uno script valido ha bisogno di uno shebang :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
Se hai bisogno di questa catena di comandi più spesso ti consiglio di definire una funzione , in questo modo dovrai solo digitare il nome della funzione. Un modo altrettanto adattabile, sebbene più lungo, è l'uso di una variabile che contiene il nome file:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
Se il tuo nome file contiene caratteri speciali, non dimenticare di citarli correttamente .
Il installcomando di (parte di GNU coreutils insieme cp, mv, rm, ecc) può copiare un file, mentre anche l'impostazione sua proprietà e le autorizzazioni e la creazione di directory padre, se necessario. Di default renderà eseguibile il nuovo file. Non capisce ' -' ma /dev/stdinpuò essere utilizzato invece:
install /dev/stdin script.sh <<< "echo Hello World"
Quanto sopra usa una ' stringa qui ' per fornire il testo su stdin, che è leggermente più corto del reindirizzamento. Gli argomenti echonon devono essere citati a meno che non contengano caratteri con significato speciale.
install <(echo echo Hello World) script.sh
Preferisco usare catper attività come questa:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'Enter
Ctrl+D
Potresti anche tralasciare l'intero chmod e usare umask invece prima dell'eco. Dovrebbe salvarti qualche byte. Shebang è opzionale fintanto che usi comandi compresi da ogni shell (principalmente bourne e C).
umaskper l'impostazione del bit eseguibile per impostazione predefinita ...
sudocon molta parsimonia. Prendere l'abitudine di buttarlo in giro può essere pericoloso. In questo caso possiedi lo script che hai creato in modo da poter fare qualsiasi cosa tu voglia con le autorizzazioni, senza bisogno di sudo.