bash

「bash」の編集履歴(バックアップ)一覧はこちら

bash」(2011/03/04 (金) 03:56:43) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

[http://x68000.q-e-d.net/~68user/unix/genre.html#genre1 ジャンル別UNIXコマンド一覧] システムコールなどの解説もあり。 [http://www.c.csce.kyushu-u.ac.jp/~seiichirou/wiki/index.php?bash%2Cawk%2Csed (九大) bash,awk,sed スキルアップ輪講] [http://www15.wind.ne.jp/~ray7/linux/basic.htm Linux便利帳] sh は bash csh は違う系列 ---- == 3つのクオーテーション == "$var" : 無くても変わらない。スペースを含むときに1つの文字列として認識させるのに使う。 '$var' : メタキャラクタとか変数指定子$の働きを殺す。 `ls -a` : コマンドを囲んで,その出力を値に持つ。パイプでは対応できない複雑な引数のときに活躍。 '''Ex. ''' バッククオーテーションは grep などと連携して威力無限大 > tar hoge.tar.gz `ls -F | egrep [^*/~]` == メタキャラクタ == *の役割が正規表現と違うので注意! * : 任意文字列 ? : 任意1文字 [a-z] : 指定された中から任意の1文字 {hoge,hage,tako} : 指定された文字列の中から任意のどれか == 正規表現 == sed, grep, perl, ruby などで使用 * は,直前の文字の0回以上の繰り返しになる。 ^ : 行頭 $ : 行末 [...] : いずれか1文字 [^...] : 禁止文字 '''or検索''' grep "one|two|three" grep -e "one" -e "two" -e "three" '''マッチしたものを表示しない''' grep -v ".eps$|.o$|~$" ---- == 所有者と権限 == '''所有者とパーミッションの表示''' > ls -l '''実行パーミッション''' > chmod 755 <hoge> '''所有者の変更''' > chown owner_name file_name > chown -R owner_name dir_name ---- == プロセス管理 == ジョブというのは,例えばパイプとかでつないで1機能をなしているプロセスのまとまりのこと。 ^Z による中断とか,& 付きの実行とかは,要するに bg してることになる。 ===間違って ^Z で Suspended してしまったのを復活させたい。=== > ^Z # 中断 > jobs # まず落ち着いてジョブの番号を調べる。 [1] - Suspended ほげほげ [2] + Suspended (tty output) emacs なんとか '''思い切って殺す''' > kill %2 '''復活させる''' > fg %1 ---- == シェルスクリプトを通常のプログラムのように実行させる == '''hoge.sh''' > #!/bin/sh ←スクリプトを実行するプログラムのパスを書いておく。 > (スクリプト) '''実行方法''' > chmod u+x hoge.sh ←実行属性を付ける。 > ./hoge.sh '''Cf. ''' コマンドから実行するときは #! も chmod も不要。 > sh hoge.sh のみでおk ---- == 変数 == '''代入''' > var=val '''参照''' > echo $var 実際には,$ は変数の内容で'''置き換える'''演算子 '''スクリプト実行時にもらった変数''' $1,$2,...で指定できる。 '''ちょっと削る''' fpath=foo/var/baz echo ${fpath%/*} -> 後ろから match する min 部分を削る。 -> foo/var echo ${fpath%%/*} -> 後ろから match する max 部分を削る。 -> foo echo ${fpath#*/} -> 前から match する min 部分を削る。 -> var/baz echo ${fpath##*/} -> 前から match する max 部分を削る。 -> baz ---- == 制御 == 改行はむやみやたらに入れられない。セミコロンで置き換えられる。 機能語との間のスペースも必ず「1つ」必要なので注意! '''if文''' > if <式> > then <なにがし> > else <それがし> > fi '''Ex. ディレクトリが無ければ作る''' > if [ ! -d hoge/hage]; then mkdir -p hoge/hage; fi '''for文''' for <target> in <list> do <command> done '''Ex. .txt を .doc に一括変更''' > for file in *.txt; do > mv $file ${file%.txt}.doc; # %なんとか ってのは,マッチした尻を削る命令 > done '''注. ファイル名の一括変更はコマンド一発''' > rename *.txt *.doc == 一括操作 == '''階層ディレクトリおっぴろげ''' > ls -R '''複数の下位ディレクトリに散在する cpp と hpp から検索''' > grep hoge */*pp '''hoge.* を hage.* に変える。''' for F in *; do mv $F ${F/hoge/hage}; done ←${変数名/置換対象/置換文字列}の順番 '''複数ファイルに含まれる文字列 hoge を hage に置換''' 1. grep hoge *pp で確認 2. for F in *; do cp $F $F.bak; sed -e "s/hoge/hage/g" $F.bak > $F; done (.bakはあとで消す。.bak を経由しないと上手くいかなかった!) ---- == 印刷 == 片面白黒(標準) lpr lpr -Pps1 両面白黒 lpr -Pps1d lpr -C,dup 両面白黒 短辺綴じ lpr -Pps1t lpr -C,dup,tumble 片面カラー lpr -Pcps1 両面カラー lpr -Pcps1d lpr -Pcps1-duplex 両面カラー 短辺綴じ lpr -Pcps1t == マウント == マウントしたらアンマウントを忘れずに! > umount/mnt/hoge ===CD/DVD=== ===HDD(IDE devices)=== > mount /dev/hdb1 /mnt/hdd ===Image(.iso)=== > mount -o loop ***.iso /mnt/image > cd /mnt/image ====== ---- == アーカイブ == === 圧縮 === > tar zcvf hoge.tar.gz (圧縮するターゲット列挙) > zip hoge.zip (圧縮するターゲット列挙) ===解凍=== tar の解凍先はデフォルトでカレントディレクトリなので、 1. 解凍したい場所に移動してからファイルを指定する。 2. -C <解凍先> オプションを漬ける。 > tar zxvf hoge.''tar.gz'' > bzip2 -dc hoge.''bz2'' > unzip hoge.''zip'' > tar jxvf hoge.''tar.bz2'' > lha e hoge.''lzh'' ---- == ファイル操作 == '''ファイルの種類を調べる。''' > file hoge '''ファイルの詳細な情報を調べる。''' > stat hoge '''登録されているコマンドのパスを調べる。''' > which hoge ---- == ネットワーク == 誰が入ってるか見る who == cygwinから入る == > startx してから入る === sshで接続 === > ssh [ユーザ名]@むにゃむにゃ > ( login ) > ruptime で空いてるマシン確認 > ssh [マシン名] で入る > ( 作業ディレクトリに移動 ) > screen に入ることを忘れずに! === 自宅からうp === ssh でリモートに入ってしまわないこと! > scp [ローカルのファイル] [ユーザ名]@[アドレス]:[コピー先のファイル名] ---- == 入出力 == === redirection === 入出力先を変えること。 '''tako.txtに出力''' > ./a.out > tako.txt > ./a.out >> tako.txt # こっちは追加モード '''hage.datから入力''' > ./a.out < hage.dat '''応用. ファイルコピー''' > cat < original.txt > copy.txt '''標準エラー出力先の変更''' > ./a.out 2> err.log '''STDOUTとSTDERRを同じファイルに出力''' > ./a.out &> output.log === pipe === 左から順に実行される。 左からの出力を右の入力に渡していく。 > command1 | command2 | command3 | ... ---- '''現在地を表示''' > pwd === 時間計測 === > time <command> real : 実行にかかった実時間 user : ユーザーモードだった時間(種々の演算やメモリアクセス) sys : カーネルモードだった時間(システムコール) rem. real = user + sys + ディスクI/Oの時間 ---- ===情報の表示=== '''画面描画の詳細を表示''' > xrandr '''Xの設定を表示''' > cat /etc/X11/xorg.conf システムの構成が分かる。 '''メモリ使用状況を表示''' > free > top (リアルタイム) '''現在ログインしている人を表示''' > who '''カレントディレクトリのアドレスを表示''' > pwd '''CPUの情報を表示''' > cat /proc/cpuinfo ( /proc/ には,他にも meminfo などがある。) '''ホスト名を表示''' > hostname '''IPアドレスを調べる''' > ifconfig '''システムの情報を表示''' > dmesg '''カーネルの情報を表示''' > uname -a '''デバイスの情報を調べる''' > lspci ←PCIの情報 > lsusb ←USBの情報 ==インストール== ===yum=== > yum install hogehoge ===sourceからインストール=== > ./configure --prefix=/usr/local; make; su > make install ===パスを通す=== ~/.bashrc を書き換える。 '''一時的な方法''' > export PATH=/usr/local/hoge:$PATH '''全ユーザーに適用''' /etc/profile.d/hoge.sh を作る。 '''ライブラリパスは別に作る''' > export LD_LIBRARY_PATH=/usr/local/lib ===オリジナルコマンド=== > alias hoge='echo "hage"' > hoge → hage .bashrc にでも書けば毎回使える。
[http://x68000.q-e-d.net/~68user/unix/genre.html#genre1 ジャンル別UNIXコマンド一覧] システムコールなどの解説もあり。 [http://www.c.csce.kyushu-u.ac.jp/~seiichirou/wiki/index.php?bash%2Cawk%2Csed (九大) bash,awk,sed スキルアップ輪講] [http://www15.wind.ne.jp/~ray7/linux/basic.htm Linux便利帳] sh は bash csh は違う系列 ---- == 3つのクオーテーション == "$var" : 無くても変わらない。スペースを含むときに1つの文字列として認識させるのに使う。 '$var' : メタキャラクタとか変数指定子$の働きを殺す。 `ls -a` : コマンドを囲んで,その出力を値に持つ。パイプでは対応できない複雑な引数のときに活躍。 '''Ex. ''' バッククオーテーションは grep などと連携して威力無限大 > tar hoge.tar.gz `ls -F | egrep [^*/~]` == メタキャラクタ == *の役割が正規表現と違うので注意! * : 任意文字列 ? : 任意1文字 [a-z] : 指定された中から任意の1文字 {hoge,hage,tako} : 指定された文字列の中から任意のどれか == 正規表現 == sed, grep, perl, ruby などで使用 * は,直前の文字の0回以上の繰り返しになる。 ^ : 行頭 $ : 行末 [...] : いずれか1文字 [^...] : 禁止文字 '''or検索''' grep "one|two|three" grep -e "one" -e "two" -e "three" '''マッチしたものを表示しない''' grep -v ".eps$|.o$|~$" ---- == 所有者と権限 == '''所有者とパーミッションの表示''' > ls -l '''実行パーミッション''' > chmod 755 <hoge> '''所有者の変更''' > chown owner_name file_name > chown -R owner_name dir_name ---- == プロセス管理 == ジョブというのは,例えばパイプとかでつないで1機能をなしているプロセスのまとまりのこと。 ^Z による中断とか,& 付きの実行とかは,要するに bg してることになる。 ===間違って ^Z で Suspended してしまったのを復活させたい。=== > ^Z # 中断 > jobs # まず落ち着いてジョブの番号を調べる。 [1] - Suspended ほげほげ [2] + Suspended (tty output) emacs なんとか '''思い切って殺す''' > kill %2 '''復活させる''' > fg %1 ---- == シェルスクリプトを通常のプログラムのように実行させる == '''hoge.sh''' > #!/bin/sh ←スクリプトを実行するプログラムのパスを書いておく。 > (スクリプト) '''実行方法''' > chmod u+x hoge.sh ←実行属性を付ける。 > ./hoge.sh '''Cf. ''' コマンドから実行するときは #! も chmod も不要。 > sh hoge.sh のみでおk ---- == 変数 == '''代入''' > var=val '''参照''' > echo $var 実際には,$ は変数の内容で'''置き換える'''演算子 '''スクリプト実行時にもらった変数''' $1,$2,...で指定できる。 '''ちょっと削る''' fpath=foo/var/baz echo ${fpath%/*} -> 後ろから match する min 部分を削る。 -> foo/var echo ${fpath%%/*} -> 後ろから match する max 部分を削る。 -> foo echo ${fpath#*/} -> 前から match する min 部分を削る。 -> var/baz echo ${fpath##*/} -> 前から match する max 部分を削る。 -> baz ---- == 制御 == 改行はむやみやたらに入れられない。セミコロンで置き換えられる。 機能語との間のスペースも必ず「1つ」必要なので注意! '''if文''' > if <式> > then <なにがし> > else <それがし> > fi '''Ex. ディレクトリが無ければ作る''' > if [ ! -d hoge/hage]; then mkdir -p hoge/hage; fi '''for文''' for <target> in <list> do <command> done '''Ex. .txt を .doc に一括変更''' > for file in *.txt; do > mv $file ${file%.txt}.doc; # %なんとか ってのは,マッチした尻を削る命令 > done '''注. ファイル名の一括変更はコマンド一発''' > rename *.txt *.doc == 一括操作 == '''階層ディレクトリおっぴろげ''' > ls -R '''複数の下位ディレクトリに散在する cpp と hpp から検索''' > grep hoge */*pp '''hoge.* を hage.* に変える。''' for F in *; do mv $F ${F/hoge/hage}; done ←${変数名/置換対象/置換文字列}の順番 '''複数ファイルに含まれる文字列 hoge を hage に置換''' 1. grep hoge *pp で確認 2. for F in *; do cp $F $F.bak; sed -e "s/hoge/hage/g" $F.bak > $F; done (.bakはあとで消す。.bak を経由しないと上手くいかなかった!) ---- == 印刷 == 片面白黒(標準) lpr lpr -Pps1 両面白黒 lpr -Pps1d lpr -C,dup 両面白黒 短辺綴じ lpr -Pps1t lpr -C,dup,tumble 片面カラー lpr -Pcps1 両面カラー lpr -Pcps1d lpr -Pcps1-duplex 両面カラー 短辺綴じ lpr -Pcps1t == マウント == マウントしたらアンマウントを忘れずに! > umount/mnt/hoge ===CD/DVD=== ===HDD(IDE devices)=== > mount /dev/hdb1 /mnt/hdd ===Image(.iso)=== > mount -o loop ***.iso /mnt/image > cd /mnt/image ====== ---- == アーカイブ == === 圧縮 === > tar zcvf hoge.tar.gz (圧縮するターゲット列挙) > zip hoge.zip (圧縮するターゲット列挙) ===解凍=== tar の解凍先はデフォルトでカレントディレクトリなので、 1. 解凍したい場所に移動してからファイルを指定する。 2. -C <解凍先> オプションを漬ける。 > tar zxvf hoge.''tar.gz'' > bzip2 -dc hoge.''bz2'' > unzip hoge.''zip'' > tar jxvf hoge.''tar.bz2'' > lha e hoge.''lzh'' ---- == ファイル操作 == '''ファイルの種類を調べる。''' > file hoge '''ファイルの詳細な情報を調べる。''' > stat hoge '''登録されているコマンドのパスを調べる。''' > which hoge == 画像フォーマット変換 == Imagemagicを使う。ただしコマンド名は convert '''Ex. epsをpngに変換''' > convert hoge.eps hage.png 詳しくは[http://www.proton.jp/main/apps/imagemagick.html ココ]など参照 ---- == ネットワーク == 誰が入ってるか見る who == cygwinから入る == > startx してから入る === sshで接続 === > ssh [ユーザ名]@むにゃむにゃ > ( login ) > ruptime で空いてるマシン確認 > ssh [マシン名] で入る > ( 作業ディレクトリに移動 ) > screen に入ることを忘れずに! === 自宅からうp === ssh でリモートに入ってしまわないこと! > scp [ローカルのファイル] [ユーザ名]@[アドレス]:[コピー先のファイル名] ---- == 入出力 == === redirection === 入出力先を変えること。 '''tako.txtに出力''' > ./a.out > tako.txt > ./a.out >> tako.txt # こっちは追加モード '''hage.datから入力''' > ./a.out < hage.dat '''応用. ファイルコピー''' > cat < original.txt > copy.txt '''標準エラー出力先の変更''' > ./a.out 2> err.log '''STDOUTとSTDERRを同じファイルに出力''' > ./a.out &> output.log === pipe === 左から順に実行される。 左からの出力を右の入力に渡していく。 > command1 | command2 | command3 | ... ---- '''現在地を表示''' > pwd === 時間計測 === > time <command> real : 実行にかかった実時間 user : ユーザーモードだった時間(種々の演算やメモリアクセス) sys : カーネルモードだった時間(システムコール) rem. real = user + sys + ディスクI/Oの時間 ---- ===情報の表示=== '''画面描画の詳細を表示''' > xrandr '''Xの設定を表示''' > cat /etc/X11/xorg.conf システムの構成が分かる。 '''メモリ使用状況を表示''' > free > top (リアルタイム) '''現在ログインしている人を表示''' > who '''カレントディレクトリのアドレスを表示''' > pwd '''CPUの情報を表示''' > cat /proc/cpuinfo ( /proc/ には,他にも meminfo などがある。) '''ホスト名を表示''' > hostname '''IPアドレスを調べる''' > ifconfig '''システムの情報を表示''' > dmesg '''カーネルの情報を表示''' > uname -a '''デバイスの情報を調べる''' > lspci ←PCIの情報 > lsusb ←USBの情報 ==インストール== ===yum=== > yum install hogehoge ===sourceからインストール=== > ./configure --prefix=/usr/local; make; su > make install ===パスを通す=== ~/.bashrc を書き換える。 '''一時的な方法''' > export PATH=/usr/local/hoge:$PATH '''全ユーザーに適用''' /etc/profile.d/hoge.sh を作る。 '''ライブラリパスは別に作る''' > export LD_LIBRARY_PATH=/usr/local/lib ===オリジナルコマンドを作る=== > alias hoge='echo "hage"' > hoge → hage .bashrc にでも書けば毎回使える。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。