ユーザ用ツール

サイト用ツール


shell

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
shell [2013/08/02 08:15] nullponshell [2023/03/15 14:32] (現在) nullpon
行 22: 行 22:
  
 間違いの例として以下のようなものがある 間違いの例として以下のようなものがある
 +
   $ command 2>&1 >/dev/null    $ command 2>&1 >/dev/null 
 +
 これは「commandを実行、2の出力先を1(シェルの画面)と同じに、1の出力先を/dev/nullに」という意味になる。 これは「commandを実行、2の出力先を1(シェルの画面)と同じに、1の出力先を/dev/nullに」という意味になる。
  
行 30: 行 32:
  
 #リダイレクション処理 #リダイレクション処理
-# var _1 = "コンソール画面" +# var _1 = "コンソール画面へのディスクリプタ
-# var _2 = "コンソール画面" +# var _2 = "コンソール画面へのディスクリプタ
-# _1 = "/dev/null"+# _1 = File.open "/dev/null"
 # _2 = _1 # _2 = _1
 +
 #結果 #結果
-# _1 => /dev/null +# _1 => /dev/nullに書かれる 
-# _2 => /dev/null+# _2 => /dev/nullに書かれる
 </code> </code>
 +
 +間違いの例その2
 +
 +  $ command 1>a.txt 2>a.txt
 +  
 +これは意図通りに動かない。標準出力と標準エラー出力が a.txt への書き込みを行うファイルディスクリプタを別に開くのでお互いに上書きし合ってしまう。2>&1であれば既に標準出力のリダイレクト先として開いているファイルディスクリプタを標準エラーの出力先にセットするので共存可能になる。
 +
 +なお
 +
 +  $ command 1>a.txt 2>&1
 +  
 +
 +
 +  $ command &>a.txt
 +
 +または
 +
 +  $ command >&a.txt
 +
 +と書く事もできる。
  
 ===== いろいろ小技 ===== ===== いろいろ小技 =====
行 53: 行 76:
   find . -name ".svn" | xargs rm -rf   find . -name ".svn" | xargs rm -rf
  
-===== シェル変数の加工 =====+ファイルの文字列を一括置換 hoge → fuga 例 
 +  grep hoge -rl ./ | xargs sed -i.backup -e "s/hoge/fuga/g" 
 +  ag hoge -l | xargs sed -i.backup "s/hoge/fuga/g" 
 +     
 +バックアップを作らずに置換
  
-変数の値の先頭・末尾でマッチした部分を削除する +  grep hoge -rl ./ | xargs sed -i -e "s/hoge/fuga/g"  GNU 
- +  grep hoge -rl ./ | xargs sed -i "" -"s/hoge/fuga/g"  BSD 
-<code> +   
-$ 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> +
- +
-*をワイルドカードとして仕様可能、%%、##は最長マッチとなる。 +
- +
- +
-使用例:まとめてリネーム、拡張子を外す +
-<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 +
-</code>+
  
 ===== 名前付きパイプ ===== ===== 名前付きパイプ =====
行 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="^[[0;32m\h:\W \u\$^[[m " 
-  PS1="\[\e[0;32m\]\h:\W\u\$\[\e[m\] "+  PS1="\e[0;32m\h:\W \u\$\e[m "
  
 ''^['' は ^と[の組み合わせに見えるが、実際は ''Ctrl-v Ctrl-['' で入力できる1つの特殊文字。 ''^['' は ^と[の組み合わせに見えるが、実際は ''Ctrl-v Ctrl-['' で入力できる1つの特殊文字。
  
-\e[0;32m が緑色、\e[m は色指定の解除。これらは\[と\]で囲む必要がある。囲まなくても色が付くが表示がバグる+\e[0;32m が緑色、\e[m は色指定の解除。これらは\[と\]で囲む必要がある。囲まなくても色が付くが表示がバグることがあ
  
-^code^style^color^ +スタイル
-|\e[0;30m|normal|black| +
-|\e[0;31m|normal|red| +
-|\e[0;32m|normal|green| +
-|\e[0;33m|normal|yellow| +
-|\e[0;34m|normal|blue| +
-|\e[0;35m|normal|magenda| +
-|\e[0;36m|normal|cyan| +
-|\e[0;37m|normal|white| +
-|\e[1;30m|bold|black| +
-|\e[1;31m|bold|red| +
-|\e[1;32m|bold|green| +
-|\e[1;33m|bold|yellow| +
-|\e[1;34m|bold|blue| +
-|\e[1;35m|bold|magenda| +
-|\e[1;36m|bold|cyan| +
-|\e[1;37m|bold|white|+
  
 +^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|
 +
 +
 +===== エイリアス =====
 +
 +<code>
 +alias ls='ls -G'
 +</code>
 +
 +==== エイリアスを一時的に無効化 ====
 +
 +''\'' を付けて実行する
 +
 +<code>
 +\ls
 +</code>
 +
 +===== トラブルシューティング =====
 +
 +==== 行ごとに表示がずれている ====
 +
 +<code>
 +stty sane
 +</code>
shell.1375431300.txt.gz · 最終更新: 2013/08/02 08:15 by nullpon