Top > Unix > 入門・逆引き

入門・逆引き Edit

「〜するにはどうすればいいの?」という疑問の答えを集めます。
やっぱ本買った方が効率いい。

初心者は最低限これだけ Edit

ディレクトリ内のファイル一覧を見るには?(ls) Edit

一番シンプルなのは:

ls
ls ディレクトリ名

更新時刻なども表示するには:

ls -l
ls -lrt  # 古いものから順にソートする

. (ドット)から始まるファイルを表示するには:

ls -a
ls -A    # こちらは . (カレントディレクトリ)と .. (親ディレクトリ)を表示しない。

カレントディレクトリを知るには?(pwd) Edit

pwd

カレントディレクトリを変更するには?(cd) Edit

ホームディレクトリへ移動:

cd

親ディレクトリへ移動:

cd ..

指定したディレクトリへ移動:

cd public_html

ファイルをコピーするには?(cp) Edit

cp コピー元

ファイル名を変更するには?(mv) Edit

mv 元の名前 新しい名前

ファイルを削除するには?(rm) Edit

rm ファイル名

※削除したファイルは2度と、決して復活できません!!

ディレクトリを削除するには?(rmdir) Edit

rmdir ディレクトリ名

↑はディレクトリが空でないと失敗します。
空でなくても強制的に削除するには

rm -rf ディレクトリ名

ファイルをtar.gzで圧縮するには?(tar) Edit

tar zcvf 圧縮ファイル 対象ファイル...

オプションの意味は次の通り:

z : 圧縮する
c : アーカイブを作成
v : 進行状況を表示する (verbose)
f : 圧縮ファイル名

※Solaris等ではzオプションが使えないので次のようにします。

tar cvf - 対象ファイル... | gzip > 圧縮ファイル名

tar.gzを展開するには?(tar) Edit

tar zxvf 圧縮ファイル

※Solaris等ではzオプションが使えないので次のようにします。

zcat bin.tgz | tar xvf -

tar.gzの中身を見るには?(tar) Edit

tar ztf 圧縮ファイル

tar.bz2を展開するには?(tar) Edit

tar jxvf 圧縮ファイル

z が j になった以外は tar.gz と同じです。

コマンドの使い方を知るには?(man,info) Edit

基本はmanです。「man コマンド名」としましょう。
それで出てこない場合は「info コマンド名」としましょう。
man の最初の方に

grep [options] [-e PATTERN | -f FILE] [FILE...]

などと出てくるはずです。
[]で囲まれているものは省略可能。
「-e PATTERN | -f FILE」は「-e PATTERN」か「-f FILE」のどちらか片方。
FILE...の「...」は複数指定可能という意味です。
manでなにか出てきたけど、どうも内容が探しているものと違うというときは、別セクションの同名のman pageが表示されている可能性があります。

man -a hoge

としてみましょう。

UNIXの部屋
http://x68000.q-e-d.net/~68user/unix/
で検索してみるのもいいでしょう。

コマンドの出力が1画面におさまらない!(less) Edit

lessを使いましょう。

ls|less

lessがないときはmore。

ファイルの文字コードを変換するには?(nkf) Edit

# EUC-JPにする
nkf -e ファイル名 > euc.txt
# Shift_JISにする
nkf -s ファイル名 > sjis.txt
# JISにする
nkf -j ファイル名 > jis.txt
# UTF-8にする
nkf -w ファイル名 > utf8.txt 

Solarisにはnkfはないので、sjtoeuc、euctosjなどを使います。

ファイルの文字コードを判定するには?(nkf) Edit

まずは

nkf -g ファイル名

としてみましょう。nkfのバージョンが新しければ、判定できます。
あるいは

kcc -c ファイル名

でできるかも。

OSを終了して電源を切るには?(shutdown) Edit

shutdown -h now

をrootで実行すると電源が切られます。

コマンドが見つからないYO!(which, type, su) Edit

echo $PATH

で環境変数PATHを確認しましょう。

which コマンド名

でそのコマンドの本体がどこにあるかわかります。
でも、whichではcdやpwdなどのシェル組み込みコマンドやaliasは出てこないので、

type コマンド名

としてみましょう(sh, bashの場合)。
Linuxではlsやll、laなどがデフォルトでaliasされている場合も多いです。
suでルートになるとき、-(ハイフン)をつけないと/sbin、/usr/sbinにPATHは通りません。

最低限でもないけどまだまだ初心者 Edit

ファイル名、更新時刻などの条件でファイルを検索するには? Edit

findコマンドを使います。詳しくはUnix/findを参照。

ある文字列を含むファイルを検索するには?(grep) Edit

grep 文字列 ファイル名...

大文字小文字を区別しないで探すには:

grep -i 文字列 ファイル名...

複数の文字列でOR検索するには

grep -e hoge -e meso -e peso ファイル名...

カレントディレクトリ以下のファイル全てから探すには:

find . -type f -print | xargs grep 文字列

grepの検索キーワードは正規表現なので、以下の文字は特別な意味を持ちます。

. * ^ $ [ ] \ ? ( ) |

これらを文字そのままとして検索したい場合はfgrepを使いましょう。

文字列を置換するには?(sed) Edit

sedを使います。hogeをfooに置換するには:

sed -e 's/hoge/foo/g' 入力ファイル > out.txt

検索文字列に「/」が入っているときは、「/」の代わりに他の記号を使うと便利です:

sed -e 's@http://foo.com/@hogehoge@g' 入力ファイル > out.txt

自分が今ログインしているユーザ名を表示するには?(id) Edit

id

自分が今ログインしているホスト名を表示するには?(hostname) Edit

hostname

bashのショートカットキーとは? Edit

