端末コマンド用のスクリプトファイルを作成するにはどうすればよいですか?


114

Windowsでは、cmdのコマンドを含むファイル(通常.cmdまたは.batファイル)を作成できます。それらのファイルをクリックするcmd.exeと、ファイルに含まれるコマンドが開き、実行されます。

Ubuntuでこれを行うにはどうすればよいですか?

これは重複していると思いますが、答えが見つかりません。
これらの質問に似ていますが、質問には答えません。

頻繁に使用される端末コマンドをファイルに保存する

.cmd / .batファイルを実行するUbuntuのCMD.exeエミュレーター

回答:


150

2つの方法があります。

まず、最も一般的なのはファイルを書き込むことです。最初の行が

#!/bin/bash

次に、ファイルを保存します。次に、実行可能としてマークしますchmod +x file

次に、クリック(またはターミナルからファイルを実行)すると、コマンドが実行されます。慣例により、これらのファイルには通常拡張子はありませんが.sh、他の方法で終了させることもできます。

いくつかのメモ:

  • 最初の行がファイルを解釈するプログラムへのパスである場合、Linuxで任意の(および任意の)ファイルを実行できます。一般的な例としては/bin/python/bin/sh/bin/dash、それでも奇数ボールの事は次のように動作します/bin/mysql
  • Bashは完全な言語です。Windowsのcmd.exeよりもはるかに複雑です。関数、ループ、条件、文字列操作などをサポートする強力なプログラミング言語があります。
  • これらのドキュメントは、問題が発生した場合に役立ちます。
  • ファイルを実行可能にしたくない場合は、bashに引数として渡すことで実行できます。 bash file/to/run.sh

簡単なBashの例

#!/bin/bash  
echo "This is a shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

2番目の方法は、を使用してコマンドを記録することscriptです。実行してscriptから操作を行います。スタッフタイプexitとスクリプトの実行が完了すると、実行したすべての「スタッフ」を含むファイルが生成されます。これはあまり使用されませんが、マクロなどを作成するのに非常によく機能します。man script詳細については。


それ/bin/bash/bin/shに変更したいかもしれませんが、bashはUbuntuのデフォルトではありません。
TC1

@ TC1デフォルトでインストールされるため、デフォルトであるかどうかは関係ありません。
カルロスキャンデロス

1
/bin/dash/bin/sh通常シンボリックリンクされている)bashよりもはるかに高速であることを指摘したいと思います(約15倍速く測定しました)。可能な限り、/bin/dashシェルスクリプトに使用します:)
MiJyn 14年

4
ファイルと同じフォルダーにある場合は、。/ file.sh
coteyr

1
両方の方法を試しましたが、bashスクリプトファイルをダブルクリックしようとすると、geany / geditでテキストファイルが開いて編集できる状態になります。ダブルクリックでスクリプトを実行したいのですが。この質問には、私が何をしたいのかという詳細が含まれています。
thymaro

15

シェルスクリプトを使用してファイルに書き込むということですか?以下にいくつかの方法を示します。

touch file

このメソッドは単にファイルを作成しますが、ファイルが既に存在する場合、変更日をそのコマンドを使用した時間に変更するだけです。

echo "text" > file

そのメソッドはfileto の内容を上書きしますtext。ファイルをクリアしたい場合は、これを行うことができます:

echo "" > file

それに複数の行を書きたい、そして何千ものechoコマンドを使いたくないとすると、このコマンドを使います:

cat << EOF > file
test
test1
foo
bar
EOF

これにより、1つのコマンドで複数の行を記述できます。の内容fileは次のようになります。

test
test1
foo
bar

あなたがファイルに追加したい場合は、交換してください>>>

お役に立てれば!


編集:ああ、なるほど、.sh拡張子を使用してファイルをgeditで記述し(オプションですが、それは良い考えです)、ファイルマネージャーでファイルを右クリックし、[プロパティ]-> [権限]を選択し、チェックしますAllow executing file as program。次に、それをダブルクリックすると実行されます:)。また、ターミナルでこれを行いたい場合は、このコマンドを実行して実行可能にすることができます(所有しsudoていない場合は先頭に追加することもできます)。

chmod +x file

そして実行するには:

./file

実際、私がやりたいことは、geditなどの端末コマンドを含むファイルを書き込むことです。次に、このファイルをダブルクリックすると、ターミナルでこれらのコマンドが実行されます。
セス

素晴らしい答え、思いやりのある更新。単純にファイルを作成するために、私は常に使用していますtouch filename
-TryTryAgain

@TryTryAgain、うん、それは簡単な方法で、おそらくよりも高速ですecho "" > file。私の答えにその方法を含めても大丈夫ですか?
ミジン

@MiJyn絶対に含めてください。ありがとう
-TryTryAgain

グローバルコマンドのように、ターミナルのどこでも実行するにはどうすればよいですか?
オマー

14

Windowsバッチファイルに相当するのはシェルスクリプトで、優れた入門ガイドはBash Scriptingです。

ほとんどの場合、コマンドラインで入力できるコマンドはシェルスクリプトに配置できます。

Windowsバッチファイルとは異なる点がいくつかあります。

  • シェルと呼ばれるさまざまなコマンドインタープリターがあります。デフォルトはbashですが、興味がある場合は、zsh、ksh、dash、perl、pythonなど、他にもあります。

  • シェルスクリプトを実行するには、ファイルを実行可能にする必要があります。 chmod +x <filename>

  • Ubuntuのでは、カレントディレクトリには、プログラムの検索パスではありませんので、あなたが実行する必要が./<filename>なく、<filename>

  • 変数名は$<varname>、ではなく%<varname>%

  • バッチファイルのように、シェルスクリプトのコマンドはデフォルトでは印刷されません。

  • ファイル名の拡張子.shには、拡張子を使用する必要のない(またはより一般的な)拡張子を使用できます。置く#!/bin/bashファイルの最初の行でファイルを実行するために使用するためにどのようなプログラムのUbuntuに伝えます。

  • コメントはで始まり、#ではありませんrem

これがお役に立て、楽しいスクリプト作成をお楽しみください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.