Linux入門

S. Fushinobu

以前から公開していた、IRIX用のメモをLinux用に手直してみました。X線結晶構造解析をするときに必要なこと、便利なことを中心に、最低限の内容を書いておきます。これを手直しした時点ではFedora Core 4 - 6あたりを使ってます。

Linuxに関する解説はここここ(堀田さんの「ネットワーク管理者(の卵)養成講座」より)がいいみたいです。


基本 →TOP

UNIXコマンドの基本
コマンド名、オプション(-の後につける)、ファイル名などをスペースで区切って入力、リターンで開始。
man hogehoge
hogehogeというコマンドのマニュアルを表示する。これを必死で読めば、ここに書いてあることなんか読む必要はない。でも、普通、何が書いてあるのかよく分からない。MANualの略。
passwd
パスワードの変更を行う。
su
suだけやるとrootスーパーユーザとして再ログインsu -l usernameユーザーでも再ログインできる
sudo
rootあるいは別のユーザ権限その後のcommand実行


ファイル/ディレクトリ関係 →TOP

ls
ファイル名の一覧を表示する。ls dirname で、dirnameというディレクトリの中のファイル一覧を表示する。いろんなオプションがある(man lsとしてみましょう)
ls -a : 普段は表示されない、"."(ピリオド)で始まるファイルも表示される。
ls -l : もっと詳しい情報(属性・パーミッション)が表示される。
drwxrwxr-x 2 fushi user 9 Jul 28 21:35 dirname/
-rw-rw-r-- 1 fushi user 0 Jul 28 21:36 open.txt
-rwxrwxr-x 1 fushi user 0 Jul 28 21:36 script.sh*
-rw--w---- 1 fushi user 0 Jul 28 21:36 secret.txt
最初の1文字は、ディレクトリか否か
次の3文字は、自分が読める/書ける/実行できるか
次の3文字は、同じグループのユーザが読める/書ける/実行できるか
次の3文字は、全てのユーザが読める/書ける/実行できるか
ls -F : ファイルネームの後に、ディレクトリなら"/"を、実行できるファイルならば、"*"を付けて表示する。
デフォルトでalias設定するもいるLiStの略だと言われている。
ls -t : 更新された時間の順に表示する。
chmod
ファイルの属性(パーミッション)を変更する。
sample.shの実行パーミッションを切るには、
chmod +x sample.sh
secret.txtが同じグループおよび全てのユーザから見れないようにするには、
chmod go-r secret.txt
つまり、
chmod [-R] [ugo]{+|-}[rwx] file ...
ってこと。-R をつけるとその下のディレクトリのファイルもイッペンに変えてくれる。
chown
ファイル/ディレクトリownerを変更する。
-R
オプション使える
chgrp
ファイル/ディレクトリgroupを変更する。
-R
オプション使える
cd dirname
dirnameというディレクトリに移動する。
cd
だけを入力すると、最初に入るディレクトリ(/usr/people/username)に戻る。
Change Directoryの略。
初心者は、cdコマンドの直後に必ずlsコマンド打つようにすると自分がどこにいるか分かるはず。
pwd
自分の今いるディレクトリを表示どこにいるか迷ったら迷わず打つPrint Working Directoryの略。
mkdir dirname
dirnameというディレクトリを作る。MaKe DIRectoryの略。
rmdir dirname
dirnameというディレクトリを削除する中身があると消せないReMove DIRectoryの略。
cp source dist
sourceというファイルをコピーする。
distというディレクトリがあれば、そのディレクトリの中にコピーする。
distというファイルがあれば、そのファイルを上書きする(警告が出る場合もある)
distというファイルもディレクトリもなければ、distというファイルを新しく作る。
CoPyの略。
cp -r dirname1 dirname2
dirname1というディレクトリ全体をコピーする。
mv source dist
ファイル名の変更、またはファイルの移動に用いる。
つまり、sourceというファイル/ディレクトリを、(1)distというディレクトリに移動する、または(2)distという名前に変更する。
distというディレクトリがあれば、そのディレクトリの中に移動する。
distというファイルもディレクトリもなければ、sourceという名前をdistに変更する。
MoVeの略。
rm hogehoge
hogehogeというファイル/ディレクトリを削除する。ReMoveの略。
rm -r dirname
dirnameというディレクトリ全体を削除する。危険。
:ln -s /usr/xtal/usf/bin/lx_moleman /usr/local/bin/moleman
ファイル/ディレクトリの絶対パス指定
/usr/people/username/filename
のように、最初の"/"から指定することを絶対パス指定という。
ファイル/ディレクトリの相対パス指定
".."(ピリオド2つ)は一つ上のディレクトリ
/usr/people/user1/
で、 ../user2/file と指定すると、
/usr/people/user2/file
を指定することになる。
../../xtalとすると、
/usr/xtal
のことになる。