bashはreadlineというライブラリを使っており、これにより便利なショートカットキーが使えるようになっています。
覚えておくと効率up。

C-pコマンド履歴をさかのぼる
C-nコマンド履歴を次に進む
C-rコマンド履歴をインクリメンタルサーチ
C-a行頭へ
C-e行末へ
C-uカーソルから行頭までを削除
C-hバックスペースと同じ

その他多数。詳しくはman bashの「Readlineのコマンド名」の節を読んでください。

使用メモリ量を知るには?(top) Edit

top

を実行して

Mem:    255688k total,   243300k used,    12388k free,    45308k buffers

のところを見る。
合計 255688k
使用中 243300k
空き 12388k
これを見ると残り約12Mでメモリが足りないと思うかも知れませんが、そうではありません。
Unixではファイルから読み込んだデータをメモリに残しておき、次回読み込むとき高速化します。これをバッファキャッシュといいます。
空きメモリはほとんどバッファキャッシュに使おうとするため、freeの値は少ないのが正常の状態なのです。
この例では45308kがバッファキャッシュに使われており、free と合わせてあと57M分は使えるという意味になります。

ディスクの空き容量を見るには?(df) Edit

df -h

カレントディレクトリ以下の使用ディスク容量を見るには?(du) Edit

du -h

コマンド出力の文字が化けてしまうYO!(LANG) Edit

コマンドのメッセージは環境変数LANGで設定できます。

/.bashrcに

export LANG=C

と書いて、

. ~/.bashrc

として.bashrcを再読み込みしてみましょう。
これはコマンド出力を英語メッセージにするという意味です。
LANGに設定できる値はOSによって異なりますが、日本語なら次のどちらかでしょう。

export LANG=ja_JP.eucJP
export LANG=ja_JP.UTF-8

このように言語などを切り替える仕組みのことをlocale(ロカールまたはロケール)といいます。

急にコマンド出力が文字化けするようになったYO!(stty sane) Edit

さっきまで普通に出ていたのに、あるコマンドを実行したら急に文字化けするようになってしまった場合、たいていは次の2つのコマンドで直せます。

stty sane
tput reset

root用のコマンド Edit

ソフトをインストールするには? Edit

rpm(Redhat系)やdeb(debian系)、ports(BSD)などOSごとのパッケージが用意されているなら、それを使いましょう。
不運にもパッケージが用意されていない場合は、tar.gzなどで圧縮されているソースをとってきてコンパイルします。
アーカイブを展開してできたディレクトリの中に、「configure」というファイルがあればラッキー。そのプログラムはautoconf/automakeに対応しています。大抵、次のコマンドでインストールできるでしょう。

$./configure
$ make
root になって
# make install

グループにユーザを追加するには? Edit

usermod -G wheel,sstwork aoyama

参加するグループをすべて列挙しなければならないことに注意してください。
1つのグループに追加したいだけなら、usermod でなく gpasswd を使って

gpasswd -a aoyama nobody

のようにするとよいでしょう。

この後、ユーザ aoyama がログインし直すとこの設定が反映されています。
ログインし直さずに反映させるには newgrp を使います。

[root@global ~]# gpasswd -a nobody aoyama
ユーザ aoyama をグループ nobody から追加
~:glb$ id
uid=509(aoyama) gid=10(wheel) 所属グループ=0(root),10(wheel),501(sstwork),509(aoyama)

↑まだ nobody グループに入っていない

~:glb$ newgrp nobody
~:glb$ id
uid=509(aoyama) gid=99(nobody) 所属グループ=0(root),10(wheel),99(nobody),501(sstwork),509(aoyama)

↑newgrp を使うと /etc/group の変更が反映される。しかしプライマリグループも変わってしまっている。

~:glb$ newgrp aoyama
~:glb$ id
uid=509(aoyama) gid=509(aoyama) 所属グループ=0(root),10(wheel),99(nobody),501(sstwork),509(aoyama)

↑そこでもう一度 newgrp を使ってプライマリグループを aoyama に戻す。
これで再ログインしたのと同じ状態になる。

/etc/group を直接変更する方法
usermod や gpasswd を使わず /etc/group を vi などで直接変更しても、問題なく追加できます。
追加だけでなく、削除や新しいグループの登録などなんでもできるので、便利です。
昔の Unix では usermod などのコマンドなどもなかったので、由緒正しい方法とも言えます。
しかし Linux では passwd に対する shadow ファイルと同じく、group に対しても /etc/gshadow というファイルが存在します。
gshadow は変更し忘れても通常は大丈夫なようですが、グループに対してパスワード
が設定されている場合は問題になるかもしれません。
usermod や gpasswd を使うと gshadow も同時に更新されるので、トラブルを避けたければ
やはりこれらのコマンドを使うのがよいでしょう。

グループからユーザを削除するには? Edit

gpasswd -d ユーザ名 グループ

apacheの権限でファイルを作成できるどうか確かめるには? (sudo) Edit

suでapacheになってみれば確かめられます。
しかし /etc/passwd で apache のログインシェルが /bin/false などになっていると su できません。
そんなときは sudo を使います。

# sudo -u apache touch testfile

これでちゃんと testfile が作成されれば、apache プロセスもそのディレクトリにファイルを作成できるでしょう。

参考サイト Edit

ITPro Linuxコマンド逆引き大全
UNIX一年生

参考書籍 Edit

Linux逆引き大全555の極意 コマンド編 あまり見やすくないし、レベルは低め。
Linuxスーパーユーザハンドブック この本は良い。Linux サーバ管理者は持ってて絶対に損はない。
Linuxコマンドパーフェクトリファレンス 網羅性、用例の充実度ともイマイチ。価格に見合わず。



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes