BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Bashプログラミングを始めましょう

Unixに対する当初の希望の1つは、日常のコンピューターユーザーが独自の作業スタイルに合わせてコンピューターを微調整できるようにすることでした。コンピューターのカスタマイズに対する期待は何十年にもわたって減少しており、多くのユーザーはアプリやWebサイトのコレクションを「カスタム環境」と見なしています。その理由の1つは、多くのオペレーティングシステムのコンポーネントが開いていないため、通常のユーザーがそれらのソースコードを利用できないことです。

しかし、Linuxユーザーの場合、システム全体がターミナルから利用できるコマンドに基づいているため、カスタムプログラムを利用できます。ターミナルは、クイックコマンドや詳細なトラブルシューティングのための単なるインターフェイスではありません。これは、日常的なタスクを処理することでワークロードを削減できるスクリプト環境です。

プログラミングを学ぶ方法

これまでプログラミングを行ったことがない場合は、2つの異なる課題の観点から考えると役立つ場合があります。1つはコードの記述方法を理解することであり、もう1つはどのコードを記述するかを理解することです。 構文を学ぶことができます —しかし、言語で利用できる単語を知らなければ、遠くまで行くことはできません。 。実際には、配置する単語がないと構文を学習できないため、両方の概念を一度に学習し始めます。したがって、最初は、基本的なコマンドと基本的なプログラミング構造を使用して簡単なタスクを記述します。基本に慣れたら、言語をさらに詳しく調べて、プログラムにますます重要なことを実行させることができます。

Bashでは、ほとんどの単語 使用するのはLinuxコマンドです。 構文 Bashです。すでにBashを頻繁に使用している場合は、Bashプログラミングへの移行は比較的簡単です。ただし、Bashを使用しない場合は、Bashが明快さと単純さのために構築された単純な言語であることを知って喜ぶでしょう。

インタラクティブデザイン

時々、プログラミングを学ぶときに理解するのが最も難しいのは、コンピューターがあなたのために何ができるかということです。明らかに、コンピュータ自体がそれを使って行うすべてのことを実行できれば、コンピュータに再び触れる必要はありません。しかし、現実には人間が重要です。コンピューターが役立つものを見つけるための鍵は、1週間を通して繰り返し実行するタスクに注意を払うことです。コンピューターは繰り返しを特にうまく処理します。

しかし、コンピュータに何かをするように指示できるようにするには、その方法を知っている必要があります。これは、Bashが得意とする分野です:インタラクティブプログラミング。ターミナルでアクションを実行すると、スクリプトを作成する方法も学習します。

たとえば、私はかつて、大量のPDFブックを、低インクでプリンターに適したバージョンに変換するという任務を負っていました。これを行う1つの方法は、PDFエディターでPDFを開き、数百の画像(画像としてカウントされるページの背景とテクスチャ)のそれぞれを選択して削除し、新しいPDFに保存することです。この方法では、1冊の本だけで半日かかります。

私の最初の考えはPDFエディターのスクリプトを作成する方法を学ぶことでしたが、数日間の調査の結果、スクリプトを作成できるPDF編集アプリケーションを見つけることができませんでした(非常に醜いマウス自動化ハック以外)。それで、私はターミナル内からタスクを達成するために見つけることに注意を向けました。これにより、PostScriptのオープンソースバージョンであるGhostScript(PDFが基づくプリンター言語)を含む、いくつかの新しい発見がもたらされました。数日間タスクにGhostScriptを使用することで、それが私の問題の解決策であることを確認しました。

コマンドを実行するための基本的なスクリプトを作成するのは、PDFから画像を削除してテキストファイルに貼り付けるために使用したコマンドとオプションをコピーするだけでした。ファイルをスクリプトとして実行すると、おそらく同じ結果が得られます。

Bashスクリプトに引数を渡す

ターミナルでコマンドを実行することとシェルスクリプトでコマンドを実行することの違いは、前者が対話型であるということです。ターミナルでは、移動しながら調整できます。たとえば、 example_1.pdfを処理したばかりの場合 次のドキュメントを処理する準備ができました。コマンドを調整するには、ファイル名を変更するだけです。

ただし、シェルスクリプトはインタラクティブではありません。実際、シェルのスクリプトが唯一の理由です。 存在するのはあなたがそれに出席する必要がないようにするためです。これが、コマンド(およびコマンドを実行するシェルスクリプト)が引数を受け入れる理由です。

シェルスクリプトには、スクリプトの開始方法を反映する事前定義された変数がいくつかあります。初期変数は$0 、およびスクリプトを開始するために発行されたコマンドを表します。次の変数は$1 、これはシェルスクリプトに渡される最初の「引数」を表します。たとえば、コマンド echo hello 、コマンド echo $0、 そしてこんにちはという言葉 $ 1 。コマンドでechohello world 、コマンド echo $0 こんにちは $ 1 、および世界 $ 2

インタラクティブシェルの場合:

$ echo hello world
hello world

