Linux入門
S. Fushinobu
以前から公開していた、IRIX用のメモをLinux用に手直してみました。X線結晶構造解析をするときに必要なこと、便利なことを中心に、最低限の内容を書いておきます。これを手直しした時点ではFedora Core 4 - 6あたりを使ってます。
Linuxに関する解説はここやここ(堀田さんの「ネットワーク管理者(の卵)養成講座」より)がいいみたいです。
- 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を見てみるとなんとなく理解出来るはず。
- gedit
- テキストファイルを編集する(GNOMEを使っている場合)。gedit hogehogeとすると、hogehogeという新しいファイルを作る。
- vi
- emacs
- nedit
- 他にもこんなテキストファイルエディタがある。お好きなのを使って下さい。viは最も基本的なテキストエディタだが使い方はちょっと特殊。(vi filenameで起動、hjklまたはカーソルキーで移動、aまたはiで入力モード入る、ESCで入力モード出る、ddで1行削除、ZZで書き出して終了)
- less hogehoge
- hogehogeという名前のテキストファイルの中身を見る。元々、1画面に収まりきらないファイルを閲覧するために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ファイルの最初の3行を表示してくれるので便利。
- tail -数 hogehoge
- 同様に、hogehogeというファイルの最後の数行を表示する。
例: tail -22 hogehoge01.x
とすると、HKL2000の.xファイルのいろんなパラメータが書き込まれている最後の22行を表示してくれるので便利。
tail -99f hogehoge.out
とすると、出力されてくる内容をfollowして、次々と表示してくれる。hogehoge.outを出力しているプロセスが終了したら、もう何も出てこなくなるので、Ctrl+cで抜けること。
-
- cat hogehoge1
- hogehogeという名前のテキストファイルの中身をそのまんま表示する。1画面に収まらないファイルは流れて行ってしまうので、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。
-
- .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
といった感じの出力が出てくる。
これが出てこない場合には、パスが通ってないか、もともとそのコマンドがないということ。管理者に聞いてみましょう。
- 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 SHellの略。telnetは危険なので今はあまり使わない。
- 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の略。
1)ディレクトリ全体を、一つのファイルにまとめる
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ファイルの内容を確認する。
- 2)DATに書き込み/読み込みを行う
- 今はあまり使いませんが。。
- tar cv dirname : dirtame の内容を、DATに書き込む
tar xv : DATの内容を読み込む
tar tv : DATの内容を確認
tar cvf /dev/rmt/tps1d6nsv : デバイス名を入力する必要がある場合は、"f"オプションを加える。 tar xvf devname, tar tvf devnameに関しても同様。
- fgrep 'hogehoge' *
- そのディレクトリにあるファイル全部の中から、hogehogeという文字列がある行だけ抜き出して表示する。grepやegrepというのもある。
例: 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などのシステム情報を表示。
-
- display
- 画像ファイルを表示するコマンド。png, jpg, gifなど大抵のフォーマットは表示出来る。ImageMagickのツールのなかの一つ。
- スナップショット
- キーボードのPrtScrnキーを押せばpng形式で画面を保存出来る。
Back