シェルスクリプト / Bash プログラミング
変数
制御構文
起動時の処理
- コマンドライン引数を取得する (
$1
,$@
,$*
) - コマンドライン引数の数が正しいかチェックする (
$#
) - 名前付きのコマンドラインオプションを扱う (
getopts
) - ある環境変数が定義されているかチェックする (
test -z
) - ある外部コマンドが使用できるかチェックする (
type -P
)
関数
パス
- 絶対パスと相対パスの変換 (basename, dirname)
- 指定したファイルの絶対パスを取得する
- カレントディレクトリの絶対パスを取得する
- 実行中のシェルスクリプトのファイル名を取得する
- 実行中のシェルスクリプトがあるディレクトリの絶対パスを取得する
- 実行中のシェルスクリプトがあるディレクトリに移動する
入出力 (I/O)
- echo の結果を標準エラー出力 (stderr) に出力する (
1>&2
) - echo で出力した文字列の中の連続するスペースが 1 つのスペースになってしまうのを防ぐ
- echo で出力する文字の色を変える
- ユーザ入力を取得する (
read
) - ディレクトリ内のファイルを順に処理する (
for
,while
) - 外部コマンドの実行結果を 1 行ずつ処理する (
for
,while
,read
) - テキストファイルを 1 行ずつ読み込む (
read
) - expect で外部コマンドの出力を待機する
日時
トラブルシューティング
D-Bus
D-Bus 全般
dbus-glib
- dbus-glib 開発用ライブラリをインストールする
- dbus-glib で method call を実装する(ヘッダファイルの生成)
- dbus-glib で method call を実装する(サーバ側の実装)
- dbus-glib で method call を実装する(クライアント側の実装)
GDBubs
- GDBus で簡単な P2P(クライアント&サーバ)アプリを実装する
- GDBus サーバから signal を発行する
- GDBus でバイナリデータ(バイト配列)を受け取る方法
- glib の GVariant を使ってみる
D-Bus Java
- D-Bus Java をインストールする
- D-Bus Java で Session bus に接続してメソッドを呼び出す
- D-Bus Java で P2P D-Bus サーバに接続してメソッドを呼び出すサンプル
dbus-python
- dbus-python の公式サンプルコード
- dbus-python で Session bus を使用するサーバ&クライアントを実装する(単純なメソッドの実装)
- dbus-python で Session bus を使用するサーバ&クライアントを実装する(シグナルの実装)
- dbus-python で D-Bus の P2P クライアントを実装する
Linux システム/管理
コマンド
- Linux カーネル/OS のバージョンを調べる
- bash のバージョンを調べる ($BASH_VERSION)
- Linux の各種 ID(プロセス ID やユーザ ID など)についてのメモ
- カーネルに渡されたパラメータを調べる (/proc/cmdline)
- Linux のメモリ情報を調べるコマンド
- NTP でシステム時刻を設定する
- ディレクトリ内のファイルを zip ファイルにバックアップする
- Deep Learning や仮想通貨のマイニング時に CPU 使用率が 100% になってしまうのを防ぐ (cpulimit)
プログラミング
Linux コマンド全般
- Linuxコマンド: ファイルやディレクトリを検索する (find, grep)
- Windows で Linux 系のコマンドを使用できるようにする (Gow)
- rsync コマンドでディレクトリを同期する
- 行番号付きでテキストファイルの内容を出力する (cat -b)
- あるファイルがテキストファイルかどうか調べる (file)
- リダイレクトとパイプ処理のまとめ
- Linux でリダイレクトによってファイルが上書きされてしまうのを防ぐ
- ls コマンドが使えないときに echo コマンドで代用する
- いずれかの文字列を含むファイルだけを列挙する