非対話型シェルスクリプトでは、できた 非常に文字通りの方法で同じことをします。このテキストをテキストファイルに入力し、 hello.shとして保存します :

echo hello world

次に、スクリプトを実行します:

$ bash hello.sh
hello world

それは機能しますが、スクリプトが入力を受け取ることができるという事実を利用していません。 hello.shを変更します これに:

echo $1

2つの引数を引用符で囲んで1つにグループ化して、スクリプトを実行します。

$ bash hello.sh "hello bash"
hello bash

私のPDF削減プロジェクトでは、各PDFが凝縮するのに数分かかったため、この種の非対話性が本当に必要でした。しかし、私からの入力を受け入れるスクリプトを作成することで、スクリプトに複数のPDFファイルを一度にフィードすることができました。スクリプトはそれぞれを順番に処理しました。これには30分以上かかる場合がありましたが、他のタスクに使用できるのは30分でした。

フロー制御

基本的に、繰り返す必要のあるタスクを実行するために実行した正確なプロセスのトランスクリプトであるBashスクリプトを作成することは完全に許容されます。ただし、スクリプトを介して情報がどのように流れるかを制御することにより、スクリプトをより強力にすることができます。データに対するスクリプトの応答を管理する一般的な方法は次のとおりです。

  • if / then
  • forループ
  • whileループ
  • ケースステートメント

コンピューターはインテリジェントではありませんが、データの比較と解析には優れています。スクリプトにデータ分析を組み込むと、スクリプトははるかにインテリジェントに感じることができます。たとえば、基本的な hello.sh エコーするものがあるかどうかに関係なく、スクリプトが実行されます:

$ bash hello.sh foo
foo
$ bash hello.sh

$

入力を受け取らなかったときにヘルプメッセージを提供すると、よりユーザーフレンドリーになります。これはif/thenステートメントであり、基本的な方法でBashを使用している場合は、そのようなステートメントがBashに存在することをおそらく知らないでしょう。しかし、プログラミングの一部は言語の学習であり、少し調べれば、if/thenステートメントについて学ぶことができます。

if [ "$1" = "" ]; then
        echo "syntax: $0 WORD"
        echo "If you provide more than one word, enclose them in quotes."
else
        echo "$1"
fi

この新しいバージョンのhello.shを実行する 結果:

$ bash hello.sh 
syntax: hello.sh WORD
If you provide more than one word, enclose them in quotes.
$ bash hello.sh "hello world"
hello world
スクリプトを実行する

PDFファイルから画像を削除するもの、雑然としたダウンロードフォルダーを管理するもの、Kubernetes画像を作成してプロビジョニングするものを探しているかどうかにかかわらず、Bashのスクリプトを学習するには、Bashを使用してからそれらのスクリプトを取得する方法を学習します。コマンドのリストから入力に応答するものまで。これは通常、発見のプロセスです。テキストコマンドで実行できるとは想像もしなかったタスクを実行する新しいLinuxコマンドを見つける必要があります。また、スクリプトを必要なすべての方法に適応させるためのBashの新しい機能を見つけることができます。実行します。

これらのトリックを学ぶ1つの方法は、他の人のスクリプトを読むことです。人々がシステム上でどのようにroteコマンドを自動化しているかを感じ取ってください。なじみのあるものを確認し、なじみのないものについての詳細を探してください。

もう1つの方法は、BasheBookを使用したプログラミングの概要をダウンロードすることです。 Bashに固有のプログラミングの概念を紹介し、学習した構成を使用して、独自のコマンドの作成を開始できます。そしてもちろん、クリエイティブ・コモンズ・ライセンスの下で無料でダウンロードしてライセンスを取得できるので、今すぐコピーを入手してください。

Bash eBookを使用したプログラミング入門をダウンロードしてください!


  1. Clipchampを始める方法

    Clipchamp は、誰もが仕事やソーシャル メディアなどの動画を作成するために使用できる動画編集ツールです。マイクロソフトは昨年、このプラットフォームを買収し、Windows 10 および Windows 11 ユーザーは無料で利用できるようになりました。当初、このアプリは Office 365 に統合される予定でしたが、変更されました。 Clipchamp は、すべての Windows 11 デバイスにインボックス アプリとしてプリロードされます。 ゼロからビデオを作成するのに最適です。チュートリアルやセールス プレゼンテーションなどの長い形式のコンテンツを作成したり、生の映像を編集し

  2. Alexa スキルの使用方法

    Amazon Echo スマート スピーカーを所有している場合は、デジタル アシスタントの Alexa に精通している必要があります。これは、最高の音声アシスタントの 1 つです。ただし、Alexa の機能について疑問がある場合は、答えは、買い物リストの作成、音楽の再生、スマート ホームの制御以外にも多くのことができるということです。実際、この信じられないほどの仮想アシスタントは、あなたが考えている以上に個人的なタスクに役立ちます. Amazon Skill Blueprints の助けを借りて、独自の Alexa スキルや面白いジョーク、クイズを作成して気分や環境を明るくするために使用できま