ホームページ >運用・保守 >Linuxの運用と保守 >Linuxでファイルを実行する方法
Linux で .sh ファイルを実行する方法
Linux で .sh ファイルを実行する方法
1. .sh ファイルはテキスト ファイルなので、実行するには chmod a x xxx.sh を使用して実行権限を与える必要があります。
これは bash スクリプトですか?
touch test.sh を使用できます #test.sh ファイルを作成します
vi test.sh #Edit test.sh ファイル
コンテンツを追加
#! /bin/bash
mkdir test
保存して終了します。
chmod a x test.sh #test.sh の実行権限を与える
たとえば、test,sh ファイルは /home/work ファイルの下にあります
方法 1自分のディレクトリで実行します
cd /home/workwen ファイルを入力します
./test.sh
を実行します コマンドは現在のディレクトリにあります「テスト」ディレクトリ。
方法 2 絶対的な強度で実行する# /home/work/test.sh を実行する
方法 3 独自のディレクトリで実行するsh test.sh
最終提案:
C コード
1.man sh
# を使用します。 # # man sh sh~ の紹介を見てみましょう: "Linux Tutorial"linux.sh構文
はじめに:
1 始まり プログラムは次の行で始まる必要があります (ファイルの最初の行に配置する必要があります)。 # !/bin/sh 記号 #! は、その背後にあるパラメータがファイルの実行に使用されるプログラムであることをシステムに伝えるために使用されます。この例では、/bin/sh を使用してプログラムを実行します。 スクリプトの作成が完了したら、スクリプトを実行する場合は、スクリプトを実行可能にする必要があります。 スクリプトを実行可能にするには: ./filename を使用して実行できるように chmod x filename をコンパイルします。 2 注意事項 シェル プログラミングを行う場合, # で始まる文は行末までのコメントを表します。プログラム内でコメントを使用することを強くお勧めします。 コメントを使用すると、スクリプトを長期間使用したことがない場合でも、スクリプトの機能と動作原理を短時間で理解できます。 3 変数 他のプログラミング言語では、変数を使用する必要があります。シェル プログラミングでは、すべての変数は文字列で構成されているため、変数を宣言する必要はありません。変数に値を割り当てるには、次のように記述できます: #!/bin/sh #変数に値を割り当てる: a=”hello world” # 変数 a の内容を出力します: echo "A is:" echo $a 変数名は他の単語と混同されやすい場合があります。 num=2 echo "this is the $numnd" これは、「this is the 2nd」を出力せず、「this is the 2nd」のみを出力します。シェルは変数 numnd の値を検索しますが、この変数には値がないためです。中括弧を使用して、出力したいのが num 変数であることをシェルに伝えることができます。 num=2 echo "this is the ${num}nd" This will print : this is the 2nd4 環境変数export キーワードで処理される変数を環境変数と呼びます。環境変数は通常ログイン スクリプトでのみ使用されるため、環境変数については説明しません。 5 シェル コマンドとプロセス制御シェル スクリプトでは 3 種類のコマンドを使用できます: 1)Unix コマンド: シェル スクリプト内ではありますが任意の unix コマンドを使用できますが、比較的よく使用されるコマンドがいくつかあります。これらのコマンドは通常、ファイルおよびテキストの操作に使用されます。 一般的なコマンド構文と関数 echo "some text": テキストの内容を画面に出力します ls: ファイル リスト wc –l file wc -w file wc -c file: ファイル内の行数を数えます。ファイル内の単語数を数えます。ファイル内の文字数を数えます。 cp sourcefile destfile: file copymv oldname newname: 繰り返します。 ファイルに名前を付けるか、ファイルを移動します。 rm ファイル: ファイルを削除します。 grep 'pattern' ファイル: ファイル内の文字列を検索します。 例: grep 'searchstring' file.txt Cut -bcolnum file: ファイルの内容を表示範囲を指定して標準出力装置に出力 例: 各行の5文字目から9文字目までを出力 Cut - b5-9 file.txt. cat コマンドと混同しないでください。 これらは 2 つの完全に異なるコマンドです cat file.txt: ファイルの内容を標準出力デバイス (画面) に出力します。 ) file somefile: ファイルの種類を取得します read var: ユーザーに入力を求め、その入力を変数に割り当てます sort file.txt: 行を並べ替えますfile.txt ファイル uniq: テキスト ファイルを削除します。 表示される重複行 (例: sort file.txt | uniq expr: 数学的演算を実行します。 例: 2 と 3 を加算すると expr になります) 2 " " 3 find: ファイルを検索します (例: ファイルに基づいて) 名前検索 find . -name filename -print
tee: データを標準出力デバイス (画面) に出力し、次のようなファイルを作成します: somecommand | tee outfile
Basename file: パスなしのファイル名を返します。例: Basename /bin/tux は、 return tux
dirname file: ファイルのパスを返します。例: dirname /bin/tux は /bin
を返します head file: テキスト ファイルの最初の数行を出力します
末尾ファイル: テキスト ファイルの最後の数行を出力します。
sed: Sed は、基本的な検索および置換プログラムです。標準入力 (コマンド パイプなど) からテキストを読み取り、
結果を標準出力 (画面) に出力できます。このコマンドは、正規表現 (「リファレンス」を参照) を使用して検索します。シェル内のワイルドカードと混同しないでください。例: linuxfocus を LinuxFocus に置き換えます: cat text.file | sed ’s/linuxfocus/LinuxFocus/’ >newtext.file
awk: awk はテキスト ファイルからフィールドを抽出するために使用されます。デフォルトでは、フィールド区切り文字はスペースですが、-F を使用して他の区切り文字を指定できます。
cat file.txt | awk -F, '{print $1 "," $3}' ここでは、最初と 3 番目のフィールドを同時に出力するためのフィールド区切り文字として使用します。ファイルの内容が次のとおりである場合: Adam Bor、34、IndiaKerry Miller、22、USA、コマンド出力は次のようになります: Adam Bor、IndiaKerry Miller、USA
2) コンセプト: パイプライン、リダイレクト、バックティック
これらはシステム コマンドではありませんが、非常に重要です。
パイプ (|) は、あるコマンドの出力を別のコマンドの入力として使用します。
grep "hello" file.txt | wc -l
file.txt 内で「hello」を含む行を検索し、行数を数えます。
ここでは、grep コマンドの出力が wc コマンドの入力として使用されます。もちろん複数のコマンドを使用することもできます。
リダイレクト: コマンドの結果を標準出力 (画面) ではなくファイルに出力します。
> ファイルに書き込み、古いファイルを上書きします。
>> 古いファイルの内容を保持したまま、ファイルの末尾に追加します。
バックスラッシュ
あるコマンドの出力を別のコマンドのコマンド ライン パラメーターとして使用するには、バックスラッシュを使用します。
コマンド:
find . -mtime -1 -type f -print
は、過去 24 時間の変更を検索するために使用されます (-mtime –2 は過去 48 時間を意味します)時間) 渡されたファイル。見つかったすべてのファイルをパッケージ化したい場合は、次の Linux スクリプトを使用できます:
#!/bin/sh
# チェックマークは通常の引用符 ( ') ではなくバックティック (`) です。 :
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
3) プロセス制御
1.if
「if」式は、条件が true の場合に then 以降の部分を実行します:
if ….; then
….
elif ….; then
….
else
….
fi
ほとんどの場合、テスト コマンドを使用して条件テストをテストできます。たとえば、文字列を比較したり、ファイルが存在し、読み取り可能であるかどうかを判断したりできます...
通常、「[ ]」は条件付きテストを表すために使用されます。ここでのスペースは重要であることに注意してください。角括弧の間には必ずスペースを入れてください。
[ -f "somefile" ] : ファイルかどうかを判断します
[ -x "/bin/ls" ] : /bin/ls が存在し、実行権限があるかどうかを判断します
[ -n "$var" ] : $var 変数に値があるかどうかを判断します
[ "$a" = "$b" ] : $a と $b が等しいかどうかを判断します
man test を実行して、テスト式で比較および判断できるすべての型を表示します。
次のスクリプトを直接実行します:
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]; then
echo 「あなたのログイン シェルは bash (bourne again シェル) です」
else
echo 「あなたのログイン シェルは bash ではなく $SHELL です」
fi
変数 $SHELL には、/bin/bash と比較したログイン シェルの名前が含まれています。
ショートカット演算子
C 言語に詳しい友人は次の表現を好むかもしれません:
[ -f "/etc/shadow" ] && echo 「このコンピュータはシャドウを使用しています」 「passwords」
ここで && はショートカット演算子です。左側の式が true の場合、右側のステートメントが実行されます。
論理演算における AND 演算と考えることもできます。上記の例は、/etc/shadow ファイルが存在する場合、「このコンピュータはシャドウ パスワードを使用しています」を出力することを意味します。同じ OR 演算 (||) はシェル プログラミングでも使用できます。以下に例を示します:
#!/bin/sh
mailfolder=/var/spool/mail/james
[ -r "$mailfolder" ]' '{ echo “$mailfolder を読み取れません” ; exit 1; }
echo “$mailfolder has mail from:”
grep “^From ” $mailfolder
最初のスクリプトメールフォルダーが読み取り可能かどうかを確認します。読み取り可能な場合は、ファイル内の「From」行を出力します。読み取り不可能な場合は、OR 演算が有効になり、エラー メッセージを出力した後にスクリプトが終了します。ここで問題が発生します。つまり、次の 2 つのコマンドが必要です。
◆エラー メッセージを出力する
◆プログラムを終了する
中括弧を使用して、2 つのコマンドを匿名関数の形式で 1 つのコマンドとしてまとめます。一般的な機能については以下で説明します。
if 式を使用して、AND または演算子を使用せずに何かを行うこともできますが、AND または 演算子を使用した方がはるかに便利です。
以上がLinuxでファイルを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。