bash

ジャンル別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
ツールボックス

下から選んでください:

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