一般ユーザの作成と削除

一般ユーザ名:linux を作成する場合

# useradd linux

ログインできないユーザ linux を作成する場合

# useradd -s /sbin/nologin linux

んで、パスワード設定をする

# passwd linux

削除は

# userdel -r linux

-r というオプションを付けることでホームディレクトリの /home/linux も削除される

ログイン可不可の変更

ユーザ linux をログインできないようにする

# usermod -s /sbin/nologin linux

ユーザ linux をログインできるようにする

# usermod -s /bin/bash linux

パスワードを変更する

一般ユーザ(linux)のパスワードを変更する

# passwd linux

ユーザのチェンジ

一般ユーザから root へ

$ su -

root から変更前の一般ユーザへ戻る(または、ログアウト)

# exit

root から任意の一般ユーザ ( linux ) へ

# su - linux

( # は root の印、$ は一般ユーザの印)

システムの停止と再起動

今すぐ停止は

# shutdown -h now

今すぐ再起動は

# shutdown -r now

サーバ機NICのMACアドレスを知る

# ifconfig

( HWaddrの値がMACアドレス)

ファイルの一覧表示

自分がアクセスしているディレクトリ内のファイルを一覧表示する

# ls

隠しファイルを含むすべてのファイルを表示する

# ls -a

属性も表示させる

# ls -l

すべてのファイルの情報を詳細に表示する

# ls -al

現在自分がアクセスしている場所(ディレクトリ)を表示する

# pwd

アクセスするディレクトリを移動する

/root にいる状態から /home/linux に移動する

# cd /home/linux

cd コマンドだけ実行するとホームディレクトリへもどる

$ cd

↑一般ユーザ ( linux ) だと /home/linux にもどる

# cd

↑ root だと /root にもどる

空のファイルを作る

ファイルがない場合に空のファイルが作られる(ファイルがある場合は何もしない)

# touch newfile

ファイルがある場合には空のファイルに置き換わる

# echo -n > newfile

オプション
-n :行末の改行を行わない

ディレクトリを作る

ディレクトリ (test) を作る

# mkdir test

ファイル,ディレクトリの削除

# rm ファイル名

# rm -r ディレクトリ名

削除確認なしにする

# rm -rf ディレクトリ名

ファイル,ディレクトリの名前変更と移動

名前を変更する。(test1→test2)

# mv test1 test2

移動する。(test1→user/newdir/test1)

# mv test1 user/newdir

オプション
-f :同名ファイルがある時も上書きの確認の問い合わせなく上書きをする

ファイルをコピーする

違う名前で同一ディレクトリにコピーする。(file1 を file2 という名前で複製)

# cp file1 file2

現行ディレクトリのファイルを別のディレクトリにコピーする。(file1 → user/newdir/file1)

# cp file1 user/newdir

コピー先ファイル名を「.」にすると、現在アクセスしているディレクトリにコピーされる。

# cp /usr/local/test.txt .

↑「/usr/local/」ディレクトリにある「test.txt」ファイルが現在アクセスしているディレクトリにコピーされる。

オプション -p を使うと、ファイルの所有者,タイムスタンプ,アクセス権限などの情報もコピーされる。

ディレクトリごとコピーする

dir1 ディレクトリ以下をすべて dir2 にコピーする。

# cp -r dir1 dir2

シンボリックリンクの作成

# ln -s リンク元 リンク先

オプション -s :作成するリンクがシンボリックリンクであることを表す
リンク元とリンク先の順番は cp コマンドなどと同じ

ファイル,ディレクトリの所有者,グループを変更する

file の所有者を user1 にする。

# chown user1 file

file の所有者を user1 ,所有グループを linux にする。

# chown user1:linux file

↑所有者だけでなくグループ所有権も同時に指定する場合には、それらを : で並べる。
所有者,グループ所有権とも同じにする場合( user1 )は、以下でも可。

# chown user1: file

オプションに -R を指定し、ファイル名にディレクトリを指定した場合には、そのディレクトリ以下の全てのファイルに対して同じ所有者,グループ所有権が設定される。

# chown -R root:www /var/www/html

↑/var/www/html ディレクトリ以下にある全てのファイルの所有者を root に、グループを www に変更する。

ファイル,ディレクトリのアクセス権限を変える

file の所有者に読み・書き・実行権限 ( 4+2+1=7 ) を、グループとその他に読み取り権限 ( 4 ) を与える。

# chmod 744 file

オプションに -R を指定し、ファイル名にディレクトリを指定した場合には、そのディレクトリ以下の全てのファイルに対して同じ設定が行われる。

同じ拡張子のファイルをまとめて設定するには、 * を使う。

# chmod 755 *.cgi

↑拡張子が cgi のファイルを全て 755 に変更

サービスの設定管理をする

全てのサービスの状態を表示

# chkconfig --list

どれか1つのサービス([name])の状態を表示

# chkconfig --list [name]

[name] のサービスが、システム起動時に起動する。起動時に関するランレベルを on にする

# chkconfig [name] on

[name] のサービスが、システム起動時に起動しなくなる。起動時に関するランレベルを off にする

# chkconfig [name] off

ランレベルとは、システムの動作状態を表すモード

0:システムの停止
1:シングルユーザモード
2:マルチユーザモード(テキストログイン、NFSサーバは停止)
3:マルチユーザモード(テキストログイン)
4:(未使用)
5:マルチユーザモード(グラフィカルログイン)
6:再起動

cat コマンド

内容が短いファイルの中身を表示する。

# cat file

リダイレクション

# cat file > file1

# cat file >> file1

> 標準出力をファイルにする(コピー)
>> 標準出力をファイルに追加する

メモリの使用状況を表示する

# free -m
totalusedfreesharedbufferscached
Mem:2492301902291
-/+ buffers/cache:115134
Swap:19189102

オプション
-m:メモリ使用量をメガバイト単位で表示

total にメモリ容量、used にメモリ使用量、free にメモリ空容量が表示されますが、システムを動作させるために使用されているメモリ量は、buffers/cacheのusedに表示されているものです。(上記の場合、115MB)

Mem の used には、確保されているメモリが表示されています。Mem の Free は普通1割ほどしかないようです。

現在登録されているユーザ情報を確認する

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
‥‥‥‥‥

1行で1ユーザとなります。「:」(コロン)がフィールド区切りで、各フィールドの意味は下記の通りです。

第1フィールド:ログイン・ユーザ名。
第2フィールド:パスワード用のフィールド。シャドウ・パスワードという機能が有効になっているため、ここにはパスワードは表示されず「x」という文字が記述されている。
第3フィールド:ユーザ番号。
第4フィールド:グループ番号。
第5フィールド:コメント欄(ユーザーのフルネームなどを記述する)。
第6フィールド:ホーム・ディレクトリ(ユーザーがログインしたときの最初のディレクトリ)。
第7フィールド:ログイン・シェル(ユーザーがログインすると、ここに記述したシェルが起動する)。

システムで実行しているプロセスを表示する

# ps aux
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND

a:自分以外のユーザーのプロセスも表示する
u:ユーザ名,CPU占有率,メモリ占有率,開始時刻などを表示
x:制御端末のないプロセス(デーモンなど)の情報も表示する
w:表示内容が長い場合に、w ひとつあたり1行分表示行を増やす。

表示されるそれぞれの要素の意味は以下の通りです。  

USER:所有するユーザ名
PID:プロセスID
%CPU:CPU時間と実際に処理した時間の比率
%MEM:実メモリの使用量
VSZ:仮想メモリの全サイズ
RSS:使用中の物理メモリ量
TTY:制御端末の種類及び番号
STAT:プロセス状態
 R 実行中 (running)
 S 休眠中 (sleeping)
 D 割込み不可能な休眠中
 T 停止中かトレース中
 Z ゾンビプロレス
 W スワップ・アウトしたプロセス
 N ナイス値が正であることを表す
START:開始時刻
TIME:実行時間
COMMAND:プロセスのコマンド名

プロセスおよびジョブを終了させる

プロセスID pid のプロセスを終了する

# kill pid

だめなら、強制終了

# kill -9 pid

yum コマンド

パッケージの新規インストール

# yum -y install (パッケージ名)

パッケージのアンインストール

# yum remove (パッケージ名)

アップデート可能な RPM パッケージの一括アップデート

# yum -y update

ダウンロードしたパッケージを削除

# yum clean packages

グループの一覧を表示

# yum grouplist

グループ単位のインストール

# yum groupinstall "グループ名"

グループ単位の削除

# yum groupremove "グループ名"

グループ単位のアップデート

# yum groupupdate "グループ名"

グループに含まれるデフォルトパッケージとオプションパッケージを表示

# yum groupinfo "グループ名"

キーワードでパッケージを検索

# yum search (キーワード)

ファイル名からパッケージ名を逆引き

# yum provides (ファイル名)

RPM コマンド

rpm パッケージのファイル名を package-3.5-1.i386.rpm とすると、
(package=ファイル名,3=バージョン,5-1=リリース番号,i386=プラットホーム)

詳細情報(v),進行状況(h)を表示してインストール(i)する。

# rpm -ivh package-3.5-1.i386.rpm

パッケージがインストールされているかの問い合わせ。

# rpm -q package

↑インストールされていれば、バージョンも表示される。

古いバージョンがインストールされている場合はアップグレードし、古いバージョンがインストールされていない場合はインストールする。

# rpm -Uvh package-3.5-1.i386.rpm

古いバージョンがインストールされている場合のみアップグレードする場合は

# rpm -Fvh package-3.5-1.i386.rpm

wget コマンド

http://www.example.co.jp/tmp/file.zip をダウンロードする

# wget http://www.example.co.jp/tmp/file.zip

ユーザ認証が必要な Web サイトからダウンロードする場合

# wget --http-user=myuserid --http-passwd=mypassword http://www.example.co.jp/tmp/file.zip

ユーザ認証が必要な FTP サイトの場合

# wget --ftp-user=myuserid --ftp-password=mypassword ftp://ftp.example.co.jp/tmp/file.zip

myuserid がユーザ ID ,mypassword がパスワード

実行を中断するには…、
「Ctrl」+「c」キー

オプション:
-q : メッセージを表示しない。
-O [ファイル名] : 指定したファイル名で保存。
-N : ダウンロード対象と同名のファイルが既に存在する場合、更新時間を比較しローカル側に存在するファイルの方が古ければダウンロードして上書き保存する。但し、更新時間の比較は -O オプションと一緒に使うと無効となる。

ファイルの文字コードを変換する

file をEUCコードで標準出力。

# nkf -e file

file をEUCコードにして file2 の名前で保存。

# nkf -e file > file2

注)もとのファイルと、出力ファイルを同じ名前にしない

