内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
•
sastruts
shell
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Shell ====== Bシェル系、Cシェルは知らん。 ===== 操作 ===== * Ctrl-A カーソルを先頭に移動 * Ctrl-E カーソルを末尾に移動 * Ctrl-Z 中断(fgまたはbgで再開) * Ctrl-R コマンド履歴検索 * Ctrl-C fgプロセスにinterrupt * Ctrl-D stdinからの入力を終了 バックグラウンドで実行 <code> $ command & </code> fgでフォアグラウンドに移動、Ctrl-Zで中断、bgでバックグラウンド実行に移動 ===== リダイレクション ===== コマンド実行時の標準出力と標準エラー出力は、いずれもディスプレイ(コンソール画面)。出力先を切り替えるには > を使う $ command 1>/dev/null 2>&1 「commandを実行、1(標準出力)の出力先を/dev/nullに、2(エラー出力)の出力先を1と同じに」という意味。 間違いの例として以下のようなものがある $ command 2>&1 >/dev/null これは「commandを実行、2の出力先を1(シェルの画面)と同じに、1の出力先を/dev/nullに」という意味になる。 1と2を変数だと思えば分かりやすい。 <code> $ command 1>/dev/null 2>&1 #リダイレクション処理 # var _1 = "コンソール画面へのディスクリプタ" # var _2 = "コンソール画面へのディスクリプタ" # _1 = File.open "/dev/null" # _2 = _1 #結果 # _1 => /dev/nullに書かれる # _2 => /dev/nullに書かれる </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 と書く事もできる。 ===== いろいろ小技 ===== ImageMagicでフォルダ内の画像を全部処理 for i in *; do convert ${i} -resize x130 "x_${i}"; done 空白の入ったファイル名も上手い事やってくれるようにする find * -maxdepth 0 -print0 | xargs -0 -i convert {} -resize x130 "x_{}" # 引数の場所指定 指定の文字列を持つファイルを探す grep Hogehoge -nrH ./lib .svnフォルダを削除 find . -name ".svn" -exec 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 "" -e "s/hoge/fuga/g" # BSD ===== 名前付きパイプ ===== ファイルシステム上の特殊なファイルを介してプロセス間で入出力をやり取りすることができる。 シェルセッション1で以下を実行し、標準入力に適当な値を入力(Ctrl-Dで終了) <code> $ mkfifo /tmp/foobar $ while read line; do echo $line; done > /tmp/foobar hogehoge fugafuga </code> シェルセッション2で以下を実行すると、シェルセッション1で入力した結果を受け取れる。シェルセッション1側でCtrl-DするとEOFが送られてcatコマンドが終了する。 <code> $ cat /tmp/foobar hogehoge fugafuga </code> 名前付きパイプを使い終わったらrmで破棄 $ rm /tmp/foobar 普通のファイル感覚で使用すればよい ===== プロセス置換 ===== あるプロセスの標準入出力をファイルのように扱う。標準入出力でデータを受け取れないコマンドでも一時ファイルが要らなくなる $ vi <(git blame hogehoge) ===== プロンプトのカスタマイズ ===== PS1という変数にフォーマットを入れる PS1="\h:\W \u\$ " 色付け。以下のいずれか PS1="^[[0;32m\h:\W \u\$^[[m " PS1="\e[0;32m\h:\W \u\$\e[m " ''^['' は ^と[の組み合わせに見えるが、実際は ''Ctrl-v Ctrl-['' で入力できる1つの特殊文字。 \e[0;32m が緑色、\e[m は色指定の解除。これらは\[と\]で囲む必要がある。囲まなくても色が付くが表示がバグることがある スタイル ^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.txt
· 最終更新: 2023/03/15 14:32 by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