bashでのプログラミング-パート1

通常、管理またはファイル管理操作に使用しますが、 快適さ de Linux その機能をその目的をはるかに超えて拡張し、プログラミングを可能にします スクリプト このガイドは、Bashプログラミングの完全なリファレンスではなく、GNU / Linuxシステムの能力を拡張するための基本的なコマンドと構造の紹介を目的としています。

「スクリプト」とは何ですか?

基本的には、システムが特定のタスクに使用する特定のプログラミング言語で記述されたコードを含むファイルであると言います。 外部入力やグラフィカルインターフェイスは必要ありませんが、処理されたデータを出力する必要があります(ユーザーに表示されない場合でも)。

Bashで使用される言語は、独自のインタープリターによって定義され、Kornシェル(ksh)やCシェル(csh)などの他のシェルの構文を組み合わせたものです。 コンソールで通常使用されるコマンドの多くは、特定のディストリビューションに厳密に属するコマンドを除いて、スクリプトでも使用できます。

スクリプトの構造

開始するには、テキストエディタが必要であり、プログラミングを希望する必要があります。 .sh拡張子を付けて保存したファイルは、最初の行が次の場合に限り、コンソールで実行(または解釈)できます。

#!/ bin / bashに

これは、コンソールを使用してファイルを実行するようにシステムに指示します。 さらに、#文字を使用するとコメントを書き込むことができます。 最も単純な例を作成するために、次の画像に示すように、もうXNUMX行追加します。

echoコマンドは、画面にメッセージを表示します。この場合は、典型的な「Helloworld!」です。 保存してコンソールで実行すると、結果が表示されます。

基本的なコマンド

次のコマンドは一般的で、あらゆるタイプのプログラムに非常に役立ちます。 他にもたくさんあることを明確にしますが、ここでは以下について説明します。

エイリアス:単語の文字列を短い単語に置き換えることができるため、コードを削減できます。

#perという名前のエイリアスを作成します。#Downloadsフォルダのエイリアスper = '/ home / user / Downloads'#使用するたびに、#新しい単語を呼び出す必要があります。#そのエイリアスを破棄するには、 unaliasunaliasを使用する

break:for、while、until、またはselectループをすぐに終了できます(ループについては後で詳しく説明します)

#1から5までの数字を割り当てるループを作成します#1 2 3 4 5 doのカウンターの「ループのターン」ごとに#変数の現在の値を出力します#counter、文字$によって分析されますecho "$ counter"#カウンター値が3に等しい場合if [$ counter –eq 3] then#breakはbreak fidoneのループを終了します

続行-現在のループを無視して次のループに進むことを除いて、breakと同様です。

#1から5までの番号を割り当てるループを作成します#1 2 3 4 5 doのカウンターの「ループのターン」ごとに#カウンター値が3に等しい場合if [$ counter –eq 3] then#続行すると、次のラウンドにジャンプして現在のサイクルの残りの部分が分析されなくなります。つまり、#value3は出力されません。 fiエコー「$カウンター」を続行します

宣言:タイプセットと同じように、変数を宣言して値を割り当てます(同じように機能します)。 これをいくつかのオプションと組み合わせることができます。-iは整数を宣言します。 -rは、値を変更できない読み取り専用変数の場合。 –行列または「配列」の場合。 -関数の場合はf。 -xは、スクリプト自体の環境外に「エクスポート」できる変数の場合。

宣言–i num = 12宣言–x pi = 3.14

help:特定のコマンドのヘルプを表示します。

ジョブ:実行中のプロセスを表示します。

#–cを使用すると、コマンドの名前が表示され、–pを使用すると、#各プロセスのpid(プロセスID)が表示されます。 ジョブ-cp

let:算術式を評価する

let a = 11 let a = a + 5#最後に、16echo "11 + 5 = $ a"であるaの値を出力します。

ローカル:ローカル変数を作成します。これは、エラーを回避するために、スクリプト自体の関数で使用することが望ましいです。 宣言コマンドと同じ機能を使用できます。

local v1 = "これはローカル変数です"

ログアウト:シェルから完全にログアウトできます。 複数のシェルウィンドウを使用する場合に役立ちます。この場合、exitコマンドでは、一度にXNUMXつのウィンドウしか終了できません。

printf:データを印刷してフォーマットすることができます。 多くのオプションがあるので、いくつか言及します。

#%fは浮動小数点数として出力し、nは改行として出力します#line printf "%fn" 5 5.000000#&dは20進数を引数として渡すことができますprintf "%dドルで評価される%d個の注文があります。n" 500 20ドル相当の500件の注文。