file の文字コードを UTF8コード,改行コードをLFにして file2 の名前で保存。

# nkf -wLu file > file2

主なオプションは
-j : JISコードで出力
-e : EUCコードで出力
-s : シフトJISコードで出力
-w : UTF8コードで出力
※オプションを指定しない場合 -j になる。

改行コードを変更するオプションは
-Lu : unix(LF)の改行コードに変換
-Lw : windows(CR+LF)の改行コードに変換
-Lm : mac(CR)の改行コードに変換

入力する文字コードを指定するオプションは
-J : 入力がJISコード
-E : 入力がEUCコード
-S : 入力がシフトJISコード
-W : 入力がUTF8コード
※指定しなくても自動判定が効くが、誤判定のリスクを避ける意味でも、入力する文字コードが分かっている場合は明示的に指定した方がいい。

ファイルやディレクトリを検索する( find , locate )

find (逐次検索)

# find [dir] -name [file]

[dir] ディレクトリの中から [file] ファイルを検索する

例:

# find / -name messages.dat

# find /home/usr -name messages.dat

locate (データベースから検索するので高速)

# locate [file]

※locate ではデータベース更新後に作成されたファイルやディレクトリは検索できない。データベースを再更新するには updatedb コマンドを実行する。

# updatedb

フロッピーディスクを使う

