, (bash.org.ru)
あなたの注意は、ユーザーとスクリプトを通信する手段の新しい選択です。 コンソールを使用することを恐れないすべての人にとって興味深いものになることを願っています。
最初の部分はここにあります 。
オプション(キー)
この方法は、記事の最初の部分に値しますが、著者の物忘れのせいでそこに到達しませんでした。 間違いなく、この方法は、少なくとも一度コンソールを操作したことがあるすべての* nixユーザーに馴染みのあるものです。 簡単な視覚的な例:

プラスは、キーが短く、組み合わせることができるということです。 似たようなことをしようとしますが、すぐにさらにいくつかのポイントを学習します。
#!/bin/bash set -e ME=`basename $0` function print_help() { echo " test_file" echo echo ": $ME options..." echo ":" echo " -c test_file." echo " -w text text." echo " -r test_file." echo " -h ." echo } function create_file() { touch test_file } function write_to_file { echo "$TEXT" >> test_file } function remove_file { rm test_file } # , . if [ $# = 0 ]; then print_help fi while getopts ":cw:r" opt ; do case $opt in c) create_file; ;; w) TEXT=$OPTARG; write_to_file ;; r) remove_file ;; *) echo " "; echo " $ME -h"; exit 1 ;; esac done
では、何がありますか?
- set -eコマンドは、実行中にエラーが発生した場合にスクリプトを停止します(他のオプションについてはこちらをご覧ください )。
- 主なスクリプト操作は関数にまとめられています。 もちろん、関数に1つのコマンドを入れるのは愚かですが、これは単なる例です。実際には、多くのコマンドが存在する可能性があります。
- getopts関数は、渡された引数を解析します。 有効なオプションをリストします。 'w'オプションの後のコロンは、このオプションに追加の引数があり、 $ OPTARG変数に配置されることを意味します。
- オプションは組み合わせることができますが、順番に実行されることを考慮する価値があります。 つまり、 スクリプト-rcを実行すると 、ファイルが最初に削除されてから作成されます。 この場合、ファイルが存在しなかった場合、スクリプトはファイルの作成に到達する前にエラーで終了します。
- 引数が「w」キーの後に続かなければならないことも考慮する価値があります。 存在しない場合、スクリプトはオプション「*」を実行します(デフォルト)。 興味深いことに、 スクリプト-wr Halloを実行すると、「r」オプションは「w」オプションの追加パラメーターとして使用され、「Hallo」は無視されます。 正しいスクリプトは-w Hallo -r
getoptsの詳細については、 こちらをご覧ください。
選択肢
前回の記事では、 caseで実行オプションを選択することを検討しました。 次に、 select構造を使用してメニューを作成する方法を見てみましょう。これにより、シンプルな番号付きメニューを作成できます。
#!/bin/bash # PS3=' : ' select OS in "Linux" "Windows" "Mac OS" "BolgenOS" do echo echo " $OS!" echo break done

詳細については、 こちらをご覧ください 。
ロギング
メッセージを画面に表示せずに、ログファイルに書き込むと便利です。 特に、システムの起動時にスクリプトが起動される場合。
これを行うには、ファイルへの通常の書き込みを使用できます。
#!/bin/bash NAME=`basename $0` TIME=`date +%F\ %H:%M:%S` TYPE='<info>' echo "$TIME $NAME: $TYPE Operation completed successfully" >> /tmp/log
しかし、特別なロギングツールであるロガーもあります。
logger Operation completed successfully sudo tail /var/log/syslog
詳細はこちら 。
デスクトップアラート

少し楽しんで、通知機能で遊んでください。 開始するには、必要なパッケージを配置します。
sudo apt-get install libnotify-bin
ターミナルで最も簡単な例を実行してみましょう。
notify-send --expire-time=10000 "" " "
それについてはすでにHabréに書いています 。
キーボードインジケータ
キーボードの電球を点滅させたいですか? はい、お願いします!
#!/bin/bash setleds -D +caps < /dev/tty7 sleep 1 setleds -D -caps < /dev/tty7
スクリプトはルート権限で実行する必要があります!
音声信号
音声信号はいくつかの方法で作成できます。
- システムスピーカーでエスケープシーケンスを使用する
echo -e "\a"
- ビープユーティリティを使用する
beep 659 120
- aplay、mplayerなどのコンソールプレーヤー
- 音声シンセサイザー。
最初の2つの方法は、おそらく端末の設定が原因で機能しませんでした。
シディロマの開閉
#!/bin/bash # eject # eject -t
「これはインターフェースではありません!」とあなたは言います。 しかし、事実は 反対を 証明します。