読み取り:標準入力から行を読み取ります(たとえば、キーボードを介してデータをロードする際に使用されるモジュール)。 次のようなオプションを渡すことができます。-t読み取り制限時間を指定します。 -a各単語がaname配列内の位置に割り当てられるようにします。 -d行の終わりに書き込まれる区切り文字を使用します。 とりわけ。

echo "名前を入力して、Enterキーを押します"#変数名を読み取りますread name echo "名前は$ nameです"

タイプ:コマンドとその動作を説明します。 各コマンドのデータ定義を見つけると便利な場合があります。

type –a '[' #typeは、[はシェル組み込みコマンドです[はシェル組み込みコマンドです#-aは、入力された名前の実行可能ファイルを含む#ディレクトリを検索できることを示しています。 [is / usr / bin / [

ulimit:特定のシステムリソースへのアクセスと使用をプロセスに制限します。これは、管理上の変更を許可するプログラムや、さまざまなタイプのユーザーを対象とするプログラムに最適です。 制限を設定するときは、制限のキロバイトを表す数値を書き込みます。

#現在の制限ulimit –a#-fを使用すると、制限ユーザーは#512000 Kb(500 #Mb)より大きいファイルを作成できなくなりますulimit –f 512000#-vはプロセスの仮想メモリを制限します。 ulimit –v 512000

待機:特定のプロセスまたはジョブが実行されるのを待って続行します。

#スクリプトは、pid#2585のプロセスが実行されるのを待ちます

待って2585

スクリプトに追加できるその他の便利なコマンドは、記号で表されます。

!!:最後のコマンドをもう一度実行してください

!wer:式「wer」で始まった最後のコマンドを実行します。

'=='、 '!='、 '>'、 '<'、 '> ='、および '<=':関係演算子。

|:XNUMXつの正規表現を結合するために一般的に使用されるOR演算子。

:式をフォーマットできるエスケープコマンド。 例:aは音声アラート、nは改行、bはバックスペースなど。

フアン・カルロス・オルティス、ありがとう!

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   中難易度

    すごい! とにかく、2つのコメント:Ubuntuタグは、一般的なものを一般化するため、半分多すぎます。 そして、これらのチュートリアルが進歩し続けるならば、それらが互いにリンクされているとよいでしょう…。
    それ以外は、この動きは面白いです!

  2.   Linuxを使いましょう

    良い貢献! すごい!

  3.   ジョバンニエスコバルソーサ

    問題にもっと入りたい人のための不足している参照だけ。 私たちの国で見つけるのはそれほど簡単ではありませんが、いくつかの良いものは
    -Linuxコマンド、エディター、およびシェルプログラミングの実用ガイド、Mark Sobell(第8章)
    --Pro Bash Programming、Chris FA Johnson(ただし、これは他の参考資料やもう少し知識がある人向けです)。

    良い品

  4.   Linuxを使いましょう

    良い日! ありがとうございました!

  5.   パトリシオ・ドランテス・ジャマルネ

    :@「ログイン」機能により以前のコメントが削除されたので、さらに要約します。
    ジョブ-cp
    bash:ジョブ:-c:無効なオプション
    jobs:使用法:jobs [-lnprs] [jobspec…]またはjobs-xコマンド[args]

    -eq -gt -ltは、フォーラムとフォーラムの間で小数点変数を受け入れません。bcが良い味方であることがわかりました。
    if [`echo 9.999> 10 | bc` -eq 1]; その後
    echo "9.999が10より大きい場合、プロセッサがまだ機能していることを確認してください"
    ほかに
    エコー«9.999は10以下で、すべてが正常に機能します
    fi

  6.   NotFromブルックリン

    この投稿は、bashスクリプトのすべての一般性を非常によく要約しています。
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    このサイトでは、bashの特性に関する多くの質問と回答を見つけることができます。
    http://unix.stackexchange.com/questions/tagged/bash

    ここにいくつかの本当にクールなスクリプトがあります、そしてねえ、あなたは他の人のスクリプトを読むことによってそれらを学ぶことができます:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   NotFromブルックリン

    bashを除いて、あなたはあなたの言うことは正しいです。 私が見たすべてのシステムには、bash in / bin / bashがあります。

    しかし、python、perl、rubyなどの場合は、それを使用しても問題ありません。 私がやります

  8.   Guille

    偶然にも、大学ではbashスクリプトを使用しているので、データは10で、非常に優れています。

  9.   アレックスvi

    ダウンロードするPDFバージョンが良いでしょう! 😀

  10.   マルコアントニオデフェンテス

    とても良いサイト。 私はついに何か役に立つものを見つけました。 ありがとうございました。