トップに戻ります
00-本サイトについて
00-01.サイト運用者
00-02.当サイトの運用環境
|
●09-E.Linux基本コマンド一覧
●09-121.2つのファイルをタブで区切った1つのファイルにまとめる
2つのファイルの各行をタブで区切って1つのファイルにまとめることができる。
$ paste file1 file2 > output
●09-122.ファイル内の大文字を小文字に変換
ファイル内の大文字をすべて小文字に変換する。引数の「if」は入力ファイル,「of」は出力ファイル,「conv=lcase」は大文字を小文字に変換することを表している。また,小文字を大文字に変換する場合は「conv=ucase」を用いる。
$ dd if=target_file of=change_file conv=lcase
●09-123.タブをスペースに置き換え
テキスト中のタブをスペースに置き換える。このとき「-t数字,数字...」オプションを用いることで任意のタブ位置を指定できる。逆にスペースをタブに置き換える場合は「unexpand」を用いる。
$ expand tab.txt > space.txt
「-a」オプションにより,すべてのスペースがタブに置き換わる。「-a」を付けないと,最初に現れたスペースだけが対象になる。
●09-124.文字を変換
1文字以上の文字列を対象に,文字を変換する。例では,すべての大文字を小文字に変換している。正規表現に似た指定を用いる。また,表のような文字クラスを使用できる。クラス名は次にように使う。なお,この例ではすべての記号をカンマ(,)に変更している。
$ cat target_file | tr A-Z a-z > output_file
alnum 文字と数字
alpha 文字
blank 水平方向の空白
cntrl コントロール文字
digit 数字
graph 印刷できる文字。空白は含まない
lower 小文字
print 印刷できる文字。空白も含む
punct 記号
space 水平および垂直方向の空白
upper 大文字
xdigit 16進数の文字
●09-125.各行から指定した文節を取り出す
cutコマンドを用いることで各行の指定した文節を取り出すことが可能である。「-c初めの文字数-終わりの文字数」オプションを指定することで,指定した文字を取り出すことができる。また,初めまたは終わりを省略することで,初めから指定した文字まで,または,指定した文字から終わりまでを表すことができる。また,タブは1文字として扱われるので注意が必要である。
$ cat tel.lst
046-xxx-xxxx Kazuhiro Fukuda Man
03-yyyy-yyyy Yuki Izumi Women
03-zzzz-zzzz Toru Tejima Man
$ cut -c 14- tel.lst > result
$ cat result
Kazuhiro Fukuda Man
Yuki Izumi Women
Toru Tejima Man
●09-126.指定した列の文字列を取り出す
タブで区切られているテキストファイルの指定したフィールドの文字列を取り出す。
$ cut -f 2 tel.lst > result
$ cat result
Kazuhiro Fukuda
Yuki Izumi
Toru Tejima
また,「-d ,」とすることでタブの代わりにカンマをフィールドの区切りとして変更することができる。
●09-127.ファイルを編集
テキスト・ファイルの編集には,「Emacs」,「Mule」といった高機能エディタが使われることが多い。しかし,これらソフトが導入されていないシステムもある。そうした場合でも,ほとんどのUNIX系OSのシステムには「vi」がインストールされているので,それを使えばよい。
viには「モード」という概念がある。起動直後の「編集モード」では,カーソルの移動,文字(行)の削除などが可能である。"a"や"i"といった文字入力コマンドを入力すると,追加/挿入モードになり文字の入力ができるようになる。ファイルの書き出しや検索などにはコマンド・モードを使用する。追加/挿入モードから編集モードへ移行するにはESCキーを,編集モードからコマンド・モードへ移行するには「:」キーをタイプする。基本的な操作法を表1に示す。
ZZ ファイルに保存し終了する(編集モードで使用)
w ファイルに保存する
w name name に指定しているファイル名に変更し保存する
r name 現在のカーソルの場所にnameで指定したファイルを読み込む
e name 新規ファイルとしてnameの編集をする
:q viを終了する
h 1文字左に移動する(←)
j 1文字下に移動する(↓)
k 1文字上に移動する(↑)
l 1文字右に移動する(→)
- 前行の先頭へ移動する
+ 次行の先頭に移動する
O 行頭に移動する
$ 行末に移動する
a カーソルの右側から入力を始める
i カーソルの左側から入力を始める
o 次行を追加し入力を始める
ESC 追加/挿入モードからコマンド・モードへ戻る
/string カーソルより後のstringを検索し,移動する
?string カーソルより前のstringを検索し,移動する
n 検索を後方へ繰り返す
N 検索を前方へ繰り返す
●09-128.文字列を置換
target_file中にある「command」を「コマンド」にすべて置き換え,output_fileに保存する。「-es/検索パターン/置換パターン/g」で置換する文字列を指定する。検索パターンには正規表現を利用できる。詳しくは「ファイルから文字列を検索する」(grep)の「正規表現」を参照。
$ sed -e s/command/コマンド/g target_file
> output_file
\n 検索パターンで\(...\)により保存したパターンを呼び出す
& 検索パターンを呼び出す
\\ \文字を表す
\& &文字を表す
●09-129.「2000/10/20」を「2000年10月20日」の日本語表記に置き換える
置換する文字列中でかっこ"\(...\)"を用いると,その中でマッチした文字列が一時的に記憶される。置換後の文字列中で"\数字"と指定すると,記憶した文字列のうち指定した順番のものが呼び出される。
$ sed -e "s/\([0-9]\{4\}\)\/\([0-9]\{1,2\}\)\/\([0-9]\{1,2\}\)/\1年\2月\3日/g"
target_file > output_file
●09-130.Perlで文字列を置換
Perlを使えば,より複雑な文字列処理を行える。Perlはコマンド1行で処理することもできるが,プログラム・ファイルを作って使用した方が間違いが起きにくい。例えば,テキスト・ファイル中の文字列を置換したい場合は,以下のようなプログラムを記述して,rep_str.plといった名前のファイルとして保存する(ただし,行番号は付けないこと)。
1: #!/usr/bin/perl
2:
3: if ( ! open ( OF, "<$ARGV[2]") ) {
4: print "File not found.\n";
5: exit(-1);
6: }
7: while (){
8: $_ =~ s/$ARGV[0]/$ARGV[1]/g;
9: print $_;
10: }
11: close(OF);
置換処理をしているのは8行目である。コマンドの第0引数を検索文字に,第1引数を置換文字として扱っている。
この後,ファイルを実行できるようにアクセス権限を変更する。
$ chmod 755 rep_str.pl
このプログラムの実行は,
$ ./rep_str.pl 検索文字置換文字target_file
で行う。ただし,結果は標準出力に出されるため,ファイルに保存するにはリダイレクトで書き込むようにする。
$ ./rep_str.pl 検索文字置換文字target_file > output_file
なお,このプログラムは引数に正規表現を用いることができる。
8行目の置換処理を変更することにより,より複雑な処理にも対処できる。例えば,sedで"「2000/10/20」という日付表記を「2000年10月20日」と日本語表記に置き換える」"という例では3行目と8行目を,
3: if ( ! open ( OF, "<$ARGV[0]") ) {
8: $_ =~ s/([0-9]{4})\/([0-9]{1,2})\/([0-9]{1,2})/$1年$2月$3日/g;
とすればよい。
●09-131.どのような正規表現があるのか
| grep,sed |
perl |
意味 |
| * |
* |
直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない |
| ^ |
^ |
行の先頭 |
| $ |
$ |
行の末尾 |
| [ ] |
[ ] |
かっこ内の任意の1文字に一致。ハイフン(-)で範囲指定もできる |
| [^ ] |
[^ ] |
かっこ内の任意の1文字に不一致 |
| \? |
? |
直前の文字の1個以上の連続に一致 |
| \{n\} |
{n} |
直前の文字の0または1文字に一致 |
| \{n,\} |
{n,} |
直前の文字のn個に一致 |
| \{,m\} |
{,m} |
直前の文字のn個以上に一致 |
| \{n,m\} |
{n,m} |
直前の文字のm個以下に一致 |
| pattern1\|pattern2 |
pattern1|pattern2 |
pattern1またはpattern2のいずれかに一致 |
| \(pattern\) |
(pattern) |
patternをグループ化する。マッチした内容は記憶される |
| \ |
\ |
正規表現に使われる記号を普通の文字として扱う |
●09-132.指定日時にプログラムを動かす
指定した時刻にジョブを実行させる。日時指定の書式には,MM/DD/YYやhh:mmが使えるほか(MMは月,DDは日,YYは年号の下2桁,hhは時間,mmは分を意味する),midnight,noonといった時間を表す語句も使用できる。
atを実行すると,標準入力からの入力を求められるので,実行するスクリプトを記述する。なお,入力を終了するには[Ctrl+D] とする。
実行結果がある場合はメールにより通知される。
$ at midnight
> echo -n "Jan 10 : " >> login.log
> grep -c "Jan 10,*: (login)" /var/log/message >> login.log
> [Ctrl+D]
●09-133.スクリプト・ファイルを指定時刻に実行
あらかじめスクリプト・ファイルが用意されている場合は,リダイレクトを用いてat に引き渡せばよい。
$ at 2:15 < script.file
●09-134.予約されているキューを一覧
現在,予約されているキューを一覧する。先頭の数字がキュー番号である。
$ atq
●09-135.予約されているキューを削除
atで予約したキューを取り消す。目的のキュー番号は「atq」の出力から判別可能。
$ atrm 2
●09-136.現在のシステムの状況を知る
CPUやメモリー,スワップ領域の使用状況,プロセスの状態などを調べて表示する。情報は,一定間隔で更新される。また,それぞれのステータスの意味を表に示した。
$ top
PID プロセスID
USER プロセスを実行しているユーザー名
PRI 優先度
NI ナイス(nice)値
SIZE 仮想イメージの大きさ
RSS 使用中の物理メモリー量
SHARE 使用中の共有メモリー量
STAT プロセスのステータス。Rは実行可能,Sは停止,Dは割り込み不可の停止,Tは停止またはトレース中,Zはゾンビ・プロセス,Wはスワップ・アウトしたプロセス,Nはナイス値が正であることを表している
LIB ライブラリが使用するページ・サイズ
%CPU CPU占有率
%MEM メモリー占有率
TIME プロセス開始からの実行時間
COMMAND タスクのコマンド
●09-137.プログラムを再開
一時停止していたプログラムを再度実行するには,「fg」または「bg」コマンドを使う。fgはフォアグラウンドで実行し,bgはバックグラウンドで実行する。テキスト・エディタやビューアといったコンソール上で動作する対話的なプログラムではfgを,処理を自動的に行ってくれるものや,Xで別ウインドウを開いて使うアプリケーションなどではbgを使うとよい。
fgやbgにはジョブIDを指定する。指定しかなった場合はカレント・ジョブが対象となる。
$ fg %1
$ bg %2
●09-138.プログラムを再起動
デーモンなどのプログラムを再起動するには,「kill」にオプションとして「-HUP」シグナルを指定する。「kill」の場合はプロセスIDを調べて指定する必要があるが,「killall」を用いればコマンド名で指定できる。
なお,「smbd」のようなデーモンなどを停止させるには,ルート権限が必要である。
$ kill -HUP 14673
# killall -HUP httpd
●09-139.プログラムを一時停止
プログラムを一時停止するには「stop」または「kill -STOP」を用いる。ジョブIDを使うときは「stop」または「kill -STOP」を,プロセスIDを使うときは「kill」を用いる。killでジョブIDを指定する場合は,ジョブIDの前に「%」を付ける必要がある。stopでジョブIDを省略した場合は,カレント・ジョブ(ジョブIDの後に"+"マークが付いたジョブ)が対象になる。他ユーザーが実行したプログラムを一時停止させるには,ルート権限が必要である。
なお,プログラム実行中に[Ctrl]キーと[Z]キーを同時に押すことでもプログラムを一時停止させることができる。
「kill」の場合は,プロセスIDを調べて指定する必要があるが,「killall」ならコマンド名で指定できる。
# killall -STOP smbd
●09-140.プログラムを強制終了
プログラムがハングアップするとkillでは終了しない場合がある。この場合は強制的に終了することになる。強制終了には「kill -KILL」や「killall
-KILL」を用いる。
psなどで,強制終了させる対象プログラムのプロセスIDを得て,killコマンドの後ろに指定する。ジョブIDを指定する場合はジョブIDの前に「%」を付ける必要がある。「kill」の場合は,プロセスIDを調べて指定する必要があるが,「killall」ならコマンド名で指定できる。
なお,「smbd」のようなデーモンなどを停止させるには,ルート権限が必要である。
$ kill -KILL 14673
# killall -KILL xfs
●09-141.プログラムを終了
プログラムを停止するには,プログラム上で停止操作をするほかに,「kill」や「killall」コマンドを用いる方法もある。「kill」や「killall」で停止させるには,psなどにより終了させたいプログラムのプロセスIDを調べ,そのIDを各コマンドの後ろに指定する。ジョブIDを指定する場合は,ジョブIDの前に「%」を付ける。「kill」の場合は,プロセスIDを調べて指定する必要があるが,「killall」ならコマンド名で指定できる。
「smbd」のようなデーモンなどを停止させるには,ルート権限が必要である。また,暴走したり無反応になったプロセスは,この方法では停止することができない。そのような場合は,「プログラムを強制終了する」を参照すること。
$ kill 14673
# killall lpd レンタルサーバーでは管理権限が必要です。
●09-142.ログアウトしてもプログラムを実行し続ける
nohupでコマンドを実行した場合,ログアウトしてもコマンド実行が継続される。長時間かかる処理を行う際やダイアルアップで接続している場合に役立つ。
ログイン中はジョブIDを持っているが,ログアウト後はプロセスIDのみになる。ログアウト後に処理を中止したい場合は,killコマンドで該当のプロセスIDを指定することになる。
また,処理中に出力されたメッセージは,そのプロセスを実行したディレクトリの"nohup.out"というファイルに保存される。
$ nohup grep "Jan" access_log > result &
●09-143.プログラム実行に要した時間を測る
実行するコマンドやプログラムの前に「time」を付けると,そのプログラムが実行していた時間を測ることができる。
$ time find / -name "log"
●09-144.優先順位を上げてプログラムを実行する
nice値により,プログラムの優先順位を指定できる。nice値は-20から19までの値であり,-20が最も優先順位が高く,19が最も低い。「-n数値」オプションでnice値を任意に設定できる。指定しないとnice値は10となる。「psl」の「NI」欄にnice値が表示される。
# nice -n -10 grep "Linux" target > result
レンタルサーバーで実行には管理権限が必要です。
●09-145.プログラムの優先順位を指定し直す
「renice」は動作しているプロセスのnice値を変更する。優先順位の変化分,変更するプロセスIDの順に指定する。ただし,一般ユーザーはnice値を増やすことはできるが,減らすことはできない。減らす場合は,レンタルサーバーではルート権限を得る必要がある。
また,プロセスIDの代わりに「-u ユーザ名」オプションを指定することで,指定したユーザーの権限で動作しているプロセスのnice値すべてを変更できる。
# renice -3 12566
●09-146.現在実行しているプログラムを知る
現在,動作しているプログラムを知るには,プロセス状況を知らせてくれる「ps」コマンドや,ジョブ状況を知らせてくれる「jobs」コマンドを使う。動作したプログラムには,そのLinux上で唯一の番号であるプロセスIDと,ターミナルごとのジョブIDが振られる。
現在,Linux上で動いているプログラムを知るには,プロセスの状態を知る「ps」コマンドを用いる。このとき,PIDがプロセスIDである。
$ ps alx
$ jobs
●09-147.定期的にプログラムを動かす
ログ・ファイルの切り替えなど,プログラムを定期的に繰り返し実行したい場合は「crontab」を用いる。
実行にはレンタルサーバーでは管理権限が必要です。
# crontab -e
00 01 * * * /usr/local/sbin/logrotate
●09-148.gz,tar.gzファイルを圧縮・伸張
$ gunzip gzip_file.gz
$ gzip target-file
$ tar zxvf package.tar.gz
$ tar czvf package.tar.gz package-dir
●09-149.Z,tar.Zファイルを圧縮・伸張
compress方式での圧縮・伸張もgzipと同様の手続きで行える。ただし,現在compress方式はあまり用いられず,gzip方式が浸透している。
$ uncompress compress_file.Z
$ compress target-file
$ tar xZvf package.tar.Z
$ tar cZvf package.tar.Z package-dir
●09-150.bz2,tar.bz2ファイルを圧縮・伸張
$ bunzip2 bzip2_file.bz2
$ bzip2 target-file
$ tar xIvf package.tar.bz2
$ tar cIvf package.tar.bz2 package-dir
戻る
|
−− 弊社メインサイト −−
ホームページ製作、システム開発はMSweb - 大阪
ホームページ製作・作成、システム開発、サーバー構築・保守にはMSwebをご利用下さい
携帯サイト 
−− 弊社姉妹サイト −−
ホームページ製作 発注企業に理解して欲しい内容
ホームページ発注企業、製作会社向けの内容です。
−− 弊社姉妹サイト −−
WEBシステム開発|PHPとPostgreSQLの開発例
入門者用のPHPとPostgreSQLを使ったWEBシステムの開発演習です。
−− 弊社姉妹サイト −−
ホームページ製作 大阪 | 製作手順の紹介−MSweb
ホームページ製作の手順をご紹介しています、デザイン、HTML、スタイルシートなどについて記載しています。
オープンソース・サンプル
MSweb OpenPNE 大阪
オープンソースのSNSです。ご興味があり使用されたい方は、
ID「msweb@msweb.biz」、パスワード「gua8hkj3」で管理ページにログインできます。
管理ページ
オープンソース・サンプル
MSweb ブログ
オープンソースのブログです。ご興味があり使用されたい方は、
ID「admin」、パスワード「bd0e86」で管理ページにログインできます。
管理ページ
オープンソース・サンプル
XOOPS
代表的なCMSのXOOPSです。ご興味があり使用されたい方は、
ユーザ名「msweb」、パスワード「as4g3mz」で管理者でログインできます。
オープンソース・サンプル
EC|CUBE(メイン・ページ)
EC|CUBE(管理ページ)
オープンソースの通販システムです。ご興味があり使用されたい方は、
ID「msweb」、パスワード「fd4upd2」で管理ページにログインできます。
オープンソース・サンプル
Joomla(メイン・ページ)
Joomla(管理ページ)
オープンソースのCMSです。ご興味があり使用されたい方は、
ID「admin」、パスワード「A2gT6B7F」で管理ページにログインできます。
▼ オープンソース・サンプル
SquirrelMail
オープンソースのWEBメールのシステムです、OP25Bの影響を受けません。
▼ オープンソース・サンプル
Mailman
Mailman(管理ページ)
オープンソースの電子メールでの討論やメルマガの配送リストを管理するためのシステムです。
サンプルのため投稿はできません。
|