フォーマットする

# fdformat -n /dev/fd0

↑-n はエラーチェックの省略

ファイルシステムを構築する

# mkfs -t vfat /dev/fd0

↑ Windows で読み書きできるようにvfat形式にしている

フロッピードライブをマウントする

# mount /media/floppy

マウントしたフロッピードライブを取り外す

# umount /media/floppy

ファイルシステムのドライブ使用状況の表示

現在マウントされている全てのファイルシステムの使用状況を表示

# df -h
Filesystemサイズ使用残り使用%マウント位置
/dev/mapper/VolGroup00-LogVol00
3.7G1.7G1.8G49%/←ルートディレクトリが含まれるファイルシステムの情報
/dev/hda199M26M69M27%/boot←/bootディレクトリが含まれるファイルシステムの情報
none125M0125M 0%/dev/shm←メモリ上の仮想ディスクの情報

-h:サイズに応じた単位で表示する

ディレクトリ内のファイル容量を表示する

カレントディレクトリの容量を表示する

# du -h

-h:サイズに応じた単位で表示する。
-s:指定されたディレクトリの合計のみ表示する。

# du -hs /var/www/html
85M   /var/www/html

which と whereis

which:コマンドのパスを表示します

# which sendmail
/usr/sbin/sendmail

whereis:コマンドのパスとコマンドのソースファイルおよびマニュアルファイルのパスを表示します

