ジャンル別UNIXコマンド一覧 システムコールなどの解説もあり。
(九大) bash,awk,sed スキルアップ輪講
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
詳しくはココなど参照
ネットワーク
誰が入ってるか見る
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 にでも書けば毎回使える。
最終更新:2011年03月04日 03:56