"."(ピリオド1つ)は今いるディレクトリ

cp /usr2/people/hogehoge/file .
とやると、今いるディレクトリにコピーしてくることになる。
ln -s hogehoge linkfile
シンボリックリンクいわゆるエイリアス作る。hogehogeという実体のあるファイルから、linkfileという空っぽファイルへのシンボリックリンクと、linkfileアクセスするとあたかもhogehoge直接アクセスしているようになる。ls -lしてlinkfile見てみるとなんとなく理解出来るはず


閲覧/編集 →TOP

gedit
テキストファイルを編集する(GNOME使っている場合)。gedit hogehogeとすると、hogehogeという新しいファイルを作る。
vi
emacs
nedit
他にもこんなテキストファイルエディタある。お好きなのを使って下さい。vi最も基本的なテキストエディタ使い方ちょっと特殊(vi filenameで起動、hjklまたはカーソルキーで移動、aまたはiで入力モード入る、ESCで入力モード出る、ddで1行削除、ZZで書き出して終了)
less hogehoge
hogehogeという名前のテキストファイルの中身を見る。元々画面収まりきらないファイルを閲覧するためにmoreという標準コマンドあって、これはその拡張版geditとかを用いてもよいが、書き込んではいけない時には注意すること。
とても沢山機能があるが、は、以下のコマンドぐらいしか使ってません。
スペース:1ページ先に送る
b: 1ページ前に戻る
リターン:1行先に送る
y : 1行前に戻る
g : ファイルの一番最初に戻る
G : ファイルの一番最後に進む
/hogehoge :  hogehogeという文字列を検索する
n : 次の検索文字列まで進む
N : 一つ前の検索文字列まで戻る
h : ヘルプを表示する
q : less を終了する
head -数 hogehoge
hogehogeというファイルの最初の「数」行だけ表示する。数を指定しないと、10行だけ表示する。
例: head -3 hogehoge.
sca
とすると、
scaファイルの最初の行を表示してくれるので便利
tail -数 hogehoge
同様に、hogehogeというファイルの最後の数行を表示する。
例: tail -22 hogehoge01.x
とすると、
HKL2000の.xファイルのいろんなパラメータが書き込まれている最後の22行を表示してくれるので便利
tail -99f hogehoge.out
とすると、出力されてくる内容をfollowして、次々と表示してくれる。hogehoge.outを出力しているプロセスが終了したら、もう何も出てこなくなるので、Ctrl+cで抜けること。
cat hogehoge1
hogehogeという名前のテキストファイル中身をそのまんま表示する画面収まらないファイル流れて行ってしまうので、lessかmore使うでは、catどんな時に使うかというと。。
cat hogehoge1 >> hogehoge2
hogehoge1というファイルをhogehoge2後ろつなげて書き出すあるいは、パイプ後述使ってgrepなど他のコマンド渡す時に用いる


ファイルサイズとディスク容量関係 →TOP

df -k
ディスクの容量が分かる。nfs(ネットワークファイルシステム:ネットワーク上のマシンのHDDを自分のマシン上の)でつながってるディスクの内容も分かる。Disk/Filesystemの略?
du -ks dirname1 dirname2 ...
ディレクトリの使用しているディスク容量が分かる。
/usr/people
で、
du -ks username1 username2 username3 ...
とやると、誰がディスク容量を一番食ってるのか分かるので、
便利Disk Usageの略?
compress hogehoge
ファイルを圧縮して、hogehoge.Z というファイルにする。
uncompress hogehoge.Z
.Zファイルを解凍して、hogehogeというファイルに戻す。
gzip hogehoge
ファイルを圧縮して、hogehoge.gzというファイルにする。compressよりも圧縮率が高いが、このコマンドがない場合もある。Gnuのzipという意味。
gunzip hogehoge.gz
.gzファイルを解凍して、hogehogeというファイルに戻す。Gnuのunzipという意味。
bzip2 hogehoge
bunzip2 hogehoge.bz2
compressよりも圧縮率高い拡張.bz2


環境設定関係 →TOP