# whereis perl
perl: /usr/bin/perl /usr/local/bin/perl /usr/share/man/man1/perl.1.gz

ファイルを書庫化・展開する

arc_dirディレクトリ以下を書庫ファイル(arc.tar)にする

# tar cvf arc.tar arc_dir

書庫ファイルを展開する

# tar xvf arc.tar

書庫ファイルの内容を一覧する

# tar tf arc.tar

書庫ファイルからarc_dir/readme.txtファイルのみを削除する

# tar vf arc.tar --delete arc_dir/readme.txt

オプション:
c:書庫を新規に作成する
t:書庫の内容を表示する
x:書庫からファイルを取り出す
--delete:書庫内からファイルを削除する
-f ファイル名:指定した書庫ファイルまたはデバイスを使用する。初期値は/dev/rmt0
-v:処理したファイルの一覧を詳細に表示する

解凍コマンド

展開するファイルの拡張子が .tar.gz または .tgz の場合

# tar zxvf file.tar.gz

展開するファイルの拡張子が .zip の場合

# unzip file.zip

実行したコマンドの履歴を表示する

最近実行した10個の履歴を表示する場合は、以下のように入力する

# history 10

表示された履歴の左側の数字はヒストリの番号で、

# !番号

と入力することにより、その番号のコマンドを実行できる

2つのファイルの差分を得る

test1 と test2 ファイルの差分を表示

# sdiff -sB test1 test2

-s:共通な行を表示しない
-B:空行を挿入・削除するだけの違いは無視する

文字列の置換をする

test.html というファイルの euc-jp という部分を UTF-8 に変える

# sed -i 's/euc-jp/UTF-8/g' test.html

-i はファイルを編集するオプション。
-e を指定した場合は、ファイルの変更はせずに標準出力に出力するだけになる。

変数の場合は「'」で囲む

# sed -i 's/number/'${i}'/g' test.html

圧縮コマンド( zip )

単一ファイル ( target-file ) を ( file.zip に) 圧縮する

# zip file.zip target-file

ディレクトリごと圧縮する場合は「-r」オプションを使用する

# zip -r directory.zip target-dir

文字列を検索する

ファイル内の文字列を検索して該当する行を表示する
拡張子が .txt のファイルにある「diff」という文字列を検索する場合

# grep diff *.txt

標準出力の結果を検索する
「ps aux」というコマンドを実行し、その結果から「telnet」という文字列を含む行を表示する場合

# ps aux | grep telnet

オプション
 -c 該当行は表示せずに、該当した数を表示する
 -h 複数ファイルを検索対象としたときに、結果でファイル名を表示しない
 -i 大文字と小文字の区別をしない
 -l 該当ファイル名だけを表示する
 -L 該当しなかったファイル名だけを表示する
 -n 該当行の行番号を表示する
 -v 該当しない行を表示する
 -f file 検索パターンとしてfileの内容を使用する

ファイルを分割する

「file」を8行ごとに分割

# split -8 file new_

ファイル確認

# ls
file   new_aa   new_ab   new_ac

分割されたファイルの前半部分は「new_」となり、その後に「aa」~「ac」が振られていく。

ファイルを結合する(1)

# cat test.aa test.ab test.ac > file.txt

test.aa + test.ab + test.ac の順番に結合される

# cat test.* > file.txt

ワイルドカードを使うとファイルは昇順に結合される

ファイルを結合する(2)

join コマンド
キーとなる列は昇順に並べておく。

# cat list01.txt
10 aa
30 bb
40 cc
70 dd
90 ee

# cat list02.txt
20 VV
30 WW
50 XX
60 YY
70 ZZ

に対して、単純に二つのファイル名を並べて join すると、キー列の項目において、両方のファイルに存在するもののみ表示する。

# join list01.txt list02.txt
30 bb WW
70 dd ZZ

オプションを使用すると、

# join -a 1 -1 1 -2 1 -o 0 1.2 2.2 -e 'NULL' list01.txt list02.txt
10 aa NULL
30 bb WW
40 cc NULL
70 dd ZZ
90 ee NULL

