序章

このチュートリアルの第2部では、VPSでのシェルスクリプトのより基本的なコマンドについて説明します。 彼らは、ユーザーとの間で情報を表示および収集する責任があります。 この記事は、最初のチュートリアルに従ってシェルスクリプトフォルダーを既に構成していることを前提に書かれています。

エコーコマンド

このコマンドを使用すると、ユーザーの情報を表示できます。 単純なテキスト文字列、変数、またはそれらの両方を一緒に表示できます。 これには2つのパラメータがあります。表示されるテキストの後に改行が続かないようにする-nと、文字列内で次の「コード」のセットを有効にする-eです。

\a   - Alert sound
\b   - Backspace character
\c   - Don’t display new line
\e   - Escape character
\n   - New line
\r   - Carriage return
\t   - Horizontal tab
\0xx - ASCII character
\\   - Backslash

たとえば、次のコマンドはまったく同じように実行されます。

echo -e "Text\c"
echo -n "Text"

変数をechoで表示するには、次のように、「$」文字が前に付いた文字列に変数を記述します。

string=World!
echo "Hello $string"

テキスト、コマンド、および変数を1つの文字列に組み合わせることができます。 新しい行を出力するときに「\n」コマンドを実行するだけで、同じコード行に複数行のテキストを含めることもできます。

エコー付きのフォーマットされたテキスト

echoコマンドを使用すると、テキストをさまざまな色やスタイルで表示できます。 すべてがそこにあるすべてのターミナルクライアントで機能するわけではないので、スクリプトを実行したときとは異なる結果が得られる可能性があることに注意してください。 それらは視覚的な変更にすぎないため、ほとんどの場合、実際の問題ではありません。 各カスタマイズ(テキストを太字、下線付き、または色付きにする)は、次のように、エスケープ文字(’\ e’で定義)に続くコードであるエスケープシーケンスによって定義されます。

echo -e "This is \e[1mBold"

これは、最も一般的なコードを含む小さなテーブルです。

Bold:            \e[1m
Dim:             \e[2m
Underlined:      \e[4m
Inverted colors: \e[7m

たとえば、それらを組み合わせて下線付きの太字のテキストを作成したり、「\e[0m」と入力してすべてをリセットしたりできます。

echo -e "\e[4mThis \e[1mis\e[0m \e[7man example \e[0mstring"

それを試してみて、それがどのように見えるかを見てください。

色は基本的に同じものです。 各色にはコードがあり、フォーマットコードと同じ方法で挿入できます。 以下の表は、ほとんどの端末クライアントでサポートされている色を示しています。

Black:         \e[30m (Text) and \e[40m (Background)
Red:           \e[31m (Text) and \e[41m (Background)
Green:         \e[32m (Text) and \e[42m (Background)
Yellow:        \e[33m (Text) and \e[43m (Background)
Blue:          \e[34m (Text) and \e[44m (Background)
Magenta:       \e[35m (Text) and \e[45m (Background)
Cyan:          \e[36m (Text) and \e[46m (Background)
Light gray:    \e[37m (Text) and \e[47m (Background)
Default color: \e[39m (Text) and \e[49m (Background)

また、テキストの色をさまざまな背景色と混合したり、色付きのテキストに通常の書式設定コードを追加したりすることもできます。

読み取りコマンド

ユーザーから情報を取得するには、readコマンドを使用します。 Enterキーが押されるまでにユーザーが入力したものをすべて保存し、変数に保存します。 それに対する唯一の引数は、情報を格納する変数です。 たとえば、これはユーザーが希望する名前のフォルダーを作成する短いスクリプトです。

#!/bin/bash
read foldername
mkdir foldername

しかし、これはユーザーインターフェイスのないスクリプトです。 ユーザーは、入力する必要があるかどうか、何を入力する必要があるかをどのように知る必要がありますか?

スクリプト例

この例では、このチュートリアルで学習したすべてのものを使用します。 カスタムフォーマットのメッセージがユーザーに表示され、入力が必要になります。 最初のチュートリアルには、スクリプトを呼び出すときに渡されたパラメーターに基づいてファイルをバックアップする例がありました。 次に、それを書き直して、ユーザーに何をバックアップしたいかを尋ねます。

まず、ファイルを設定して開く必要があります。

touch ~/bin/filebackup2
chmod +x ~/bin/filebackup2
nano ~/bin/filebackup2

インターフェースを持つようにスクリプトを書き直します。

#!/bin/bash
#Backup script 2.0
#Description: makes a copy of any given file at the backup folder
#Author: Your Name
#Date: 9/19/2013
#Request the backup folder from the user:
echo -e "\e[1m\e[32mFile Backup Utility\n\e[39m\e[0mPlease input your backup folder:"
read BACKUPFOLDER
#The script will make sure the folder exists
mkdir -p $BACKUPFOLDER
#Request files to be backed up:
echo -e "\e[47m\e[30mWhich files do you want backed up?\e[39m\e[49m"
read FILES
cp -a $FILES $BACKUPFOLDER

結論

このチュートリアルでは、適切なユーザー操作でスクリプトを作成できる基本的なコマンドについて説明します。これは、スクリプトの機能と、スクリプトが要求しているデータの種類を全員が確実に理解できるようにするために重要です。 すべてのスクリプトにユーザーインターフェイスが必要なわけではありません。 私たちが最初にコーディングしたものは、ほとんどの場合、より速く、より優れています。 ただし、コマンドラインでも、「echo」コマンドが必要な「help」インターフェイスを実装する必要があるのはスクリプトだけです。