[arch]Linuxのあれこれ
wlogoutをhyperlandのkey bindした結果表示をトグルするためにはshall script核に必要がありそうなので、そのスクリプトをdotfileとして保存することを考えた場合、どこに配置するのがいいのか考えてみる
man
MANUAL SECTIONS
The standard sections of the manual include:
1 User Commands
2 System Calls
3 C Library Functions
4 Devices and Special Files
5 File Formats and Conventions
6 Games et. al.
7 Miscellanea
8 System Administration tools and Daemons
Distributions customize the manual section to their specifics,
which often include additional sections.
man -k wlogout
でどのnumberにドキュメントがあるのか確認できます。
-> ドキュメントを確認するためにはsudo mandb
コマンドにより更新する必要があります。
shell scriptに挑戦しよう
- $0 : スクリプト名 / プログラム名
- $# : 引数の個数を表示
- $1~n : Nこめの引数を表示 二桁以上は{}で囲む
- $@ : すべての引数を表示
- $$ : 実行中のシェルのプロセスID
- $? : 最後に実行したコマンドの結果ステータス
- $! : シェルが最後に実行したバックグラウンドプロセスのプロセスID
- $- : シェルの実行オプション
https://atmarkit.itmedia.co.jp/ait/articles/1810/07/news001.html
source command
sourceは通常のファイルの実行とほぼ同じですが、実行したファイルの変数がそのまま保持される。
つまりシェルスクリプト内でsourceによって実行されたファイルの変数をそのまま受け継ぐことができる
テスト条件
- -z : 文字列が空であるか (空の場合true)
- -f : ファイルが存在し、かつ通常のファイルであるかどうか
- -d : pathがディレクトリであるか
- -e : pathがファイルまたはディレクトリとして存在するかどうか
- -ne : not equal
[] / [[]]
ブラケットの違い
記法に強くなる
case文で制御しよ
case / esac囲み <- えさっくってなに????って思った人挙手!!!
ケースの条件は
case 文字列 in
値)
やること
〜〜〜 ;;
esac
てな感じで
ワイルドカードや | も使えるよ
出力とリダイレクト
> ファイルへの上書き
>> ファイルへの追記
| パイプは、標準出力をコマンドに渡したいときに使用します。
envsubst最強説
envsubstによってできることは様々なファイルをファイルテンプレートとして変数を代入して利用することができるようになる。
例えば。
css に${hoge}
という箇所を定義しておきシェルスクリプトでhoge=redのように定義し、
HOGEHOGE="$(envsubst < temp.css)"
とすることで、shell scriptで動的に取得した値をcssという静的ファイルに当てはめて使用することができる。このばあいHOGEHOGEに新しい動的なファイルが作成されているため、それをもとに特定のスタイルをもとにプロセスを開始することができる。
一般的な使い方
$ export GREETING=Hello
$ export YOUR_NAME=genzouw
$ envsubst < template.txt
Hello, genzouw!
genzouw's HOME is /root.