スクリプトを作成し、これよりも少ないコードで実行可能にする方法はありますか?


8

実行可能スクリプトを作成するための私のコード

touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh

2
@ShamFiorinデザートの答えの最初の部分を強調したかった。あなたはsudo非常に控えめに使うようにすべきです。捨てる習慣をつけるのは危険です。この場合、あなたが作成したスクリプトを所有しているので、sudoは必要なく、権限を使用して好きなことを実行できます。
マリー

回答:


18

touchコマンド全体を省略でき、を使用する必要はありませんsudo。コマンドラインをさらに短くするには、bashHistory Expansionを使用してファイル名をもう一度保存し、不要なスペースを省略できます。

echo "echo 'Hello World'" >script.sh&&chmod +x !#:3

History Expansionは!#:3、現在のコマンドラインの4番目の単語(この場合はファイル名)に置き換えられますscript.sh。もちろん、これは最初のコマンドを変更する場合に適応する必要があります。例えば:

>script.sh echo "echo 'Hello World'"&&chmod +x !#:1

有効なスクリプトにはシバンが必要です。

>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1

このコマンドチェーンがより頻繁に必要な場合は、関数を定義することをお勧めします。この方法では、関数名を入力するだけで済みます。同様に順応性があります–より長いです–方法はファイル名を保持する変数の使用です:

f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f

ファイル名に特殊文字が含まれている場合は、適切引用符付けることを忘れないでください。


20

installコマンド(GNUの部分は一緒にcoreutilsのcpmvrmまた、その所有権とアクセス権を設定し、必要に応じて親ディレクトリを作成中のファイルをコピーすることができ、など)。デフォルトでは、新しいファイルを実行可能にします。' -' は理解できませんが、/dev/stdin代わりに使用できます:

install /dev/stdin script.sh <<< "echo Hello World"

上記は ' here string 'を使用して、標準入力にテキストを提供します。これは、パイプで入力するよりも少し短いです。引数にecho特別な意味の文字が含まれていない限り、引用は必要ありません。


ヒアストリングはバシズムであることに注意してください-ヒアドキュメントは移植可能です
スティーブン・ペニー

3
良いアイデア。また、使用することができ、プロセス置換をinstall <(echo echo Hello World) script.sh
デジタルトラウマ

8

私はcatこのようなタスクに使用することを好みます:

cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'Enter
Ctrl+D

1

また、chmod全体を省略して、エコーの前に代わりにumaskを使用することもできます。数バイト節約する必要があります。すべてのシェル(主にボーンとC)が理解できるコマンドを使用する限り、シバンはオプションです。


5
正確にどうしますか?
wjandrea 2018

umaskデフォルトでは実行可能ビットを設定するために使用することはできません...
Ravexina
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.