左から、
join コマンド
-a 1:一つ目のファイル(list01.txt)の行は全て表示する。
-1 1:一つ目のファイル(list01.txt)の1列目をキーとする。
-2 1:二つ目のファイル(list02.txt)の1列目をキーとする。
-o:出力する列番号を指定する。
0:キーを表示。
1.2:一つ目のファイル(list01.txt)の2列目を表示。
2.2:二つ目のファイル(list02.txt)の2列目を表示。
-e 'NULL':指定したフィールドがなければ任意の文字列を表示する。(NULLを表示する)

テキストファイルの行数を数える

# wc file.txt

行数、単語数、バイト数、ファイル名の順に表示される

# wc -l file.txt

行数、ファイル名が表示される

行数のみ得たい場合は、grep を使う

# grep -c '' file.txt

テキストファイルの内容を行番号つきで表示する

# less -N file.txt

テキストファイルの行を削除する

45行目を削除する

# sed -i '45d' file.txt

5行目から20行目までを削除する

# sed -i '5,20d' file.txt

13行目以降を削除する

# sed -i '13,$d' file.txt

「pattern」を含む行を削除する

# sed -i '/pattern/d' file.txt

テキストファイルの行頭,行末に文字列を追加する

行頭に「"」を追加する

# sed -i 's/^/"/g' file.txt

行末に「"」を追加する

# sed -i 's/$/"/g' file.txt

文字列「AAAA」を含む行の行頭に「;」を追加する

# sed -i '/AAAA/s/^/;/g' file.txt

テキストファイルを行単位で並べ替える

sort コマンド

オプション
-n:数値として並べ替える。
-r:降順に並べ替える。(指定しない場合は昇順)
-t 文字:指定文字を区切り文字とする。(デフォルトは空白)
-k 数値1(,数値2):数値1番目のフィールドから数値2番目のフィールドをキーとする。(先頭フィールドは1)

# cat list.txt
yuna 95
runa 32
honoka 44
hinata 74
mao 19
haruna 89
kanon 65
mana 55
haruka 100
nanami 82

に対して、

# sort -n -r -k 2,2 list.txt
haruka 100
yuna 95
haruna 89
nanami 82
hinata 74
kanon 65
mana 55
honoka 44
runa 32
mao 19

# sort -k 1,1 list.txt
haruka 100
haruna 89
hinata 74
honoka 44
kanon 65
mana 55
mao 19
nanami 82
runa 32
yuna 95

複数の列をもとにデータを並べ替える

# cat list.txt
yuna 5
runa 2
honoka 3
hinata 3
mao 1
haruna 4
kanon 3
mana 3
haruka 5
nanami 4

に対して、
第2フィールドを数値として降順に並べ替え、同じになったものを第1フィールドで並べ替える

# sort -k 2nr,2 -k 1,1 list.txt
haruka 5
yuna 5
haruna 4
nanami 4
hinata 3
honoka 3
kanon 3
mana 3
runa 2
mao 1

フィールド,カラムを取り出して表示する

cut コマンド

オプション
-c 位置:取り出すカラムの位置を指定する。(複数指定可、範囲指定可)
-f 位置:取り出すフィールドの位置を指定する。(複数指定可、範囲指定可)
-d 区切り文字:フィールドの区切り文字を指定する。

最初の3文字を出力する。

# cut -c1-3 list.txt

ファイルの各行のスペースで区切られた2番目のフィールドを切り出す。

# cut -d' ' -f2 list.txt

テキストファイルの内容を逆順に表示

tac コマンド
テキストファイルの内容を区切り文字を基準に逆順に表示する。
デフォルトでは区切り文字は改行文字なので行単位で逆順に表示される。

# tac file.txt

オプション
-s 区切り文字:区切り文字を指定する。

連続する同じ内容の行をまとめる

uniq コマンド
連続する同じ行がある場合それらを削除して表示することができる。
オプションを使用することで、いろいろな表示方法を選べる。

# cat sample.txt
Hello World !
Hello World !
Hello World !
Hello World !
How are you ?

に対して

連続する行をまとめて表示

# uniq sample.txt
Hello World !
How are you ?

連続する同じ行がいくつあるか表示

# uniq -c sample.txt
 4 Hello World !
 1 How are you ?

連続する同じ行のみ表示

# uniq -d sample.txt
Hello World !

1度しか現れない行のみ表示

# uniq -u sample.txt
How are you ?

- guitar site WAVE -