Mein Code zum Erstellen eines ausführbaren Skripts
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Mein Code zum Erstellen eines ausführbaren Skripts
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Antworten:
Sie können den gesamten touch
Befehl weglassen und müssen ihn nicht verwenden sudo
. Um die Befehlszeile verkürzt weitere können Sie mit bash
Geschichte Erweiterung dem Dateinamen das zweite Mal speichern, und lassen Sie unnötigen Leerzeichen:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
Die Verlaufserweiterung wird !#:3
durch das vierte Wort in der aktuellen Befehlszeile ersetzt, in Ihrem Fall als Dateiname script.sh
. Dies muss natürlich angepasst werden, wenn Sie den ersten Befehl ändern, z.
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
Beachten Sie, dass ein gültiges Skript einen Shebang benötigt :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
Wenn Sie diese Befehlskette häufiger benötigen, empfehle ich , eine Funktion zu definieren . Auf diese Weise müssen Sie nur den Funktionsnamen eingeben . Ein ähnlich anpassungsfähiger - wenn auch längerer - Weg ist die Verwendung einer Variablen, die den Dateinamen enthält:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
Wenn Ihr Dateiname Sonderzeichen enthält, vergessen Sie nicht, diese richtig zu zitieren .
Der install
Befehl (Teil des GNU coreutils zusammen mit cp
, mv
, rm
, etc.) , eine Datei kopieren , während auch das Eigentum und das Festlegen von Berechtigungen und die Schaffung von übergeordneten Verzeichnissen wie nötig. Standardmäßig wird die neue Datei ausführbar. Es versteht ' -
' nicht, /dev/stdin
kann aber stattdessen verwendet werden:
install /dev/stdin script.sh <<< "echo Hello World"
In der obigen Beschreibung wird eine ' here-Zeichenfolge ' verwendet, um den Text auf stdin bereitzustellen, der etwas kürzer ist als das Einleiten. Die Argumente, echo
die nicht in Anführungszeichen gesetzt werden müssen, es sei denn, sie enthalten Zeichen mit besonderer Bedeutung.
install <(echo echo Hello World) script.sh
Ich bevorzuge es cat
für Aufgaben wie diese zu verwenden:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
Enter
Ctrl+D
Sie können auch das gesamte chmod weglassen und stattdessen umask vor dem Echo verwenden. Sollte Ihnen ein paar Bytes ersparen. Shebang ist optional, solange Sie Befehle verwenden, die von jeder Shell verstanden werden (hauptsächlich Bourne und C).
umask
standardmäßig ein ausführbares Bit zu setzen ...
sudo
sehr sparsam zu verwenden. Es kann gefährlich sein, sich daran zu gewöhnen, es herumzuwerfen. In diesem Fall besitzen Sie das von Ihnen erstellte Skript, sodass Sie mit den Berechtigungen nach Belieben arbeiten können, ohne dass ein Sudo erforderlich ist.