.bashrcファイル
/home/hogehoge/.bashrc
は、ログインした時に、環境変数等を設定するファイルである。
これを変更したときは、もう一度Unix Shellを開き直
すか、source ~/.bashrcないと、反映されない。bashのRoboot Commandという意味?
linuxの標準シェル
bashですが他にもcshやtcshというシェルあります。その場合には.cshrcが設定ファイルとなります。pathの付け加え方や環境変数の設定の仕方がbashと異なるので注意。
alias short 'longname -opt'
shortと入力すれば、longname -optと入力したのと同じことになる。.bashrcに、
alias ls 'ls -FC'
とか書いておきましょう。
export
アプリケーションが使う環境変数を表示する。
例:
USFを使う時には、.bashrcに、以下のような一行を加えておく必要がある。
export GKLIB=/usr/xtal/usr/lib
setenv GKLIB /usr/xtal/usf/lib (csh/tcshの場合)
PATH="$PATH":/usr/local/bin
pathの環境変数に指定された場所(パス、と言う)にあるコマンドのみが実行できるの上記のような一行を.bashrcに書き加えておくと、/usr/local/bin の中にあるコマンドも使えるようになる。
set path = ( $path /usr/local/bin) (csh/tcshの場合)
set(環境変数その2)
システムが使用する環境変数の一覧を表示する。普段はあまり関係ないものばかり。
which
which hogehoge
とすると、
hogehogeと入力したときに実行するファイルがどこにあるか表示してくれる。例えば、
/usr/bin/local/hogehoge
といった感じの出力が出てくる。
これが出てこない場合には、パスが通ってないか、もともとそのコマンドがないということ。管理者に聞いてみましょう。


入力補助 →TOP

bashのファイル名補完機能(超便利)
ファイル名、ディレクトリ名等を入力している時、TABキーを押すと、そこまでの入力が正しければ、そのディレクトリ内の中で一意な所まで補完してくれる。間違っている場合にはピーッと鳴る。
bashのヒストリー機能
↑、↓キーを押すと、これまでに入力したコマンドがさかのぼって表示される。←、→キーctrl+a, ctrl+eでカーソルを動かして、backspaceキー等を使って、それを修正することもできる。
bashの繰り返し入力機能
!! と入力すると、直前に入力したコマンドがもう一度入力される。!hogehoge と入れると、これまでに入力したコマンドのうち、hogehogeで始まるものの中で最近に入力したものが入力される。
例:!cns と入力すると、その前に cns_solve < hogehoge.inp > hogehoge.out & 等と入力したことがあれば、それが再び入力される。 !
gedit とか、 !lessとか、!tailはよく使う。
tcshの場合も上記の機能はほとんど備えています。


コマンド制御とプロセスの管理 →TOP

cns_solve < hogehoge.inp > hogehoge.out &
cns_solve等を走らせる時に、よく使う。このコマンドの説明をしましょう。
< (リダイレクト:入力)
コマンドに、"<"の後のファイルの中にある内容を送り込む。事前に書いておいて、一気に送り込むことができる。
> (リダイレクト:出力)
そのままでは画面に出てくるコマンドからの出力を">"の後のファイルに送り込む。いわゆるログファイルを作成できる。
&
コマンドの最後に"&"を付けると、それをバックグラウンドで走らせることになる。そのコマンドが終わるまで、次のコマンドを打ち込めなくなることもないし、そのままログアウトして、終わるまで一晩中プロセスを走らせることだって可能。
command | tee
現在、走らせてるjobの一覧を表示。"&"でバックグラウンドで走らせてるものを見られる。でも、同じウィンドウ(というか同じシェル)のものしか見えないので、他のウィンドウからは、下のコマンドを使う。
jobs
現在、走らせてるjobの一覧を表示。"&"でバックグラウンドで走らせてるものを見られる。でも、同じウィンドウ(というか同じシェル)のものしか見えないので、他のウィンドウからは、下のコマンドを使う。
top
その時点で起動しているほとんどのjobとCPUの使用率が表示される。誰がどれだけCPUを使ってるか分かる。
ps -elf | grep 'cns_solve'
cns_solveというプロセスを(他人が走らせてる分も含めて)表示する。時々、grep 'cns_solve'というプロセス自身が出てくるけど、これは御愛嬌。このコマンドの説明をしましょう。 (ProceSsの略?)
ps -elf
全てのユーザーのプロセスを、長い表記で表示する。psだけだと、自分の一部のプロセスしか出てこないし、ps -elfとすると、やたら沢山出てくるので、困るので、"| grep .."をかます。ちなみに、SunのSolarisなどでは、elfではなくaxe。覚えやすいでしょ?
"|"
"|"(パイプと呼びます)の前のコマンドからの出力(この場合はps)を、その後のコマンド(この場合はgrep)に受け渡す。Shiftキーを押しながら、キーボードの右上の方にあるキーを押すと出ることが多い。
grep 'cns_solve'
で、その中から、'cns_solve'という文字列が含まれるものだけを抜き出して表示する。Get Regular ExPressionの略?
command | tee filename
command出力画面表示しつつファイルに書き込むつまり、"T"処理してくれる。
kill 12345
要らないプロセスを消す。jobsや、psコマンドで表示される、プロセス番号(この場合は12345)を指定する。それでも消えないプロセスは、kill -9 12345 などとすれば殺せる。危険!


