bashスクリプトとユーザーの相互作用。 パート2

, (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 

では、何がありますか?

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 

スクリプトはルート権限で実行する必要があります!

音声信号


音声信号はいくつかの方法で作成できます。

最初の2つの方法は、おそらく端末の設定が原因で機能しませんでした。

シディロマの開閉


 #!/bin/bash #   eject #   eject -t 

「これはインターフェースではありません!」とあなたは言います。 しかし、事実 反対を 証明します。

Source: https://habr.com/ru/post/J127084/


All Articles