shell
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
shell [2013/08/02 08:15] – nullpon | shell [2023/03/15 14:32] (現在) – nullpon | ||
---|---|---|---|
行 22: | 行 22: | ||
間違いの例として以下のようなものがある | 間違いの例として以下のようなものがある | ||
+ | |||
$ command 2>&1 >/ | $ command 2>&1 >/ | ||
+ | |||
これは「commandを実行、2の出力先を1(シェルの画面)と同じに、1の出力先を/ | これは「commandを実行、2の出力先を1(シェルの画面)と同じに、1の出力先を/ | ||
行 30: | 行 32: | ||
# | # | ||
- | # var _1 = " | + | # var _1 = " |
- | # var _2 = " | + | # var _2 = " |
- | # _1 = "/ | + | # _1 = File.open |
# _2 = _1 | # _2 = _1 | ||
+ | |||
#結果 | #結果 | ||
- | # _1 => /dev/null | + | # _1 => /dev/nullに書かれる |
- | # _2 => /dev/null | + | # _2 => /dev/nullに書かれる |
</ | </ | ||
+ | |||
+ | 間違いの例その2 | ||
+ | |||
+ | $ command 1>a.txt 2>a.txt | ||
+ | | ||
+ | これは意図通りに動かない。標準出力と標準エラー出力が a.txt への書き込みを行うファイルディスクリプタを別に開くのでお互いに上書きし合ってしまう。2>& | ||
+ | |||
+ | なお | ||
+ | |||
+ | $ command 1>a.txt 2>&1 | ||
+ | | ||
+ | は | ||
+ | |||
+ | $ command &> | ||
+ | |||
+ | または | ||
+ | |||
+ | $ command >& | ||
+ | |||
+ | と書く事もできる。 | ||
===== いろいろ小技 ===== | ===== いろいろ小技 ===== | ||
行 53: | 行 76: | ||
find . -name " | find . -name " | ||
- | ===== シェル変数の加工 ===== | + | 複数ファイルの文字列を一括置換 hoge → fuga の例 |
+ | grep hoge -rl ./ | xargs sed -i.backup -e " | ||
+ | ag hoge -l | xargs sed -i.backup " | ||
+ | |||
+ | バックアップを作らずに置換 | ||
- | 変数の値の先頭・末尾でマッチした部分を削除する | + | grep hoge -rl ./ | xargs sed -i -e " |
- | + | grep hoge -rl ./ | xargs sed -i "" | |
- | < | + | |
- | $ var=hogehogefugafuga | + | |
- | + | ||
- | $ echo ${var#hoge} | + | |
- | hogefugafuga | + | |
- | + | ||
- | $ echo ${var%fuga} | + | |
- | hogehogefuga | + | |
- | + | ||
- | $ echo ${var#h*e} | + | |
- | hogefugafuga | + | |
- | + | ||
- | $ echo ${var##h*e} | + | |
- | fugafuga | + | |
- | + | ||
- | $ echo ${var%f*a} | + | |
- | hogehogefuga | + | |
- | + | ||
- | $ echo ${var%%f*a} | + | |
- | hogehoge | + | |
- | </code> | + | |
- | + | ||
- | *をワイルドカードとして仕様可能、%%、## | + | |
- | + | ||
- | + | ||
- | 使用例:まとめてリネーム、拡張子を外す | + | |
- | < | + | |
- | $ ls | + | |
- | a.php.txt b.php.txt c.php.txt | + | |
- | + | ||
- | $ for i in `ls`; do mv $i ${i%.txt}; done | + | |
- | + | ||
- | $ls | + | |
- | a.php b.php c.php | + | |
- | </ | + | |
===== 名前付きパイプ ===== | ===== 名前付きパイプ ===== | ||
行 123: | 行 117: | ||
$ vi <(git blame hogehoge) | $ vi <(git blame hogehoge) | ||
- | ===== シェルスクリプト ===== | ||
- | ==== 演算子 ==== | ||
- | * -e ファイルが存在すればtrue | ||
- | * -f 通常ファイルならtrue | ||
- | * -d ディレクトリならtrue | ||
- | * -L シンボリックリンクならtrue | ||
- | * -r 読み込み可能ならtrue | ||
- | * -w 書き込み可能ならtrue | ||
- | * -x 実行可能ファイルならtrue | ||
- | |||
- | * -z 文字列長が0ならtrue | ||
- | * -n 文字列長が0でなければtrue | ||
- | |||
- | ==== read ==== | ||
- | 標準入力から1行読み取る | ||
- | read line | ||
- | echo $line | ||
- | | ||
- | 標準入力が尽きるまで行を読み取る | ||
- | while read line | ||
- | do | ||
- | echo $line | ||
- | done | ||
- | | ||
- | ファイルから行を読み込みする | ||
- | while read line | ||
- | do | ||
- | echo $line | ||
- | done < hoge.txt | ||
- | | ||
- | ヒアドキュメントから行を読み込みする | ||
- | while read line | ||
- | do | ||
- | echo $line | ||
- | done << EOS | ||
- | 1 | ||
- | 2 | ||
- | 3 | ||
- | EOS | ||
===== プロンプトのカスタマイズ ===== | ===== プロンプトのカスタマイズ ===== | ||
行 172: | 行 127: | ||
色付け。以下のいずれか | 色付け。以下のいずれか | ||
- | PS1="\[^[[0;32m\]\h:\W\ \u\$\[^[[m\] " | + | PS1=" |
- | PS1="\[\e[0;32m\]\h:\W\ \u\$\[\e[m\] " | + | PS1=" |
'' | '' | ||
- | \e[0;32m が緑色、\e[m は色指定の解除。これらは\[と\]で囲む必要がある。囲まなくても色が付くが表示がバグる | + | \e[0;32m が緑色、\e[m は色指定の解除。これらは\[と\]で囲む必要がある。囲まなくても色が付くが表示がバグることがある |
- | ^code^style^color^ | + | スタイル |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[0; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
- | |\e[1; | + | |
+ | ^code^style^ | ||
+ | |0|normal| | ||
+ | |1|bold| | ||
+ | |4|underline| | ||
+ | |5|blink| | ||
+ | |7|reverse| | ||
+ | |8|hidden| | ||
+ | |||
+ | 色 | ||
+ | |||
+ | ^code^color^ | ||
+ | |30|black| | ||
+ | |31|red| | ||
+ | |32|green| | ||
+ | |33|yellow| | ||
+ | |34|blue| | ||
+ | |35|magenta| | ||
+ | |36|cyan| | ||
+ | |37|light grey| | ||
+ | |90|dark grey| | ||
+ | |91|light red| | ||
+ | |92|light green| | ||
+ | |93|light yellow| | ||
+ | |94|light blue| | ||
+ | |95|light magenta| | ||
+ | |96|light cyan| | ||
+ | |97|white| | ||
+ | |||
+ | 背景色 | ||
+ | |||
+ | ^code^color^ | ||
+ | |40|black| | ||
+ | |41|red| | ||
+ | |42|green| | ||
+ | |43|yellow| | ||
+ | |44|blue| | ||
+ | |45|magenta| | ||
+ | |46|cyan| | ||
+ | |47|light grey| | ||
+ | |100|dark grey| | ||
+ | |101|light red| | ||
+ | |102|light green| | ||
+ | |103|light yellow| | ||
+ | |104|light blue| | ||
+ | |105|light magenta| | ||
+ | |106|light cyan| | ||
+ | |107|white| | ||
+ | |||
+ | |||
+ | ===== エイリアス ===== | ||
+ | |||
+ | < | ||
+ | alias ls='ls -G' | ||
+ | </ | ||
+ | |||
+ | ==== エイリアスを一時的に無効化 ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | < | ||
+ | \ls | ||
+ | </ | ||
+ | |||
+ | ===== トラブルシューティング ===== | ||
+ | |||
+ | ==== 行ごとに表示がずれている ==== | ||
+ | |||
+ | < | ||
+ | stty sane | ||
+ | </ |
shell.1375431300.txt.gz · 最終更新: 2013/08/02 08:15 by nullpon