「Bash」の版間の差分
提供: Wikinote
(→シェルスクリプト) |
(→シェルスクリプト) |
||
行15: | 行15: | ||
* <code>true</code> コマンド | * <code>true</code> コマンド | ||
* <code>:</code> コマンド | * <code>:</code> コマンド | ||
+ | |||
+ | === getopts === | ||
+ | こういう関数の使い方ってすぐ忘れるので、定型文化しておこう。 | ||
+ | GETOPT_ERR=0 | ||
+ | while getopts "i:nh" opt; do | ||
+ | case $opt in | ||
+ | i) INTERVAL=$OPTARG;; | ||
+ | n) NOPRINT=1;; | ||
+ | h) usage; exit 0;; | ||
+ | ?) GETOPT_ERR=1;; | ||
+ | esac | ||
+ | done | ||
+ | shift $(( $OPTIND - 1 )) | ||
+ | |||
+ | if [ $GETOPT_ERR -eq 1 ]; then | ||
+ | usage | ||
+ | exit 1 | ||
+ | fi | ||
== コマンド == | == コマンド == |
2009年3月17日 (火) 02:45時点における版
bash を制するものが、Linux を制す —— hagio
シェルスクリプト
- $# - 引数の個数なので、スクリプト名は含まない。
- BASH Programming - Introduction HOW-TO
無限ループ
こいつで 1 セクション作るのはどうかと思うが…、他に見出しを付ける方法がないので。
while : do command done
真を返す方法はいくつかあるが、bash 組み込みコマンド :
が一番速いと思われる。
-
test
コマンドに文字列を渡す (-n オプションは省略可能なので、文字列が渡されると必ず真が返る。) -
true
コマンド -
:
コマンド
getopts
こういう関数の使い方ってすぐ忘れるので、定型文化しておこう。
GETOPT_ERR=0 while getopts "i:nh" opt; do case $opt in i) INTERVAL=$OPTARG;; n) NOPRINT=1;; h) usage; exit 0;; ?) GETOPT_ERR=1;; esac done shift $(( $OPTIND - 1 )) if [ $GETOPT_ERR -eq 1 ]; then usage exit 1 fi
コマンド
- 行末までキル:C-k
- 行頭までキル:C-u
- 前単語をキル:C-w
- ヤンク:C-y
- 直前のコマンドの最後の引き数を挿入:M-. (これは便利)
- キャンセル:C-g
- 後方検索:C-r (これらは使い方が難しい)
- 前方検索:C-s
- 最終行へ:M-> (Poderosa では打ちにくい…)
.bashrc
カスタマイズしたものに慣れてしまうと、素の状態にすぐに適応できなくなってしまうので良くないが、 それでも背に腹は代えられないモノたち。
alias ..='cd ..' alias la='ls -a' alias ll='ls -l' # Red Hat では標準 alias lla='ls -la' alias llh='ls -lh' alias s='screen' alias grep='grep -i --color=auto' # 自動 ls function cd { builtin cd $@; ls } # Ctrl-s でのストップ機能を止める stty stop undef
起動時の設定ファイルの読み込み順序
- ログインシェルの場合 (ログイン時、su - user 時など)
-
/etc/profile
-
/etc/profile.d/*.sh
-
~/.bash_profile
-
~/.bashrc
-
/etc/bashrc
-
- ログインシェルでない場合 (bash 実行時、su user 時など)
-
~/.bashrc
-
/etc/bashrc
-
/etc/profile.d/*.sh
-
以下のコマンドで確認できる。
# strace -f -e trace=open -o su-bash.strace su - hagio
その他 (細かいこと)
-
export
は、その変数を子プロセスに引き継ぐ場合に用いる。 - Meta キーは ESC キーで代用可。(Poderosa では有用)