外部機器とのやりとり →TOP

ssh hostname
hostnameというホストにログインする。Secure SHelltelnet危険なので今はあまり使わない
sftp hostname
hostnameというホストとファイルのやりとりをする。Secure File Transfer Protocolの略。
ls : ホストの中のファイル名一覧を表示する。
cd : ホストの中のディレクトリを移動する。
get hogehoge : ホストの中のhogehogeというファイルを取ってくる。
put hogehoge : ホストに、ローカルにあるhogehogeというファイルを送る。
binary : バイナリモードにする。ファイルに一切の変換を行わない。画像ファイルなどを送るときは、必ずやっておく。大抵は、このモードでオッケイ。
mget / mput : 複数のファイルを送るときに使う。"*"や"?"が使える。
prompt off : 複数のファイルを送る時に、いちいち聞いてこないようにするために、やっておくべきコマンド。
lcd : ローカル側のディレクトリを移動する。
GNOMEだとgftpというのがあってGUIで使いやすい。
scp username@hostname:sourcefile dest
scp sourcefile username@hostname:dest
hostnameというホスト間でファイルをコピーする。rcp (Remote CoPy)のSSH
前者リモートからローカルへ後者はローカルからリモートへのコピー
cpコマンド同様に、scp -rディレクトリごとコピー出来る
tar
2種類使い方がある。Tape ARchiveの略。
)ディレクトリ全体を、一つのファイルにまとめる
tar cvf dirname.tar dirname : dirnameというディレクトリをdirtame.tarという一つのファイルにまとめてしまう。さらにgzipとかで圧縮してdirname.tar.gzにすれば完璧。
tar xvf dirname.tar : dirname.tar という.tarファイルを展開する。
tar tvf dirname.tar : dirname.tar という.tarファイルの内容を確認する。
)DATに書き込み/読み込みを行う
今はあまり使いませんが。。
tar cv dirname : dirtame の内容を、DATに書き込む
tar xv : DATの内容を読み込む
tar tv : DATの内容を確認
tar cvf /dev/rmt/tps1d6nsv : デバイス名を入力する必要がある場合は、"f"オプションを加える。 tar xvf devname, tar tvf devnameに関しても同様。


検索 →TOP

fgrep 'hogehoge' *
そのディレクトリにあるファイル全部の中から、hogehogeという文字列がある行だけ抜き出して表示する。grepegrepというのもある。
例: fgrep 'unit cell' *.x
とすると、
HKL2000の.xファイルの中から、格子定数だけを抜き出してくれ
find . -name \*.img -print
いまいるディレクトリの下の、*.imgというファイルを全部探しだして表示する。*や?を使うには、"\"(英語表記だと"/"(バックスラッシュ))の後に入れないといけない。
find . -name \*.map -exec {} \;
とやると、いまいるディレクトリの下の*.mapというファイルを全部探しだして削除する。
mount/unmount
Fedora Core 4以降はGUI外付けディスク見えるようになりましたが一応紹介/mnt/下にマウントポイント空のディレクトリ作っておいてUSBディスクの場合mount -t vfat /dev/sda1 /mnt/usbなどとして(sda1だめならsdb1とかsdc1とか)マウント、umount /mnt/usbなどとしてアンマウント可能


ハードウェア/OS関係 →TOP

システムモニタ
GNOMEでは、メニューバーこのパネルを加えると、CPU利用率が分かるので便利
uname -a
OSのバージョン、日付、CPUなどのシステム情報表示。


画面関連 →TOP

display
画像ファイル表示するコマンド。png, jpg, gifなど大抵のフォーマット表示出来る。ImageMagickツールのなか一つ
スナップショット
キーボードのPrtScrnキーを押せばpng形式で画面を保存出来る

Back