OS個別の事項について
ls
はファイル名一覧を表示する。
【書式】 ls オプション ファイルパターン,ファイルパターン...
$ echo mom16?_ja.hml mom160_ja.html mom161_ja.html mom162_ja.html mom163_ja.html mom164_ja.html $ echo mom1[01]?_ja.html mom100_ja.html mom101_ja.html mom102_ja.html mom103_ja.html mom104_ja.html mom105_ja.html mom106_ja.html mom107_ja.html mom108_ja.html mom109_ja.html mom110_ja.html mom111_ja.html mom112_ja.html mom113_ja.html mom114_ja.html mom115_ja.html mom116_ja.html mom117_ja.html mom118_ja.html mom119_ja.html
-1
--format=single-column
-A
--almost-all
.
)と親ディレクトリ(..
)を除いた隠しファイルやディレクトリも表示する。
-a
--all
.
)と親ディレクトリ(..
)も含めた隠しファイルやディレクトリも表示する。
-B
--ignore-backups
-c
-t
)や詳細情報表示(-l
)の際、最終修正時刻ではなく最終状態変更時刻を用いる。
--color=when
-d
--directory
-F
-G
-H
--si
-h
--human-readable
-i
--inode
-k
--kilobytes
-L
--dereferance
【例】 $ ls -l 148l-noatom.xml.gz lrwxrwxrwx 1 rcsb rcsb 46 12月 13 2009 148l-noatom.xml.gz -> ../../divided/XML-noatom/48/148l-noatom.xml.gz $ ls -lL 148l-noatom.xml.gz -rw-r--r-- 1 rcsb rcsb 18101 2月 27 01:10 148l-noatom.xml.gz
-l
-c
オプション、-u
オプションを使うと、それぞれ最終状態変更時刻、最終アクセス時刻を表示する。ファイルの時刻が6ヶ月以上前、または1時間以上先の場合タイムスタンプは時刻の代わりに年が入る。-p, --file-type, --indicator-style=file-type
-F
と同様にファイル・ディレクトリ名の末尾に種類を示す文字列を付加するが、実行可能ファイルにはマークしない。
-R, --recursive
-r, --reverse
shell> ls -l ←アルファベット昇順(大文字→小文字) -rw-r--r-- 1 user user 89792246 3月 21 14:29 XYZ.txt -rw-r--r-- 1 user user 8293402 4月 1 04:02 abc.csv -rw-r--r-- 1 user user 49329 3月 27 13:04 def.txt -rw-r--r-- 1 user user 202421 4月 12 10:29 klmnop.txt -rw-r--r-- 1 user user 158362 2月 20 16:17 zhogehoge shell> ls -ltr ←古い順 -rw-r--r-- 1 user user 158362 2月 20 16:17 zhogehoge -rw-r--r-- 1 user user 89792246 3月 21 14:29 XYZ.txt -rw-r--r-- 1 user user 49329 3月 27 13:04 def.txt -rw-r--r-- 1 user user 8293402 4月 1 04:02 abc.csv -rw-r--r-- 1 user user 202421 4月 12 10:29 klmnop.txt
-S, --sort=size
shell> ls -l ←アルファベット昇順(大文字→小文字) -rw-r--r-- 1 user user 89792246 3月 21 14:29 XYZ.txt -rw-r--r-- 1 user user 8293402 4月 1 04:02 abc.csv -rw-r--r-- 1 user user 49329 3月 27 13:04 def.txt -rw-r--r-- 1 user user 202421 4月 12 10:29 klmnop.txt -rw-r--r-- 1 user user 158362 2月 20 16:17 zhogehoge shell> ls -lS ←大きい順 -rw-r--r-- 1 user user 89792246 3月 21 14:29 XYZ.txt -rw-r--r-- 1 user user 8293402 4月 1 04:02 abc.csv -rw-r--r-- 1 user user 158362 2月 20 16:17 zhogehoge -rw-r--r-- 1 user user 202421 4月 12 10:29 klmnop.txt -rw-r--r-- 1 user user 49329 3月 27 13:04 def.txt
-T
--full-time
時刻に関する情報を標準の省略形式ではなく完全な形式でリスト表示する。時刻の表示形式は date のデフォルトと同じ。この形式は変更できないが、時刻の文字列を cut で取り出し、結果を ‘date -d’に渡すことができる。
$ ls --full-time sample.txt -rw-r--r-- 1 user user 44768 2014-05-15 15:47:43.000000000 +0900 sample.txt $ ls --full-time sample.txt | cut -f 6 -d ' ' ←空白で区切った時の第6要素を取り出す 2014-05-15 $ date -d `ls --full-time sample.txt | cut -f 6 -d ' '` ←dateの既定書式で出力 2014年 5月 15日 木曜日 00:00:00 JST $ date -d `ls --full-time sample.txt | cut -f 6 -d ' '` "+%Y%m%d" ←西暦4桁月2桁日2桁の書式で出力 20140515
--time-style=スタイル名
CentOS 6.10(GNU bash, version 4.1.2(2)-release (x86_64-redhat-linux-gnu))やMacOS 10.14.6のTerminal(GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18))ではman lsでこのオプションに関する記載はなかった。前者ではls --helpでこのオプションの記載があった。
-l オプションと合わせて指定することによりタイムスタンプの表示方法を指定できる。指定できるスタイル名と書式は以下の通り。
スタイル名 | 書式 | 例 | 備考 |
---|---|---|---|
full-iso | 西暦4桁-月2桁-日2桁 時2桁:分2桁:秒2桁+小数第9位 時間帯 | 2019-09-24 17:00:00.123456789 +0900 | ls --full-time と同じ |
long-iso | 西暦4桁-月2桁-日2桁 時2桁:分2桁 | 2019-09-24 17:00 | |
iso | 月2桁-日2桁 時2桁:分2桁 | 09-24 17:00 | |
locale | (地域設定による) | 9月 24 17:00 2019 | |
+FORMAT | dateコマンドの書式による指定 |
-t
-r
オプションを併用(-tr
オプションを指定)すると逆順で出力(古い順、新しいものが下)。
shell> ls -l ←アルファベット昇順(大文字→小文字) -rw-r--r-- 1 user user 89792246 3月 21 14:29 XYZ.txt -rw-r--r-- 1 user user 8293402 4月 1 04:02 abc.csv -rw-r--r-- 1 user user 49329 3月 27 13:04 def.txt -rw-r--r-- 1 user user 202421 4月 12 10:29 klmnop.txt -rw-r--r-- 1 user user 158362 2月 20 16:17 zhogehoge shell> ls -lt ←新しい順 -rw-r--r-- 1 user user 202421 4月 12 10:29 klmnop.txt -rw-r--r-- 1 user user 8293402 4月 1 04:02 abc.csv -rw-r--r-- 1 user user 49329 3月 27 13:04 def.txt -rw-r--r-- 1 user user 89792246 3月 21 14:29 XYZ.txt -rw-r--r-- 1 user user 158362 2月 20 16:17 zhogehoge
--time=atime
、--time=access
--time=ctime
、--time=status
、--time=use
-U
、--sort=none
-u
--context
shell> ls --context drwxr-xr-x user user user_u:object_r:user_home_t . drwxrwxrwx user user user_u:object_r:user_home_dir_t .. -rw-r--r-- user user user_u:object_r:user_home_t hoge.html -rw-rw-r-- user user user_u:object_r:user_home_t foo.css -rw-r--r-- user user user_u:object_r:user_home_t fuga.txtコンテキスト情報を変更するにはchconコマンドを用いる。
なお、Mac OS X 10.4.11 の bash(2.05b.0(1)-release (powerpc-apple-darwin8.0))では前にハイフンが2つつく長い形式のオプションは使えないらしい。
参考文献・サイト
【書式】 find パス... オプション 条件 実行内容
オプション
-daystart
-depth
-follow
-help
--help
-maxdepth
階層数-mindepth
階層数-mount
-noleaf
-version
、--version
-xdev
perm -|+モード値
モード値には文字列若しくは8進数を指定する。
文字列の場合、a starting value of zero is assumed and the mode sets or clears permissions without regard to the process' file mode creation mask.この場合、指定値の先頭にはハイフンを使わないこと。
数値の場合、07777(S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO)のビットだけが比較される。数値の前にハイフン(-)を記すと、最低限指定値ビットが全てONになっている、つまりファイル権限値が指定値以上であれば真になる。数値の前にプラス(+)を記すと、指定値ビットのいずれかがONになっている、つまりファイル権限値が指定値以下であれば真になる。
条件
-amin 数値
-atime
の「分」版。
最終アクセス時刻とfindコマンドを起動した時刻との差が指定値であるファイルを処理対象とする。
数値は分(分単位に切り上げ)で指定したものとみなされる。数値のみなら「丁度」、"+"をつければ「より大」、"-"をつければ「より小」の意味となる。
-amin の引数例 |
時刻差範囲 |
---|---|
10 | 10:00<= 時刻 < 11:00(分単位に切り上げて10分) |
-30 | 00:00<= 時刻 < 30:00(分単位に切り上げて30分未満) |
+120 | 2:00:00< 時刻(分単位に切り上げて120分=2時間より大) |
-anewer ファイル名
-neweram
と同じ。指定ファイルの最終内容修正時刻よりも新しい最終アクセス時刻を持つファイルが対象となる。
-atime 引数
s
→秒m
→分(60秒)h
→時間(60分)d
→日(24時間)w
→週(7日)-atime の引数例 |
時刻範囲 |
---|---|
1 | 0:00:00< 時刻 <= 24:00:00(日単位に切り上げて1日) |
3 | 48:00:00< 時刻 <= 72:00:00(日単位に切り上げて3日) |
-3 | 0:00:00<= 時刻 <= 48:00:00(日単位に切り上げて3日未満) |
+3 | 72:00:00< 時刻(日単位に切り上げて3日より大) |
-6h | 0:00:00<= 時刻 < 6:00:00(6時間未満) |
-cmin n
-amin
とほぼ同等だが、-amin
は最終アクセス時刻と比較するのに対し、こちらは最終のファイルステータス修正時刻と比較する。
-cnewer ファイル名
-newercm
と同じ。指定ファイルの最終内容修正時刻よりも新しい最終ステータス修正時刻を持つファイルが対象となる。
-ctime 引数
-atime
とほぼ同等だが、-atime
は最終アクセス時刻と比較するのに対し、こちらは最終のファイルステータス修正時刻と比較する。
-empty
-false
-fstype ファイルシステムの型
-gid n
-group グループ名
-ilname ファイル名パターン
-iname ファイル名パターン
-inum n
-ipath パスのパターン
-iregex ファイル名パターン
-links n
-lname ファイル名パターン
-mmin n
-amin
とほぼ同等だが、-amin
は最終アクセス時刻と比較するのに対し、こちらは最終のファイル修正時刻と比較する。
-mnewer ファイル名
-newer
、-newermm
と同じ。
-mtime n
-atime
とほぼ同等だが、-atime
は最終アクセス時刻と比較するのに対し、こちらは最終のファイル修正時刻と比較する。
-newer ファイル名
-newerXY ファイル名
-name ファイル名パターン
対象ファイルのパス名の最後のファイル名部分が ファイル名パターン で指定したものとマッチするかどうかを調べ、マッチした場合は処理対象になる。 ファイル名パターン としては、シェルで使われるパターンマッチ指定 ("["(?)、"*"(任意の0文字以上)、"?"(任意の1文字)) が使用可能。これらの文字はバックスラッュ ("\") を前におけば、パターンマッチ指定ではなく通常の文字として扱われる。
find / \! -name "*.c" -p
なお、これらパターンマッチ指定を含む場合、文字列全体を引用符で囲んでおく必要がある[6]
-nouser
-nogroup
-path パスのパターン
-perm 許可属性
-perm -許可属性
-perm +許可属性
-regex パターン
例:ファイル名「./foo/xyzzy」
<マッチするパターン>
.*/[xyz]*
.*/foo/.*
<マッチしないパターン>※パスの一部にしかマッチしていない
xyzzy
/foo/
例:
$
-size 数値接尾辞
ファイルが占める領域が数値であれば真。接尾辞指定を省略した場合または b を指定した場合数値の単位はブロック(=512バイト)、c を指定した場合はバイト、k を指定した場合はキロバイト、w を指定した場合はワード(=2バイト)。サイズには間接ブロック(indirect block)は含まれないが、穴あきファイル(sparse file)における実際には割り当てられていないブロックについては含まれる。
【例1】カレントディレクトリにあってサイズ200kbytes以上のファイルを詳細表示 $ find . -maxdepth 1 -size +200k -ls 3037996676 332 -rw-rw-r-- 1 user user 332646 7月 20 2019 ./test.log 3037996688 419556 -rw-rw-r-- 1 user user 429621248 7月 30 2019 ./hoge.tar.gz 【例2】カレントディレクトリにあってサイズ200kbytes以下のファイルをサイズの大きいものから3つ表示 $ find . -maxdepth 1 -size -200k -printf "%s\t%p\n" | sort -nr | head -n 3 203773 ./4wg3.cif.gz 203772 ./3meg.cif.gz 203764 ./5igz.cif.gz
-true
-type タイプ
-uid n
-used n
-user ユーザ名
-xtype c
実行内容
-delete
例: $ ls -l *.log -rw-r--r-- 1 user user 70508 9月 1日 12:00 2018 201808.log -rw-r--r-- 1 user user 80413 8月 1日 12:00 2018 201807.log -rw-r--r-- 1 user user 89096 7月 1日 12:00 2018 201806.log -rw-r--r-- 1 user user 61858 6月 1日 12:00 2018 201805.log $ find *.log -mtime +60 201806.log 201805.log $ find *.log -mtime +60 | xargs rm $ ls -l *.log -rw-r--r-- 1 user user 70508 9月 1日 12:00 2018 201808.log -rw-r--r-- 1 user user 80413 8月 1日 12:00 2018 201807.log
-exec コマンド
-exec
より後に記された引数は「;」も含めて-exec
の引数として指定されたコマンドおよびその引数とみなされる。但し、「;」はシェルによって展開されないようバックスラッシュ(\)を直前に置いてエスケープする必要がある。更にこのバックスラッシュの直前には空白が必要[3]。文字列「{}」はヒットした各ファイル名に置換される。
例:./*.log で最終更新日が7日以上古いファイルファイルを移動する(サブディレクトリにあるファイルは対象としない)
$ find ./*.log -maxdepth 0 -mtime +7 -type f -exec mv {} ./old \;
-fls 出力先ファイル名
-fprint 出力先ファイル名
-fprint0 出力先ファイル名
-fprintf 出力先ファイル名 出力書式
-ok コマンド
-print
-exec
、-ls
、-print0
、-ok
のオプションがいずれも指定されていない場合、結果を標準出力(特に指定がなければ画面)へ結果を出力する。各結果(ファイルパス)の最後には改行が出力される。特にこの指定を行わなくても、指定があったものとして動作する。
-print0
-print
とほぼ同等だが、各結果の後に出力される文字は改行ではなくヌル文字(文字コード0)となる。
-printf 出力書式
-prune
-ls
出力書式
\
%
演算子
(
条件 )
!
、-false
、-not
【例】ファイル名の末尾が".bak"ではないファイル全てを表示。
find ! -name "*.bak" -print
%
【例】カレントディレクトリ以下にある、1日以内に更新されたファイルのファイル名を出力する。 find . -mtime -1 -print ※以下の通り、実行内容 -print の指定がなくても同じ(既定の動作が標準出力への出力であるため) find . -mtime -1 【例】/var/www/以下で、更新日付が15日以内のファイルをbzip形式で圧縮する(→圧縮についてはtar参照)。 tar -jxvf var_www.tar.bz2 `find /var/www/* -mtime -15` 【例】最終アクセス時刻が7日以上前のファイルを削除する rm `find -atime +7` または find -atime +7 -delete 【例】下記条件を全て満たすファイル名、該当行、行番号を表示する(→grepも参照のこと) * ファイル中に「hoge」を含む * ファイル名が「.pl」で終わる * カレントディレクトリ配下全てが対象 * パス・ファイル名中に「bkup」を含むファイルは除外する $ grep -n PDB `find . -name "*.pl" -print` | grep -v bkup ./foo01.pl:38: $PDB_DATA = $hoge_root . "/PDB"; ./boo01.pl:27:my $PDB_DATA = $DATA_HOME . "/PDB"; ./poo01.pl:80: $PDB_DATA = $DATA_HOME . "/PDB";
参考文献・サイト
man find
)やりたいこと:ファイル一覧をファイルのタイムスタンプでフィルタリングし、 しかも詳細形式( ls -l 相当)で出力する。
書式:
find [filename] -mtime
[+/-][day] -ls
例:
find * -mtime -7 -ls
カレントディレクトリにある全てのファイルの中で、
最終更新日が7日以内のものを、
詳細形式で出力する。
参考サイト:
UNIXコマンド [find]
カレントディレクトリ(.)にある、10日以上古いファイルを削除する。
修正日が10日以上古い(-mtime +10)、ファイルをみつけ、
それを表示(-ls)/それを削除(-exec rm {} \;)。
findコマンドの出力するファイル名リストが{}に代入されて、次のコマンド(rm)に渡されて処理される。最後は\; で締めるらしい。
find . -mtime +10 -ls
find . -mtime +10 -exec rm {} \;
参考サイト:findの使い方
gzip
コマンドは、オプションなしで実行した場合、指定したファイルをgzip形式で圧縮し、元のファイルは消去して「元のファイル名+『.gz』」のファイルが作成される。
複数ファイルを指定するときはスペースで区切る。ワイルドカードの使用もできる。省略すると標準入力からの入力となる。
【書式】 gzip オプション ファイル名
オプション
-d
、--decompress
、--uncompress
-f
、--force
【例1】hoge.txt を圧縮する(圧縮後ファイルのファイル名は hoge.txt.gz となり、hoge.txt 削除される) gzip hoge.txt 【例2】現在のディレクトリにある、拡張子が.txt
であるファイルを全て圧縮する。 gzip *.txt 【例3】ファイルarchive.gz
を解凍する。 gzip *.txt 【例4】拡張子が.gzであれば(ファイルの末尾から.gzを除去すると値が変わるのであれば)解凍を行う if [ "`basename $FILE`" != "`basename $FILE '.gz'`" ];then gzip $FILE fi 参照:if、test、basename
参考文献・サイト
ZIP形式でファイルを圧縮するにはzip
、解凍や書庫に内包されるファイルのファイル名一覧の表示を行うにはunzip
を用いる。
【書式】圧縮 zip オプション 書庫ファイル名 書庫に入れるファイルの名前
記号 | 内容 |
---|---|
* | 0文字以上の任意の文字(列) |
? | 任意の1文字 |
[...] | 括弧内に記した文字のいずれか1文字。ハイフンによる範囲指定(例:[a-h]、a〜hのいずれか1文字)や、感嘆符(!)またはキャレット記号(^)によるパターンの反転指定(例:[!0-6]、[^0-6]、0〜6の数字以外)も可能。左括弧を指定するには [[] と指定する。パターンに一致するファイルがなければ、パターン文字通りのファイル名が検索され、それもなければ拡張子 .zip を付加したファイルが検索される。自己解凍ZIP書庫についても対応している。明示的に自己解凍書庫を指定するなら .exe 拡張子を付けて指定する。 |
指定したファイルをzip書庫から削除する。
【例】foo.zip書庫からfoo/tom/junk、foo/harry/ で始まるすべてのファイル、.o で終わるあらゆるパスの全ファイルを削除する zip -d foo foo/tom/junk foo/harry/\* \*.o zip -d foo foo/tom/junk "foo/harry/*" "*.o"
$ zip awstats.zip /usr/local/awstats/data/awstats0?2014.hoge.org.txt adding: usr/local/awstats/data/awstats012014.hoge.org.txt (deflated 68%) adding: usr/local/awstats/data/awstats022014.hoge.org.txt (deflated 69%) adding: usr/local/awstats/data/awstats032014.hoge.org.txt (deflated 67%) adding: usr/local/awstats/data/awstats042014.hoge.org.txt (deflated 66%) adding: usr/local/awstats/data/awstats052014.hoge.org.txt (deflated 68%) adding: usr/local/awstats/data/awstats062014.hoge.org.txt (deflated 68%) adding: usr/local/awstats/data/awstats072014.hoge.org.txt (deflated 66%) adding: usr/local/awstats/data/awstats082014.hoge.org.txt (deflated 68%) adding: usr/local/awstats/data/awstats092014.hoge.org.txt (deflated 65%) $ unzip -l awstats.zip Archive: awstats.zip Length Date Time Name -------- ---- ---- ---- 186689 02-01-14 23:34 usr/local/awstats/data/awstats012014.hoge.org.txt 187477 03-01-14 23:35 usr/local/awstats/data/awstats022014.hoge.org.txt 124371 04-01-14 23:35 usr/local/awstats/data/awstats032014.hoge.org.txt 115929 05-01-14 23:21 usr/local/awstats/data/awstats042014.hoge.org.txt 135132 06-01-14 23:22 usr/local/awstats/data/awstats052014.hoge.org.txt 124932 07-01-14 23:36 usr/local/awstats/data/awstats062014.hoge.org.txt 124611 08-01-14 23:36 usr/local/awstats/data/awstats072014.hoge.org.txt 136844 09-09-14 19:50 usr/local/awstats/data/awstats082014.hoge.org.txt 65119 09-10-14 23:38 usr/local/awstats/data/awstats092014.hoge.org.txt -------- ------- 1201104 9 files $ zip awstats_nopath.zip -j /usr/local/awstats/data/awstats0?2014.hoge.org.txt adding: awstats012014.hoge.org.txt (deflated 68%) adding: awstats022014.hoge.org.txt (deflated 69%) adding: awstats032014.hoge.org.txt (deflated 67%) adding: awstats042014.hoge.org.txt (deflated 66%) adding: awstats052014.hoge.org.txt (deflated 68%) adding: awstats062014.hoge.org.txt (deflated 68%) adding: awstats072014.hoge.org.txt (deflated 66%) adding: awstats082014.hoge.org.txt (deflated 68%) adding: awstats092014.hoge.org.txt (deflated 65%) $ unzip -l awstats_nopath.zip Archive: awstats_nopath.zip Length Date Time Name -------- ---- ---- ---- 186689 02-01-14 23:34 awstats012014.hoge.org.txt 187477 03-01-14 23:35 awstats022014.hoge.org.txt 124371 04-01-14 23:35 awstats032014.hoge.org.txt 115929 05-01-14 23:21 awstats042014.hoge.org.txt 135132 06-01-14 23:22 awstats052014.hoge.org.txt 124932 07-01-14 23:36 awstats062014.hoge.org.txt 124611 08-01-14 23:36 awstats072014.hoge.org.txt 136844 09-09-14 19:50 awstats082014.hoge.org.txt 65119 09-10-14 23:38 awstats092014.hoge.org.txt -------- ------- 1201104 9 files
【書式】解凍 unzip オプション 解凍対象ファイル名 -x 除外ファイル -d 解凍先ディレクトリ 【書式】書庫に含まれるファイル名一覧を表示 unzip -l 対象zip書庫ファイル名
Linuxでzip圧縮し、Windowsで解凍すると書庫内ファイルのファイル名のうちマルチバイト部分が文字化けしている(Ubuntu 10.04→Windows 7等で確認)。 対策方法は以下の通り(参考:Linux 上で Windows 向けの zip ファイルを作る - ~fumi/ChangeLog)
$ ls ふが.jpg ぷー.jpg ほげ.jpg $ convmv --notest -f utf8 -t cp932 * Your Perl version has fleas #37757 #49830 mv "./ふが.jpg" "./�ӂ�.jpg" mv "./ぷー.jpg" "./�Ձ[.jpg" mv "./ほげ.jpg" "./�ق�.jpg" Ready! $ ls ?ق?.jpg ?ӂ?.jpg ?Ձ[.jpg $ zip ../text.zip ./* adding: �ӂ�.jpg (deflated 0%) adding: �ق�.jpg (deflated 0%) adding: �Ձ[.jpg (deflated 0%) # これをWindows側で見ると文字化けせず見える
書庫の操作を行う。
tar 機能指定文字 オプション ファイル名/ディレクトリ名 対象ディレクトリ
最初の引数では機能を指定する(必須、-Acdrtux
のいずれか1つ)。1文字表記(ハイフン1個+1文字)の場合、他のオプションと合わせ続けて指定できる(例:-zxvf
)。
ファイル名にパスを含めて指定すると、書庫内でも階層化されてファイルが格納される。但し、既定の動作では最上位(システムルート)を示すスラッシュは除去される。
【例】
(1)gzip形式で圧縮された書庫ファイル file1.tar.gz 中の全ファイルを解凍・展開する。
shell> tar -zxvf file1.tar.gz
※2つ目以降の引数にファイル名を指定すれば指定ファイルのみが取り出される
(2)bzip2形式で圧縮された書庫ファイル file1.tar.bz2 を解凍・展開する。
7z形式(7za
)に対応するオプションはないようなので、パイプでつないで処理する。
shell> 7za x so foo.tar.7z | tar -xf -
shell> tar -jxvf file1.tar.bz2
(3)hoge ディレクトリ以下をgzip形式で圧縮した書庫ファイル hoge.tar.gz を作成
shell> tar -zcvf hoge.tar.gz hoge
(4)書庫ファイル hoge.tar.gz 内のファイル名一覧表示
shell> tar -tzf hoge.tar.gz
(5)書庫ファイル hoge.tar にファイル foo.txt を追加
shell> tar -rf hoge.tar foo.txt
※圧縮された書庫への追記は失敗するよう。書庫が圧縮されている場合、
「gzip -d 圧縮書庫ファイル名」などであらかじめ解凍しておく
(6)/var/www/html/index.php を backup.tar に追加
[user@server ~]$ tar -cvf backup.tar /var/www/data ※/var/www/data 以下を格納した書庫を backup.tar に作成
shell> tar -r -C /var/www/html -f backup.tar index.php
※/var/www/html/index.php を書庫 backup.tar に追加
機能指定文字
-A
--catenate
--concatenate
-c
--create
【例】 $ tar -cvf test.tar hoge* hoge.txt hoge.jpg hoge.png
-d
--diff
--compare
--delete
-M
--multi-volume
-r
--append
【例】hoge.txtというファイルをfoo.tarというアーカイブに追加する tar -rf foo.tar hoge.txtなおgzipなどの圧縮がかかった書庫に対してファイルの追加はできない。
$ tar -rzf foo.tar.gz hoge.txt ar: 圧縮されたアーカイブはアップデートできません より詳しい情報は `tar --help' または `tar --usage' で.
-t
--list
-u
--update
-v
--verbose
-x
--extract
--get
--strip-components=階層数
【例】 $ tar -zxvf mediawiki-1.20.6.tar.gz -C /var/www/html/wiki/ mediawiki-1.20.6/ mediawiki-1.20.6/profileinfo.php ... mediawiki-1.20.6/images/.htaccess mediawiki-1.20.6/images/README $ ls /var/www/html/wiki AdminSettings.php UPGRADE index.php5 redirect.phtml AdminSettings.sample api.php install-utils.inc resources COPYING api.php5 languages serialized CREDITS bin load.php skins FAQ cache load.php5 t HISTORY composer.json maintenance tests INSTALL config math thumb.php LocalSettings.php docs mediawiki-1.20.6 thumb.php5 Makefile extensions mw-config thumb_handler.php README images opensearch_desc.php thumb_handler.php5 RELEASE-NOTES img_auth.php opensearch_desc.php5 trackback.php RELEASE-NOTES-1.19 img_auth.php5 php5.php5 trackback.php5 RELEASE-NOTES-1.20 includes profileinfo.php wiki.phtml StartProfiler.php.bak index-test.php redirect.php StartProfiler.sample index.php redirect.php5 # ディレクトリ「mediawiki-1.20.6」が指定場所(/var/www/html/wiki)にできている $ rm -rf /var/www/html/wiki/mediawiki-1.20.6 $ tar -zxvf mediawiki-1.20.6.tar.gz -C /var/www/html/wiki/ --strip-components=1 $ ls /var/www/html/wiki AdminSettings.php UPGRADE index.php5 resources AdminSettings.sample api.php install-utils.inc serialized COPYING api.php5 languages skins CREDITS bin load.php t FAQ cache load.php5 tests HISTORY composer.json maintenance thumb.php INSTALL config math thumb.php5 LocalSettings.php docs mw-config thumb_handler.php Makefile extensions opensearch_desc.php thumb_handler.php5 README images opensearch_desc.php5 trackback.php RELEASE-NOTES img_auth.php php5.php5 trackback.php5 RELEASE-NOTES-1.19 img_auth.php5 profileinfo.php wiki.phtml RELEASE-NOTES-1.20 includes redirect.php StartProfiler.php.bak index-test.php redirect.php5 StartProfiler.sample index.php redirect.phtml # 今度はディレクトリ「mediawiki-1.20.6」はできずその配下の各ファイルディレクトリが指定場所(/var/www/html/wiki)に展開される
オプション
--help
-C ディレクトリ
、--directory ディレクトリ
-f ホスト名: ファイルパス・名
-j
--bzip2
【例1】hogeディレクトリ配下の各ファイルを hoge.tar.bz2 に圧縮(bzip2圧縮書庫) tar -jxv hoge.tar.bz2 hoge 【例2】例1のファイル一覧出力付き tar -jxvf hoge.tar.bz2 hoge 【例3】bzip2圧縮書庫ファイル hoge.tar.bz2 内ファイルリスト表示 tar -jtf hoge.tar.bz2 【例4】bzip2圧縮書庫ファイル hoge.tar.bz2 を解凍(ファイル一覧出力付き) tar -jxvf hoge.tar.bz2
-J
--xz
【例1】hogeディレクトリ配下の各ファイルを hoge.tar.xz に圧縮(xz圧縮書庫) tar -Jxv hoge.tar.xz hoge 【例2】例1のファイル一覧出力付き tar -Jxvf hoge.tar.xz hoge 【例3】xz圧縮書庫ファイル hoge.tar.xz 内ファイルリスト表示 tar -Jtf hoge.tar.xz 【例4】xz圧縮書庫ファイル hoge.tar.xz を解凍(ファイル一覧出力付き) tar -Jxvf hoge.tar.xz
--exclude ファイルパターン
-X ファイル名
--exclude-from ファイル名
-z
、--gzip
(圧縮)、--gunzip
(解凍)【例1】hogeディレクトリ配下の各ファイルを hoge.tar.gz に圧縮(gzip圧縮書庫) tar -zxv hoge.tar.bz2 hoge 【例2】例1のファイル一覧出力付き tar -zxvf hoge.tar.gz hoge 【例3】gzip圧縮書庫ファイル hoge.tar.gz 内ファイルリスト表示 tar -ztf hoge.tar.bz2 【例4】gzip圧縮書庫ファイル hoge.tar.gz を解凍(ファイル一覧出力付き) tar -zxvf hoge.tar.gz
-Z
、--compress
(圧縮)、--uncompress
(解凍)-v
参考文献・サイト:
man tar
)書式:
bzip2 [-cdfkqstvzVL123456789] [ファイル名 ...]
オプション
例1:test.tar.bz2
を解凍・展開する。
bzip2 -dc test.tar.bz2 | tar xvf -
この形式に対応したtar
コマンドが使える場合はbzip2
を使う必要はない。
7-zipはオープンソースのファイル圧縮解凍アプリケーション。元々Windows用として開発されていたが、現在では他のプラットフォーム用にも移植されUNIX系OSでも使用可能[7][8]。
CentOS/RHEL系の場合yumでp7zipをインストールすれば使用可能。コマンド名は"7za"。
# yum install yum list p7zip # 7za x jogamp-all-platforms.7z # x でディレクトリ付き解凍 7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,8 CPUs) Processing archive: jogamp-all-platforms.7z Extracting jogamp-all-platforms/gluegen-java-src.zip (中略) Extracting jogamp-all-platforms Everything is Ok Folders: 17 Files: 290 Size: 67995588 Compressed: 16490275 #
コマンドの書式は以下の通り。
【書式】 7za 機能指定 - スイッチ アーカイブ名 引数
機能指定
スイッチ
【例】 7za x -so foo.tar.7z | tar -xf -
【例】 tar -cf - targetdir | 7za a -si foo.tar.7z
.Z
拡張子を持つ圧縮ファイルの作成、解凍はそれぞれcompress
、uncompress
のコマンドで行う。圧縮の際、各ファイルの名前は変更され、拡張子.Z
が付加される。解凍の際は逆に拡張子.Z
が除去される。[9]
【書式】 compress -fv -b ビット ファイル名... compress -c -b ビット ファイル名 uncompress -fv ファイル名... uncompress -c ファイル名
-b ビット
-c
-v
オプションは無視される。例え圧縮後のデータが元のファイルより大きくなっても圧縮を試みる。
-f
-v
-c
オプションが指定された場合、このオプションを指定しても無視される。
圧縮にはレンペル・ジヴ(Lempel-Ziv)アルゴリズムを修正したものが用いられている。まず、ファイル中にある共通の部分文字列を...
7-Zip で使われているアルゴリズム LZMA が gzip 相当の圧縮ツール xz として実装されたもの[10]
ハードリンクは同一ファイルの別名で、シンボリックリンクはWindowsで言うショートカット、Macで言うエイリアスのようなものらしい。シンボリックリンクを作るコマンドは以下の通り。
ln -s oldfile newfile
オプション一覧は以下の通り。
ln (option) file/directory name linkfile/linkdirectory name
ls
コマンドで出力したファイル名一覧をパイプでperlに渡して処理。
【例】カレントディレクトリのmom???_??.jpg ファイルに対するシンボリックリンクファイルを、 ファイル名のmomをpdbに変更して作成(?は数字) ls -1 mom???_??.jpg | perl -n -e 'if(s/^(mom)([0-9]{3}_[0-9]{2}¥.jpg)/ln -s $1$2 pdb$2/){system($_)};'
バッククォート(`)を使ってコマンドを入れ子にしてもできる(但し、この方法だと、元ファイルと同一ファイル名のリンクファイルしか作成できない)。
【例】../../../resource/mom/imagesにあるjpegファイル全てのシンボリックリンクをカレントディレクトリに作成。 ln -s `ls ../../../resources/mom/images/*.jpg` ./
【例】ディレクトリのシンボリックリンクを削除 shell> ls -l lrwxrwxrwx 1 eprots eprots 29 5月 19 11:08 jV -> /usr/local/share/jV/jV_3_6_2/ lrwxrwxrwx 1 eprots eprots 29 5月 19 11:07 jV_3_6_2 -> /usr/local/share/jV/jV_3_6_2/ shell> unlink jV_3_6_2
シンボリックリンクファイルをrm
コマンドで削除しても同じ。
但し、ディレクトリのシンボリックファイルをディレクトリ扱いして、rm -r
を使うと、リンク元を削除しようとするので注意。
ファイルやディレクトリをコピーする。
書式1:1個のファイルを、コピー先のファイル名を指定して、コピーする。
cp オプション コピー元ファイル名 コピー先ファイル名
2つ目の引数として指定するコピー先ファイル名は、ディレクトリとして存在しないこと。ディレクトリとして存在する名前を指定した場合、次の書式2であると見なされる。 ファイル名やディレクトリ名に空白が含まれる場合はファイル名の前後をダブルクォート(")またはシングルクォート(')で囲む必要がある。そうしないと2つの引数であると見なされてしまう。これは書式2でも同じ。
【例1】ファイル hoge.txt をファイル hoge2.txt にコピーする。 cp hoge.txt hoge2.txt
書式2:1個以上のファイルを、コピー先ディレクトリを指定してコピーする。
cp オプション コピー元ファイル名... コピー先ディレクトリ
コピー元ファイル名...には複数のファイルを列挙できる。ファイル名は空白で区切る。書式2の場合、最後の引数がコピー先ディレクトリとなる。こちらの書式の場合、ファイル名はそのままでコピーされる。
【例2】ファイル hoge.txt をファイル hoge2.txt にコピー。 shell> ls -F ディレクトリ名の後に "/" をつけてカレントディレクトリのファイル・ディレクトリ名一覧を表示。 bak/ hoge.txt hoge2.txt shell> ls -F bak shell> (bakフォルダ内にはまだファイルは1つもない) 【例3】ファイル hoge.txt と hoge2.txt を bak フォルダにコピー。 shell> cp hoge.txt hoge2.txt bak shell> ls -F bak/ hoge.txt hoge2.txt shell> ls -F bak hoge.txt hoge2.txt 【例4】ファイル hoge.txt をファイル hoge hoge.txt にコピー (コピー先ファイル名に空白が含まれる)。 shell> cp hoge.txt "hoge hoge.txt" shell> ls -F bak/ hoge.txt hoge2.txt hoge hoge.txt
オプションは以下の通り。
-a
、--archive
-dpR
と同じ。
-d
-p
-r
-R
、--recursive
-r
はシンボリックリンク以外は全てファイルとして見なす)。
-v
、--verbose
【例5】カレントディレクトリの全ファイルを、確認なしでファイル名を表示しながら、属性そのままでコピー。 cp -fpv * ../dir2
参考サイト、文献:
man cp
)誤ってrmコマンドなどでファイルを削除してしまった時、extundelete[8]をインストールし同名のコマンドを実行することにより復元できる...かも知れない[7]。
[10]
書式1:
mv [-f | -i | -n] [-v] 移動元ファイル 移動先ファイル
移動先ファイルがディレクトリ名として存在しない名前である場合、移動先ファイルパスと名前と見なされる。既存のディレクトリ名と一致した場合は移動先ディレクトリを指定した書式2であると見なされる。
書式2:
mv [-f | -i | -n] [-v] 移動元ファイル ディレクトリ
この場合、ファイル名はそのままで、ファイルの場所を指定したディレクトリへと移動する。
オプション:
-f
:上書き確認なしで実行(このオプションを指定すると、前に指定した-i
や-n
オプションは無視される)-i
:同名ファイルがあった場合、確認する(Y/yで実行、このオプションを指定すると、前に指定した-f
や-n
オプションは無視される)-n
:同名ファイルがあった場合、スキップする(このオプションを指定すると、前に指定した-f
や-i
オプションは無視される)-v
:経過を詳細表示(移動前後のファイル名を表示)
移動元、移動先のいずれかの実体がローカルにない場合、すなわちNFSマウントされた領域であった場合うまくいかない場合あり。この場合は cp
コマンドでファイルをコピーしてから移動元を削除するといいらしい[2]。
参考文献・サイト
pwd
はカレントディレクトリを絶対パスで表示する。
$ pwd /home/user
bashの場合、pwd
コマンドは以下の2種類がある[28]。
シンボリックリンクをたどらないるオプション(-P)とシンボリックリンクをたどるオプション(-P)があって、オプションを指定しなかった時の既定値は以下の通り。
CentOS 6.8既定の動作を確認した結果は以下の通り。
$ ls -l total 8 drwxr-xr-x 2 user user 68 2 13 12:11 src lrwxr-xr-x 1 user user 4 2 13 12:11 symlink -> src $ cd symlink $ pwd 内部コマンド(既定値は -L シンボリックリンクをたどらない) /home/user/symlink $ pwd -L /home/user/symlink $ pwd -P /home/user/src $ /bin/pwd 外部コマンド(既定値は -P シンボリックリンクをたどる) /home/user/src $ /bin/pwd -L /home/user/symlink $ /bin/pwd -P /home/user/src
cd
はカレントディレクトリを移動する。
指定したパスにカレントディレクトリを移動
cd パス
直前のカレントディレクトリ移動前のディレクトリに移動
cd -
離れたディレクトリを行き来するには、次項も参照。
pushd
、popd
、dirs
などを使うと便利[5]。
コマンド | 内容 | 使用例など |
---|---|---|
dir | ディレクトリスタック一覧表示 | |
pushd | ディレクトリ追加、移動 | 引数に「ディレクトリ」を指定すれば「ディレクトリスタックにディレクトリを追加し、そのディレクトリに移動」、引数に「+自然数」を指定すれば、ディレクトリスタックのn+1番目にあるディレクトリに移動する。引数を指定しないのと「+1」を指定するのは同じ。 |
popd | 2番目のディレクトリに移動し、1番目のディレクトリをディレクトリスタックから削除する。 |
[user@mypc ~]$ pwd /home/user [user@mypc ~]$ pushd /tmp /tmp /home/user [user@mypc ~]$ dirs /tmp /home/user
mkdir オプション ディレクトリ名
-m モード
--mode=モード
-p
--parent
【例】 shell> ls ※まだ何もサブディレクトリはない shell> mkdir -p foo/bar shell> ls foo shell> ls foo bar
-v
--verbose
--parent
オプションと合わせて使用すると役立つ。
参考文献・サイト:
man mkdir
GNU fileutils 4.1、18 June 2002)
rename
コマンドを使う。書式は以下の通り。但し、Macのターミナル(bash)では使えないみたい。CentOS5.2では使えた。
rename (検索文字列) (置換文字列) (検索ファイル名)
Ubuntuでは使い方が違った。
rename オプション Perl表現 ファイル名
オプション
検索ファイル名にはワイルドカード(?:任意の1文字、*:任意の0文字以上の文字列)が使える。
例:abc01.jpg, abc02.jpg, ... というファイル群のファイル名に含まれる "abc" を "xyz" に変える。
> ls abc0?.jpg abc01.jpg abc02.jpg abc03.jpg abc04.jpg > rename abc xyz abc0?.jpg > ls abc0?.jpg xyz01.jpg xyz02.jpg xyz03.jpg xyz04.jpg
ファイル名を全て小文字に変換する。スクリプトファイルを用意する。
[downcase.sh] #!/bin/sh for f in * do mv $f `echo $f | tr '[A-Z]' '[a-z]'` done [処理] chmod +x downcase.sh ./downcase.sh *
これならrenameコマンドでできる。
rename 'tr/A-Z/a-z/' *
参考文献・サイト:
ls
コマンドと perl
コマンドをパイプでつないで処理する方法もあるようだが、前項の rename
コマンドの方が手軽と思われる。
例:"jV_manual
" で始まり ".html
" で終わるファイル名から最初の"jV_
" を削除する。
ls -1 jV_manual*.html | perl -n -e 'if(s/^(jV_manual)(.+)(\.html)/mv $1$2$3 manual$2$3/){system($_)};' ---- 01:ls -1 jV_manual*.html "jV_manual
" で始まり ".html
" で終わるファイルを各エントリー1行で表示する 02:| 01の結果を次に渡す 03:perl -n -e ループ動作を(-n)今すぐ実行(-e) 04:'if(05) ...の内容に合致すれば、 05:s/06/07/ 06のパターンに一致するものを07に置換する 06:^(jV_manual)(.+)(.html) jV_manualで始まり($1)、その後に1文字以上($2)あって、更に.html($3)が来るもの 07:mv $1$2$3 manual$2$3 mv 元のファイル名 manual$2$3
次のような方法もある。
【例】「mom(数字3文字).html」→「mom(数字3文字)_1.html」(拡張子前に「_1」を挟む) ls -1 | egrep '^mom[0-9]{3}\.jmol$' | sed -E 's/(mom[0-9]{3})(\.jmol)/mv -i \1\2 \1_1\2;/' | /bin/sh ※sed コマンドの拡張正規表現を有効にするオプションは、Mac の bash では "-E" だったが、CentOS 5.4では "-r"だった。 【例】1abcで始まり_???.xml(???は数字3文字)で終わるファイルの???の前に0を挿入(数値を4桁に) ls -1 | egrep '^1abc.*_[0-9]{3}\.xml$' | sed -r 's/^(1abc.*_)([0-9]{3}\.xml)$/mv \1\2 \10\2/' | /bin/sh 1abc-bb-1_001.xml → 1abc-bb-1_0001.xml ---- 01:ls -1 ファイル名一覧を各行に1エントリーずつ表示する 02:| 01の結果を次に渡す 03:egrep 'mom[0-9]{3}\.jmol$' 「mom(数字3文字).html」に一致する行(ファイル名)のみ抽出 04:sed -E 's/(mom[0-9]{3})(\.jmol)/mv \1\2 \1_1\2;/' 拡張正規表現を使って(-E) 「mom(数字3文字).html」を「mv mom(数字3文字).html mom(数字3文字)_1.html」 最後のセミコロンは1行に複数のコマンドを書くためのコマンド間区切り。 05:/bin/sh シェルコマンドとして解釈して実行
ファイルを読み込んで出力する。既定の出力先は標準出力、つまりファイルの内容が画面に表示される。リダイレクト(>)を使ってファイルに出力することもできる。
【書式】 cat -benstuv ファイル名 ファイル名...
オプション
-b
-e
-v
オプションの動作)、各行の最後に"$"を付ける。-n
-s
-t
-v
オプションの動作)、タブを"^I"で表示する。-u
-v
【例1】標準入力の内容をファイルに書き出す shell> cat - test.txt aiueo ^D ※標準入力はハイフン( - ) で表す。第2引数で出力先を示す。 MS-DOSの"COPY CON (ファイル名)"に相当するもの。 【例2】1行入力するごとに、ファイルに出力していく。 shell> cat -u - test.txt aiueo kakikukeko ^D 【例3】既存ファイルに追記していく。 shell> cat -u - >>test.txt 3.141592653589793238 2.7182818284 ^D
出力を行うファイルは複数指定して連結(concatenate)することも可能。
【例4】file1.txt の内容の後に file2.txt の内容を加えて file_all.txt に書き出す
shell> cat file1.txt file2.txt > file_all.txt
圧縮されたテキストの内容を(解凍せず直接)表示するにはzcat
コマンド1が使える。
参考文献・サイト
head
コマンド、tail
コマンドを使うとファイルの先頭部分や末尾部分だけを表示することができる。
【書式】 head オプション ファイル名 ,ファイル名... tail オプション ファイル名 ,ファイル名...
オプション
-c 値
、--bytes=値
head
...無符合→ファイルの先頭から、頭に"-"を付ける→ファイルの末尾からtail
...無符合→ファイルの末尾から、頭に"+"を付ける→ファイルの先頭から-n 値
、--lines 値
-c
オプションと同じ。
-F
tail
コマンドが検知した場合、ファイルを閉じて開き直す。入力がファイルではなく標準入力の場合、このオプションは無視される。
-f
-r
tail
コマンドが検知した場合、ファイルを閉じて開き直す。入力がファイルではなく標準入力の場合、このオプションは無視される。
-v
、--verbose
オプションの指定が無かった場合の既定の動作は、head
の場合先頭から10行表示(head -n 10
)、tail
の場合末尾から10行表示(tail -n 10
)。
複数のファイルを指定した場合は、ファイル名も合わせて出力される。形式は「===> ファイル名 <===
」
一部オプションはシステムによっては利用できないものがあるよう(Mac OS X 10.4.11 では head
の位置指定値に"-"を付けるとエラーになった)。
【例1】file1.txt の末尾20行目を file1_last20.txt に出力する。 tail -n 20 file1.txt > file1_last20.txt 【例2】file1.txt の20行目〜末尾を file1_20toend.txt に出力する。 tail -n +20 file1.txt > file1_20toend.txt 【例3】file1.txt の先頭20行目を file1_head20.txt に出力する。 head -n 20 file1.txt > file1_head20.txt 【例4】file1.txt の先頭〜末尾より20行目までを file1_headtolast20.txt に出力する。 head -n -20 file1.txt > file1_headtolast20.txt
参考文献・サイト:
man tail
)
less
コマンドはテキストファイルの閲覧を行う。vi
と似た操作インタフェースを持つがvi
のように編集することはできない。
【書式1】指定ファイルを閲覧する less オプション ファイル名 【書式2】ヘルプを表示して終了する。 less -? less --help 【書式3】バージョン情報を表示して終了する。 less -V less --version
オプション
以下にless画面内で使用できるコマンドについて記す。"+" は前のキーを入力してから後のキーを入力する(例:ESC + v → ESCを入力してからvを入力)。"-" は前後のキーを同時に入力する(例:Ctrl-v → Ctrlキーを押しながらvを入力)
システムによっては既に他の用途に割り当てられてlessのコマンドとしては使えないものもありえる。
ヘルプと終了
コマンド | 動作内容 |
---|---|
h |
コマンドの概要を表示。 |
H |
|
q |
lessを終了する。 |
:q |
|
Q |
|
:Q |
|
ZZ |
カーソル移動コマンド
コマンド | 動作内容 | 備考 | |
---|---|---|---|
そのまま | 前に数値Nあり | ||
e |
下に1行スクロール | 下にN行スクロール | ファイルの末尾に到達した場合はそれ以上スクロールしない。 |
Ctrl-E |
|||
j |
|||
Ctrl-N |
|||
RETURN | |||
y |
上に1行スクロール | 上にN行スクロール | ファイルの先頭に到達した場合はそれ以上スクロールしない。 |
Ctrl-Y |
|||
k |
|||
Ctrl-K |
|||
Ctrl-P |
|||
f |
下に1Window分スクロール | 下にN行スクロール |
|
Ctrl-F |
|||
Ctrl-V |
|||
SPACE | |||
b |
上に1Window分スクロール | 上にN行スクロール |
|
Ctrl-B |
|||
ESC+v |
|||
z |
下に1Window分スクロール | 下にN行スクロール |
|
w |
上に1Window分スクロール | 上にN行スクロール |
|
:n
:p
d
、Ctrl-d
v
、f
、Ctrl-f
z
オプション参照)。 N が画面サイズより大きい場合は、最後の表示可能な部分のみが表示される。なお、システムによっては Ctrl-v
が特殊な機能打ち消し文字に割り当てられていてこの用途では使えない。a
オプションと j
オプションで変更可能)。以下の文字をパターンの始めに置くと特殊な意味を持ち、パターンの一部を構成するのではなく検索方法を変更する役割を持つ。
n
、!
e
、*
f
、@
a
、j
オプションの設定に関係なくコマンドラインリストの最初のファイルの先頭行から検索を開始する。r
u
、Ctrl-u
b
、Ctrl-b
、ESC + v
、Ctrl-f
z
オプション参照)。 N が画面サイズより大きい場合は、最後の表示可能な部分のみが表示される。a
オプションと j
オプションで変更可能)。以下の文字をパターンの始めに置くと特殊な意味を持ち、パターンの一部を構成するのではなく検索方法を変更する役割を持つ。
n
、!
e
、*
f
、@
a
、j
オプションの設定に関係なくコマンドラインリストの最後のファイルの最終行から検索を開始する。r
動作 | 前(次) | 後(前) | 備考 |
---|---|---|---|
1行 | RETURN、(Ctrl-)e 、(Ctrl-)n 、(Ctrl-)j |
(Ctrl-)y 、(Ctrl-)k 、Ctrl-p |
左記コマンドの前に数値を付加すると移動行数を指定したことになる(例:3 + e → 3行下に移動)。 |
半ウインドウ | (Ctrl-)d |
(Ctrl-)u |
|
1ウインドウ | SPACE、Ctrl-v 、f 、Ctrl-f |
b 、Ctrl-b 、ESC + v 、Ctrl-f |
|
ファイルの末尾 | g、< 、ESC+< |
G、> 、ESC+> |
|
パターン検索 | /パターン | ?パターン | |
ファイル | :n |
:p |
複数ファイルが読み込まれた場合。 |
圧縮されたテキストの内容を(解凍せず直接)表示するにはzless
コマンドが使える。
ファイルを開こうとすると「バイナリファイルでも開く?」と聞かれ、それでも開くと日本語が化けてしまう時、LESSCHARSET環境設定を端末の表示に用いている文字コードに合わせるといいらしい[27]。
【例】utf-8に設定する
$ export LESSCHARSET=utf-8
参考文献・サイト
man less
)
行数、単語数、文字数、バイト数を数える。オプションを指定した場合、指定した値とファイル名だけを表示。
オプションを指定しない場合は-clw
を指定した場合と同じ(行数、単語数、バイト数、ファイル名を出力)。
行は改行文字で区切られた文字列、単語は空白文字で区切られた文字列を指す。
複数のファイルを指定した場合、最後に行数、単語数、バイト数の各項目別合計も表示。
【書式】 wc [-clmw] [ファイル名 ...]
オプション
-c
-l
-m
-w
【例】 shell> wc test.csv 70502 140986 34921932 test.csv ↑行数 単語数 バイト数 ファイル名
参考文献・サイト:
man wc
)【書式】 split オプション ファイル名 接頭辞
オプション
-b バイト数
-l 行数
ファイル名はワイルドカード使用可能。
接頭辞は分割後ファイルの先頭がこの文字列となる。この後に2文字のアルファベットを昇順で付加したファイル名で分割後ファイルが作成される。"pre_"を指定すれば"pre_aa","pre_ab",...となる。既定値は"x"。
参考文献・サイト:
sort
コマンドはテキストファイルを行単位で並べ替える。複数のファイルを引数に指定した場合は、全てのファイルを結合したものが並べ替え対象となる。
sort オプション ファイル名...
並べ替え順オプション
-r
-n
選択(|
)はegrep
でないと使えない。
【例】Apacheログから、以下の条件のログを抽出 ・2010年2月分 ・/eprots/index_ja.cgi または /jp.cgi へのアクセス ・抽出内容は access_log_eprotsja.201002 へ出力 shell> egrep 'Feb\/2010.+(GET \/eprots\/index_ja\.cgi|GET \/jp\.cgi)' access_log > ~/access_log_eprotsja.201002 xxx.xxx.xxx.xxx - - [01/Feb/2010:00:00:18 +0900] "GET /eprots/index_ja.cgi?PDB%3a1SMD HTTP/1.1" 200 5736 "-" "Mozilla/5.0" ...
grep
コマンドで可能。但し、返るのは検索語句にマッチした行全体。
【書式】 grep '検索語句' 検索ファイル名 grep -r '検索語句' 検索ディレクトリ名 【例】カレントディレクトリにあるhtmlの中から'hoge'を検索 grep 'hoge' *.html
検索語句には正規表現も使える(-E
オプションを付けるか、egrep
コマンドを使用)。
あるいはperlでも可能。
perl -ne 'print if(m/検索パターン/修飾子)' 対象ファイル名
参考文献・サイト:
perlコマンドの置換演算子を利用。パターンの指定については正規表現のPCRE(Perl互換)を参照のこと。
【書式1】直接コマンドラインでパターン指定 perl -piバックアップファイルの拡張子 -e 's/検索パターン/置換パターン/修飾子' 対象ファイル名 【書式2】別ファイルでパターン指定 perl -piバックアップファイルの拡張子 スクリプトファイル名 対象ファイル名 <スクリプトファイル例> s/^\n//g; s/ +$//g;
バックアップファイルの拡張子を省略すると元のファイルは置換後のファイルで上書きされる(元のファイルはバックアップされない)。
修飾子の内容は以下の通り。
修飾子 | 意味、機能 |
---|---|
e | 置換文字列を式とみなして実行する |
g | マッチするものを全て置換する(これを指定しないと最初にマッチした1個だけを置換する) |
i | 大文字と小文字を区別しない |
m | 文字列を複数行として扱う(^,$ はそれぞれ行先頭、行末尾として処理) |
s | 文字列を単一行として扱う(^,$ は \n を無視) |
大文字を小文字に置き換えるといった場合には変換演算子を使う。
perl -piバックアップファイルの拡張子 -e 'tr/A-Z/a-z/g' 対象ファイル名
また、パターンを記述する際、エスケープが必要な文字列は以下の通り。これら文字はパターン内で用いると特別な意味を持つため、これら文字自体を示したい時は直前に円マーク(又はバックスラッシュ)を記述する。
\ * + . ? { } ( ) [ ] ^ $ - | /
また検索置換パターンをシングルクォート(アポストロフィ、')で囲っている場合、パターン文字列中にそのままシングルクォートを記すとパターン記述を途中で終えてしまうことになる。この場合、シングルクォートの直前にバックスラッシュを置いてエスケープした上でこの2文字をシングルクォートで囲む(例:シングルクォートをダブルクォートに置換するパターン 's/'\''/"/g')[2]
例1:カレントディレクトリ内にあるファイルで、ファイル名に"pdb"が含まれ、"pdb"の後に0文字以上の文字、続いて".html"が来るファイルを検索し、ファイル内に含まれる "www.rcsb.org
" を全て "www.pdb.org
" に置換する。元のファイルは拡張子.bak
でバックアップ。
perl -pi.bak -e 's/www\.rcsb\.org/www\.pdb\.org/g' pdb*.html
例2:例1でバックアップを取らない場合。
perl -pi -e 's/www\.rcsb\.org/www\.pdb\.org/g' pdb*.html
例3:カレントディレクトリにある、拡張子が ".html" のファイルに含まれる "bmrbdep.protein.osaka-u.ac.jp/index.html
" という文字列を全て "bmrb.protein.osaka-u.ac.jp/search/
" に置換する。元のファイルはファイル名に ".bak
" を付加してバックアップ。
perl -pi.bak -e 's/(bmrb)(dep)(\.protein\.osaka-u\.ac\.jp\/)(index\.html)/$1$3search\//g' *.html
例4:"query=PDBID">PDBエントリー:PDBID" という文字列のPDBID(大文字)を全て小文字に変換。 対象はカレントディレクトリにあるhtmlファイル全部。
perl -pi.bak -e 's/(query=)([1-9][0-9A-Z]{3})(">PDB.*?:)([1-9][0-9A-Z]{3})/$1\L$2\E$3\L$2\E/g' *.html
例5:h1要素全てを取り除く。対象はカレントディレクトリにあるhtmlファイル全部。
perl -pi.bak -e 's/<h1>.+<\/h1>\n//g' *.html
<h1>任意の1文字以上の文字列</h1>(改行)
スラッシュ自体の指定には、直前にバックスラッシュを置いてエスケープ
例6:<PDBx:... />(名前がPDBxで始まる空要素の簡略表現)を正規の表現に戻す。
perl -e 's/<(PDBx:.+)( .*) \/>$/<$1$2><\/$1>/g' *.xml <PDBx:hoge xsi:nil="true" /> → <PDBx:hoge xsi:nil="true"></PDBx:hoge xsi:nil="true">
例7:「Version 3.8.1, 15 September 2010」→「Version 3.8.2, 4 October 2010」
perl -e 's/(Version 3\.8\.)1(, \ )(15 September )(2010)/${1}2${2}4 October ${4}/g' *.html
例8:「<span class="vol">任意の文字列</span>,.* 」→「<span class="vol">任意の文字列</span>」 (class="vol"のspan要素の直後のコンマとそれ以降の文字列を除去)
perl -e 's/(<span class="vol">.*<\/span>),.*/$1/' *.html
's///'
内各要素の意味
¥l
:直後の文字を小文字にする。¥u
:直後の文字を大文字にする。¥L...¥E
:...
間の文字を小文字にする。¥U...¥E
:...
間の文字を大文字にする。複雑な長いパターンを記述する際、別のファイルにスクリプトとして記述して実行する方が扱いやすい。
【書式1】上書き perl -p スクリプトファイル名 置換対象ファイル名 【書式2】バックアップをとる perl -piバックアップ拡張子 スクリプトファイル名 置換対象ファイル名 【例5】 対象ファイル:ファイル名が「mom
」で始まり、「.html
」で終わるファイル 検索文字列: <a href="http://pdbjs8.pdbj.org/xPSSS/xPSSSSearch?search_type=pdbid_search&query=PDBID">PDBエントリー:PDBID</a> 置換文字列:PDBエントリー:[[PDB:PDBID]] ※PDBIDは4文字の数字または英小文字。 <replace.pl> ---- s/<a href="http:\/\/pdbjs8\.pdbj\.org\/xPSSS\/xPSSSSearch\?search_type=pdbid_search&query=([0-9a-z]{4})"> (PDBエントリー:)[0-9a-z]{4}<\/a>/${2}[[PDB:${1}]]/g; ---- ※パターンは複数記述できる。パターン間を区切る";"で改行してもよい。 (上記例は見やすいよう途中改行しているが、実際は1行で記述する) shell> perl -pi.bak replace.pl mom*.html
改行を含む(=複数行にわたる)文字列の置換がうまくいかない。
検索対象ファイル(test.txt
)の内容は以下の通り。
abcde fghij
例4:改行を2個に増やす(うまく行く例)
perl -pi.bak -e 's/(¥n)/$1$1/g' test.txt
例5:"abcde"と改行の間に"zzz"を挟む(うまく行く例)
perl -pi.bak -e 's/(abcde)(¥n)/$1zzz$2/g' test.txt
例6:改行と"fghij"の間に"zzz"を挟む(うまく行かない例、元ファイルは何も変化しない)
perl -pi.bak -e 's/(¥n)(fghij)/$1zzz$2/g' test.txt
参考サイト、文献:
ファイルやディレクトリの所有者、グループ名は ls
コマンドでは次の位置に表示される。
> ls -l total nn drwxr-xr-x 5 user group nnn mm dd hh:mm ./ drwxr-xr-x 5 user group nnn mm dd hh:mm ../ -rw-r--r-- 1 user group nnn mm dd yyyy file01 -rw-r--r-- 1 user group nnn mm dd yyyy file02 ...
所有ユーザを変更するには chown
コマンドを用いる。変更できるのはスーパーユーザのみ。
> chown user2 file01 > ls -l total nn drwxr-xr-x 5 user group nnn mm dd hh:mm ./ drwxr-xr-x 5 user group nnn mm dd hh:mm ../ -rw-r--r-- 1 user2 group nnn mm dd yyyy file01 -rw-r--r-- 1 user group nnn mm dd yyyy file02 ...
chown -R
(またはchown --recursive
)とすればサブディレクトリに対しても変更が適用できる。chgrp
も同様。
参考サイト:
所属グループを変更するには chgrp
コマンドを用いる。変更できるのは所有者自身またはスーパーユーザのみ。変更先グループは所有者が所属するグループでなければならない。
ディレクトリ内の全ファイル、ディレクトリのグループを一括変更するには -R
オプションを付ける。
> chgrp group2 file01 > ls -l total nn drwxr-xr-x 5 user group nnn mm dd hh:mm ./ drwxr-xr-x 5 user group nnn mm dd hh:mm ../ -rw-r--r-- 1 user2 group2 nnn mm dd yyyy file01 -rw-r--r-- 1 user group nnn mm dd yyyy file02 ...
参考サイト:
1文字目:ユーザ表記。u:所有者、g:グループ、o:その他、a:全て
2文字目:権限指定。+:3文字目の権限を付加、-:3文字目の権限を削除、=:3文字目の権限に変更
3文字目:権限表記。r:読み出し権限、w:書き込み権限、x:実行権限
なお、1文字目のユーザ表記を省略した場合は、自分自身(whoコマンドで表示される)に対応する値が指定されたものとみなされる。
数字表記の指定。
1文字目:所有者の権限指定。読み出し可能=4、書き込み可能=2、実行可能=1 の合計。
2文字目:グループの権限指定。
3文字目:その他の権限指定。
例えば、"755"と指定すれば、所有者は読み出し、書き込み、実行可能、グループ・その他は読み出しと実行のみ可能(書き込み不可)。
ファイルに対して利用できる書式指定子は以下の通り。
書式 | 内容 |
---|---|
%a |
8進数形式で表示したアクセス権
$ stat somedir --format %a 755 $ stat somefile --format %a 644 |
ファイルを1行ごとに比較してその結果を出力する。
【書式】 diff オプション ファイル名 【例】オプションなし $ diff -c 1gix.cif.orig 1gix.cif 6c6 < _audit_conform.dict_version 4.031 --- > _audit_conform.dict_version 4.032
-c
を指定した場合、および--context
で行数を指定しなかった場合は3行。
$ diff -c 1gix.cif.orig 1gix.cif *** 1gix.cif.orig 2014-05-23 16:08:09.000000000 +0900 --- 1gix.cif 2014-05-23 16:08:23.000000000 +0900 *************** 元ファイルの記述 *** 3,9 **** _entry.id 1GIX # _audit_conform.dict_name mmcif_pdbx.dic ! _audit_conform.dict_version 4.031 _audit_conform.dict_location http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic # loop_ --- 3,9 ---- 比較ファイルの記述 _entry.id 1GIX # _audit_conform.dict_name mmcif_pdbx.dic ! _audit_conform.dict_version 4.032 _audit_conform.dict_location http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic # loop_
-u
を指定した場合、および--unified
で行数を指定しなかった場合は3行。
$ diff -u 1gix.cif.orig 1gix.cif --- 1gix.cif.orig 2014-05-23 16:08:09.000000000 +0900 +++ 1gix.cif 2014-05-23 16:08:23.000000000 +0900 @@ -3,7 +3,7 @@ _entry.id 1GIX # _audit_conform.dict_name mmcif_pdbx.dic -_audit_conform.dict_version 4.031 +_audit_conform.dict_version 4.032 _audit_conform.dict_location http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic # loop_
違いがなければ何も出力されない。
参考:
diff
コマンドで生成した差分情報(パッチ)ファイルに基づき、ファイルの修正を行う。修正対象ファイルは通常、パッチファイルのファイル名から得られるが、対象ファイルが一つしかない場合、引数で元のファイルを指定することもできる。
オプションでパッチの種別を指定することができます。指定可能な種別には、コンテキスト(-c
、--context
)、ed(--ed
)、通常のdiff出力(-n
、--normal
)、unified形式(--unified
)が指定できます。指定がないと、どのタイプなのかを判別しようとします。コンテキストまたは通常のdiff出力の場合は、patch
コマンドが直接解釈します。edが指定された場合は、パッチ内容がedエディタに引き渡されます。
【書式1】 patch オプション 元のファイル パッチファイル 【書式2】 patch -p数値 >パッチファイル
【例】 $ cat test_original.txt hoge $ cat test_target.txt hoge $ cat test_modified.txt hoge hoge $ diff -c test_original.txt test_modified.txt *** test_original.txt 2014-09-10 11:36:31.000000000 +0900 --- test_modified.txt 2014-09-10 11:36:59.000000000 +0900 *************** *** 1 **** ! hoge --- 1 ---- ! hoge hoge $ diff -c test_original.txt test_modified.txt >test.patch $ patch -c test_target.txt test test.patch patching file test_target.txt $ cat test_target.txt hoge hoge
stat
コマンドはファイルの状態を表示する。ファイルのアクセス権をrwxのような文字列ではなく数値で得たい場合にも使える[1]。
【書式】 stat オプション ファイル名 【例】※RHEL/CentOS などFedora系 $ ls -l hoge.txt -rw-r--r-- 1 user user 4096 2012-08-01 10:00:00 hoge.txt $ stat --format=%a hoge.txt 644
ファイルのバックアップ(コピー)を行う。異なるマシン間でもOK。 2回目以降はタイムスタンプを比較し、更新されているファイルだけが更新される。
【書式】 rsync オプション コピー元 コピー先
オプション
-a
, --archive
-rlptgoD
オプションを指定したのと同じ、サブディレクトリも対象とし(r)、シンボリックリンクはシンボリックリンクのまま(l)、ファイルの権限(p)日時(t)グループ(g)所有者(o)の情報は保持したまま、デバイスファイルはデバイスファイルのまま(D)コピーする)。
-b
, --backup
--backup-dir
または --suffix
を使って、バックアップファイルの置き場所や拡張子を指定することができる。--backup-dir
を指定しなかった場合、(1)--omit-dir-times
オプションの指定がなくてもあるものとして扱われ、(2)--delete
オプションも有効な状態であった場合(=--delete-excluded
オプションを指定しなかった場合)、バックアップファイルを保護するためのフィルタールールを追加した上で処理され、既にバックアップされたファイルが削除されないようにします。但し、独自のフィルタールールを指定する場合、ルールリストのどこかでバックアップファイルを対象から除外するようなルールを他より優先するように追加する必要があります(例えば、"*" を含む/除外するという指定を行うと、自動的に付加されるバックアップファイル除外ルールは適用されません)。
--bwlimit=数値
--delete
-e 通信プロトコル名
-h
, --help
--include=パターン
パターン | 意味 |
---|---|
* | 0文字以上の任意の文字列。但しスラッシュを除く。 |
** | 0文字以上の任意の文字列。スラッシュも含む。 |
? | 任意の1文字。但しスラッシュを除く。 |
[...] | 文字クラスを記述する(例:[a-z]→英小文字、[[:alpha:]]→アルファベット) |
\ | 上記特殊文字を単純文字列として解釈させる(エスケープ)。 |
-l
, --links
--link-dest=ハードリンク先ディレクトリ
--copy-dest=コピー先ディレクトリ
-L
, --copy-links
-n
, --dry-run
-q
, --quiet
-v
, --verbose
--version
【例1】server.domain.org の /usr/local/docs/test*.html パターンに適合するファイルを ローカルのカレントディレクトリにバックアップ。 アーカイブモード(a)で、経過の詳細を表示(v)し、通信を圧縮(z)して行う。通信プロトコルはsshを使う rsync -avz -e ssh user@server.domain.org:/usr/local/docs/test*.html ./ 【例2】例1でバックアップ元ファイルが削除されていた場合、バックアップ先でも削除する。 rsync -avz -e ssh --delete user@server.domain.org:/usr/local/docs/test*.html ./
--include=ファイルパターン, --exclude=ファイルパターン
を用いて対象とするファイルを細かく指定可能。--include=, --exclude=
は複数列挙できるが、数が増えてくると別ファイルに記述した上で--include-from=パターン記述ファイル名, --exclude-from=パターン記述ファイル名
を使った方が便利。
【例3】server.domain.org の /usr/local/docs/ ディレクトリ以下のファイルをローカルの
カレントディレクトリにバックアップ。但しファイル名末尾が~であるものは除く。
アーカイブモード(a)で、経過の詳細を表示(v)し、通信を圧縮(z)して行う。通信プロトコルはsshを使う。
rsync -avz -e ssh --exclude=*~ user@server.domain.org:/usr/local/docs/* ./
【例4】server.domain.org の /usr/local/docs/ ディレクトリ以下のファイルをローカルの
カレントディレクトリにバックアップ。但し~/expattern.txtファイルに記載したパターンの
ファイル名を持つファイルは除く。
アーカイブモード(a)で、経過の詳細を表示(v)し、通信を圧縮(z)して行う。通信プロトコルはsshを使う。
rsync -avz -e ssh --exclude-from=~/expattern.txt user@server.domain.org:/usr/local/docs/* ./
(expattern.txt の例)
*~
*.log
*.bak
※各パターンはrsyncを実行するパスからの相対パスで記し、パターン間は改行で区切る。
【例5】ローカル・カレントディレクトリのhtml,css,jsファイルのうち更新されたものを
サーバのホームディレクトリにアップロードする。
rsync -avz -e ssh --include=*.html --include=*.css --include=*.js --exclude=* * user@server.domain.org:~
※全部(*)ー全部(--exclude=*
)+htmlファイル(--include=*.html
)
+cssファイル(--include=*.css
)+jsファイル(--include=*.js
)
--include,--exclude
の適用順は後ろに書いたものが先で、前に書いたもので上書きされる
rsyncでリモートサーバへ接続する度にパスワードを聞かれないようにするには、SSH鍵を使ってログインするよう設定する15。設定方法は鍵認証ログイン - ssh参照。
【例】リモートマシン(dest)のホームディレクトリ以下をローカルマシンのホームディレクトリに同期
[user@local ~]$ rsync -avz -e "ssh -i ~/.ssh/id_dsa" user@dest:~/* ~
オプション部分を変数に設定してスクリプトで実行する場合、クォート記号を含む変数があってうまく動作しない。クォート内を別変数に定義しクォート記号は直接コマンド引数として記述すればうまく行く(→変数定義参照)。
rsyncサーバを立ち上げる方法もある。
/etc/rsyncd.conf
ファイルを作成し以下の通り記す。パラメータは全般に適用するグローバルパラメータと、モジュール個別に適用するモジュールパラメータがあり、前者は最初のモジュール設定より前に記述する。モジュールパラメータをこのグローバル設定記述領域に記すと、各モジュール共通の既定値を設定したことになり、各モジュールでの設定はこの既定値を上書きする。
# グローバル設定領域 # motd file: クライアントがrsyncサーバに接続した時に表示されるメッセージ # (今日のメッセージ Messege Of The Day)内容の指定 motd file = motdファイル名 # pid file: rsyncデーモンのプロセスIDを書き込むファイルの指定 pid file = pidファイル名 # log file: アクセスログファイルの指定 log file = ログファイル名 # log format: アクセスログファイルの書式指定 log foramt = ログ書式指定 # %+1文字の指定子で出力したい内容を指定する。 # %と指定子文字の間に数字を記すことで出力幅、桁数を指定することもできる。 # log formatを指定しなかった場合の既定書式は「%o %h [%a] %m (%u) %f %l」で、 # log formatを指定すると常に「%t [%p]」が前に付加される。 # この既定書式のログを読み込んで要約するperlスクリプトが # rsyncソースコードの support/rsyncstats に同梱されている # %a : リモート(アクセス元)IPアドレス # %b : 実際に転送された通信量(単位はバイト) # %B : ファイルのアクセス権ビット(例:rwxrwxrwt) # %c : 基本ファイル受信のためのブロックチェックサムの総容量?(送信時のみ) # %f : ファイル名(long form on sender; no trailing “/”) # %G : ファイルのgid値または「DEFAULT」 # %h : リモート(アクセス元)ホスト名 # %i : Updateされたものの一覧? # %l : ファイルサイズ(単位はバイト) # %L : # %m : モジュール名 # %M : 最終修正時刻 # %n : ファイル名(短い書式、ディレクトリの場合は末尾にスラッシュを付けない) # %o : 操作内容(送信「send」受信「recv」削除「del.」) # %p : rsyncセッションのプロセスID # %P : モジュールのパス(ドキュメントルートのローカルパス?) # %t : 現在日時 # %u : 認証済みユーザ名(無認証の場合は空文字) # %U : ファイルのuid # port: rsyncデーモンがアクセスを受け付けるlistenポートを指定する # 指定がない場合の既定値は 873 # この指定はinetdで起動した場合は無視される # またこの指定より --port コマンドラインオプションの方が優先する port = ポート番号 # address: rsyncデーモンがアクセスを受け付けるlisten IPアドレスを指定する # 指定がない場合は全ての有効なネットワークインタフェース全てで受け付ける # この指定はinetdで起動した場合は無視される # またこの指定より --address コマンドラインオプションの方が優先する address = IPアドレス # socket options: 転送速度の制御などを行うソケット設定変更設定を指定する # 詳細は man setsockopt を参照のこと # 指定がない場合の既定値は空(ソケットオプションはなし) # またこの指定は --sockopts コマンドラインオプションでも指定できる socket options = ソケットオプション # rsyncクライアントからアクセスする際指定するモジュール名 [モジュール名] # comment: 任意のコメントを記述。クライアントが有効なモジュールの一覧を取得した時、モジュール名の後に表示される comment = コメント文字列 path=/home/taro/data/ # バックアップ対象ディレクトリ uid = root ←このモジュールでデータ転送するときのユーザ名 gid = root ←同じくグループ名 use chroot=false ←ファイル転送する前にpathでchrootするかどうか exclude=*~ ←除外パターン exclude-from=~/ex.txt ←除外パターンを記したファイルを指定 include=*.html ←含むパターン include-from=~/in.txt ←含むパターンを記したファイルを指定 secrets file=/etc/rsyncd.secrets ←認証で使われるパスワードファイル auth users=root ←接続を許可するユーザー名(なんでもいい) hosts allow = 192.168.0.200 ←接続を許可するクライアント機のIPアドレス hosts deny = * ←上記IP以外は拒否にする
chrootをon(true)にすると、セキュリティの向上にはつながるが、ドキュメントルートの外を参照できなくなる。タイムゾーンを規定している /etc/localtime
も参照できないため、rsyncのログに残される時刻は世界標準時(GMT, UTC、日本時間−9時間)になってしまう。/etc/localtime
をドキュメントルートディレクトリにコピーすればローカル時間になる16が、rsyncコンテンツにlocaltimeファイルも入ってしまう?
前項で指定したパスワードファイルを作成する。書式は以下の通り。
【書式】 ユーザ名:パスワード 【例】 rsync:password
【書式】 rsync --daemon --config-file=設定ファイル名 --port=ポート番号 【例】 rsync --daemon --config-file=/etc/rsyncd.conf --port=10873
ポート番号を指定しない場合の既定値は873。OS起動時に自動起動するには上記コマンドを書いたシェルスクリプトをファイル名/etc/rc.d/init.d/rsyncd
で保存し、chkconfig
コマンドで起動を有効にしておく。
shell> sudo vi /etc/rc.d/init.d/rsyncd #!/bin/sh (上記のrsyncをデーモンとして起動するコマンドを記す) shell> sudo /sbin/chkconfig --add rsyncd shell> sudo /sbin/chkconfig rsyncd on
ただこれでは起動する指示しか書いていないので、以下のような起動・停止・再起動ができるようなスクリプトにしておく便利14。
#!/bin/bash ←シェルのパス指定 PID=`ps -ef | grep 'rsync --daemon' | grep -v grep | gawk '{print $2}'` ←起動中rsyncデーモンのPID CONF="/etc/rsyncd.conf" ←rsyncd設定ファイル PROG="/usr/bin/rsync" ←rsyncプログラムのフルパスファイル名 PORT=873 ←ポート番号 case "$1" in ←引数により分岐 'start') ←引数が"start"の場合 if [ -z "$PID" ] ; then ←PIDが空だった場合 "$PROG" --daemon --config="$PROG" --port="$PORT" ←rsyncd起動 echo " rsync [start]" else ←PIDが空でなかった場合 echo " Error! rsync already running" ←既に起動済みというエラーを吐く fi 'stop') ←引数が"stop"の場合 kill $PID echo " rsync [stop]" 'restart') ←引数が"restart"の場合 $0 stop sleep 2 $0 start *) ←その他の場合は利用法を出力して終了する echo "Usage: $0 { start ¦ restart ¦ stop }" exit 1 esac exit 0
また xinetd から rsync デーモンを起動させる方法もある。デフォルトでは /etc/xinetd.conf
に xinetd 共通の設定が、/etc/xinetd.d
配下にはサービス個別の設定が書かれており、rsync の場合 /etc/xinetd.d/rsync
に記載される。内容は以下の通り。
【書式】 service サービス名 # サービス名は /etc/services に掲載されているものを指定する { }
【例】ネットワークごとに異なるrsyncサービスを提供する service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon --config=/etc/rsyncd1.conf log_on_failure += USERID interface = 192.168.1.1 } service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon --config=/etc/rsyncd2.conf log_on_failure += USERID interface = 192.168.2.1 }
【例】 rsync -avz -e ssh --password-file=.passwd rsync://taro@rsync.hoge.com/db_bak_module ~/backup
【例】モジュール名一覧 rsync mysite.example.com:: 【例】hogeモジュール以下をすべてダウンロード rsync mysite.example.com::hoge/ .
man rsyncd.conf
ImageMagicは画像の生成、編集、変換などを行う[4]。コマンド名は「convert」。
【例】幅200px(縦横比は維持)でサムネイル画像を作る convert -thumbnail 200 originalfile.jpg thumbnail.jpg
ImageMagicコマンド群の1つidenfity
を使って、画像のファイル形式、縦横サイズなどの情報を得られる[9]。
【書式】 idenfity 画像ファイル名 【例】 $ idenfity hoge.jpg hoge.jpg JPEG 250x500 250x500+0+0 DirectClass 50kb ファイル名 ファイル形式 縦横ピクセル数 縦横ピクセル数+α? ? ファイルサイズ
「スクリプトを投入(submit)する」とは、スクリプトを実行する一括処理(バッチ処理)ジョブを生成することを意味します。スクリプトはバッチ処理サーバへ要求を行うことによって投入されます。qsub コマンドはユーザがバッチクライアントよりスクリプトを投入する操作を行うユーティリティです。
投入に成功すると、qsub ユーティリティは投入されたスクリプトを実行するバッチジョブを生成します。
qsub ユーティリティは「キュー」(Queue)、「ジョブ」(Job)、「リクエスト」(Request)を送信することによってスクリプトをバッチサーバに投入します。
qsub ユーティリティはバッチジョブの変数リスト属性中に以下の環境変数値を設定します。HOME, LANG, LOGNAME, PATH, MAIL, SHELL, TZ。環境変数名は頭に「PBS_O_」を付けた名前にすることが一般的です。
注:qsub ユーティリティの環境空間におけるHOME変数の現在値が /aa/bb/cc であった場合、qsub ユーティリティはバッチジョブの変数リスト属性に「PBS_O_HOME = /aa/bb/cc」と設定します。
上記の変数に関する事項に加え、指定の値を持つ次のような変数を変数リストに持ちます。
【例】ジョブ名「hoge」でhoge.shを実行するジョブを投入(非Windowsの場合) #!/bin/sh #PBS -N hoge /home/user/hoge.sh 【例】ジョブ名「hoge」でhoge.exeを実行するジョブを投入(Windowsの場合) #PBS -N hoge hoge.ext
oe
eo
n
例:ジョブ実行ノードをnode01に指定してジョブ投入を行う qsub -l host=node01
qstat
コマンドはジョブ、キュー、バッチサーバの状態を表示することができる。問い合わせた状態情報は標準出力に出力される。
出力様式には通常表示、別表示、詳細表示がある。通常表示および別表示では各要素の情報を1行に表示する。詳細表示では各要素に関する各属性情報が各行に表示される。
【書式】ジョブ状態の通常表示 qstat オプション ジョブIDまたは表示対象 【出力】 Job id Name User Time Use S Queue -------- ---------- --------- -------- - ----- ...
-p
-J
-t
-x
【出力例】 Job id Name User Time Use S Queue -------- ---------- --------- -------- - ----- 15.sv job user 00:00:29 R workq 16.sv job user 00:00:09 R workq 17.sv job user 00:00:09 R workq 18.sv job user 00:00:00 R workq 19.sv job user 0 Q workq 20.sv job user 0 Q workq 21.sv job user 0 Q workq 22.sv job user 0 Q workq
値 | 内容 |
---|---|
B | 1つ以上のサブジョブが実行されているアレイジョブ |
E | ジョブの終了処理中(Exiting) |
F | ジョブ終了済み(Finished) |
H | ジョブ実行は保留中(held) |
M | ジョブは他のサーバに移動された(Moved) |
Q | ジョブは実行待ち状態(Queued) |
R | ジョブは実行中(Running) |
S | ジョブは実行停止中(Suspended) |
T | ジョブは新たな位置に移動された |
U | Cycle-harvesting job is suspended due to keyboard activity. |
W | ジョブ開始時刻待ち(Waiting) |
X | サブジョブが実行完了した、または削除された |
なおジョブ履歴を残す設定をしていない場合、完了したジョブの問い合わせを行うとエラーが発生するよう。
$ qstat 12345 qstat: Unknown Job Id 12345.server
【例】workqにsubmitされたジョブがどのサーバで実行中であるか確認する $ qstat -f workq | grep exec_host exec_host = server11/0 exec_host = server11/2 exec_host = server11/3 exec_host = server11/4 exec_host = server11/13 exec_host = server11/15 exec_host = server11/21
【書式】 qstat -f オプション ジョブIDまたは表示対象 【出力例】 Job Id: 225402.server Job_Name = myjob Job_Owner = user@server.mydomain.org resources_used.cpupercent = 89 resources_used.cput = 40:36:51 resources_used.mem = 15576kb resources_used.ncpus = 1 resources_used.vmem = 304208kb resources_used.walltime = 47:22:11 job_state = R queue = workq server = server Checkpoint = u ctime = Sat Sep 20 12:01:21 2014 Error_Path = server.mydomain.org:/home/user/work/myjob.e225402 exec_host = execnode01 exec_vnode = (execnode01:ncpus=1) Hold_Types = n Join_Path = oe Keep_Files = n Mail_Points = a mtime = Sat Sep 20 12:01:24 2014 Output_Path = server.mydomain.org:/home/user/work/myjob.o225402 Priority = 0 qtime = Sat Sep 20 12:01:21 2014 Rerunable = True Resource_List.ncpus = 1 Resource_List.nodect = 1 Resource_List.place = pack Resource_List.Qlist = workq Resource_List.select = 1:ncpus=1:Qlist=workq stime = Sat Sep 20 12:01:24 2014 session_id = 7191 jobdir = /home/user substate = 42 Variable_List = PBS_O_HOME=/home/user,PBS_O_LOGNAME=user, PBS_O_PATH=/usr/local/bin:/bin:/usr/bin,PBS_O_MAIL=/var/mail/user, PBS_O_SHELL=/bin/bash,PBS_O_HOST=server.mydomain.org, PBS_O_WORKDIR=/home/user/work,PBS_O_SYSTEM=Linux, param=1234,scname=myjob.sh,op=verbose,PBS_O_QUEUE=workq comment = Job run at Sat Sep 20 at 12:01 on (execnode01:ncpus=1) etime = Sat Sep 20 12:01:21 2014 Submit_arguments = -v param=1234,scname=myjob.sh, op=verbose /home/user/work/myjob_sub.sh
各ジョブがどの実行ノードで実行されているのかを確認する際、この出力にフィルタをかければ見やすい。
【例】 $ qstat -f | egrep '^(Job Id|.*exec_)' Job Id: 225398.server exec_host = execnode01/0 exec_vnode = (execnode01:ncpus=1) Job Id: 225400.server exec_host = execnode02/2 exec_vnode = (execnode02:ncpus=1) Job Id: 225401.server exec_host = execnode03/3 exec_vnode = (execnode03:ncpus=1) Job Id: 225402.server exec_host = execnode04/4 exec_vnode = (execnode04:ncpus=1)
【書式】ジョブの状態表示 qstat オプション ジョブIDまたは表示対象 【出力】 Req’d Req’d Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time ------ -------- ----- ------- ------ --- --- ------ ----- - ---- ...
【書式】バージョン表示 qstat --version
qsig
コマンドはジョブに信号を送る。シグナルはジョブのセッションリーダーに送られる。以下の場合、コマンドは拒否される。
【書式1】 qsig -s シグナル jobid 【書式2】バージョン情報を出力して終了する qsig --version
-s シグナル
qsig
コマンドが認識する訳ではない。認識されない場合は代わりにシグナル番号を利用して下さい。
また「suspend」と「resume」(いずれも全て小文字)を指定することもできる。この場合、それぞれジョブの一時停止と再開を指示することができる。一時停止した場合、ジョブはシステムリソースを保持し続けるが、実行はされずwalltimeも加算されない。
「suspend」と「resume」を実行するには管理者あるいは操作権限のあるユーザである必要がある。
qsig -s resume
はqsig -s suspend
で一時停止されたジョブの実行再開に用いる。十分なリソースがあれば実行が再開される。
qdel job id job id...
qmgr
コマンドでキューの管理ができる。引数なしで実行すると対話モードでqmgr
用サブコマンドが実行できる。qmgr -c サブコマンド
で直接サブコマンドを実行することもできる。サブコマンドについて以下に記す。
help サブコマンド
active オブジェクト 名称
【例】server1上のbatchキューおよびserver2、server3上のq1キューの max_running 属性に 10 を設定する。 $ qmgr Max open servers: 49 Qmgr: active queue q1,batch@server1 Qmgr: active server server2,server3 Qmgr: set queue max_running = 10
print オブジェクト 名称
【例】 $ qmgr Max open servers: 49 Qmgr: print server Qmgr: print node n1 set node n1 state = free ←ジョブ実行中なら「job-busy」となる set node n1 resources_available.arch = linux set node n1 resources_available.host = n1 set node n1 resources_available.mem = 132094400kb set node n1 resources_available.ncpus = 32 set node n1 resources_available.vnode = n1 set node n1 queue = workq set node n1 resv_enable = True set node n1 sharing = default_shared Qmgr: print queue workq # # Create queues and set their attributes. # # # Create and define queue workq # create queue workq set queue workq queue_type = Execution set queue workq enabled = True set queue workq started = True
create オブジェクト 名称
【例】 $ qmgr Max open servers: 49 Qmgr: create queue workq
list オブジェクト 名称
【例】 $ qmgr Max open servers: 49 Qmgr: list server Server pbsserver server_state = Active server_host = pbsserver scheduling = True total_jobs = 0 state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:0 Exiting:0 Begun:0 default_queue = workq log_events = 511 mail_from = adm query_other_jobs = True resources_default.ncpus = 1 default_chunk.ncpus = 1 resources_assigned.ncpus = 0 resources_assigned.nodect = 0 scheduler_iteration = 600 flatuid = True FLicenses = 144 resv_enable = True node_fail_requeue = 310 max_array_size = 10000 pbs_license_file_location = /opt/pbs/10.1.0.91350/altair/security/altair_lic.dat pbs_license_min = 0 pbs_license_max = 2147483647 pbs_license_linger_time = 3600 license_count = Avail_Global:143 Avail_Local:1 Used:0 High_Use:144 pbs_version = PBSPro_10.1.0.91350 eligible_time_enable = False Qmgr: list queue workq Queue workq queue_type = Execution total_jobs = 0 state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:0 Exiting:0 Begun:0 resources_max.Qlist = workq resources_min.Qlist = workq resources_default.Qlist = workq default_chunk.Qlist = workq resources_assigned.ncpus = 0 resources_assigned.nodect = 0 enabled = True started = True Qmgr: list nodes pbsnode01 Node pbsnode01 Mom = pbsnode01 Port = 15002 pbs_version = PBSPro_10.1.0.91350 ntype = PBS state = free pcpus = 8 resources_available.arch = linux resources_available.host = pbsnode01 resources_available.mem = 16507764kb resources_available.ncpus = 8 resources_available.Qlist = workq,workq_intel resources_available.vnode = pbsnode01 resources_assigned.mem = 0kb resources_assigned.ncpus = 0 resources_assigned.vmem = 0kb comment = node down: communication closed resv_enable = True sharing = default_shared
delete オブジェクト 名称
参考:PBS Professional 10.0 Administrator's Guide(日本語版)
RHEL 5.5 で標準的な設定でインストールした場合、$PBS_HOME
=/var/spool/PBS
3つのキュー dogQ、catQ、ratQ と、4つのvnode vn[1]、vn[2]、vn[3]、vn[4] があり、以下の通り対応させる場合。
言い換えると
$PBS_HOME/server_priv/resourcedef
に追記Qlist type=string_array flag=h
$PBS_HOME/sched_priv/sched_config
にQlistを追記resources: "ncpus, mem, arch, host, vnode, Qlist"
# qmgr Qmgr: set node vn[1] resources_available.Qlist="dogQ,ratQ" Qmgr: set node vn[2] resources_available.Qlist="dogQ,catQ,ratQ" Qmgr: set node vn[3] resources_available.Qlist="catQ,ratQ" Qmgr: set node vn[4] resources_available.Qlist="catQ"
# qmgr Qmgr: set queue dogQ resources_default.Qlist=dogQ Qmgr: set queue dogQ resources_min.Qlist=dogQ Qmgr: set queue dogQ resources_max.Qlist=dogQ Qmgr: set queue dogQ default_chunk.Qlist=dogQ Qmgr: set queue catQ resources_default.Qlist=catQ Qmgr: set queue catQ resources_min.Qlist=catQ Qmgr: set queue catQ resources_max.Qlist=catQ Qmgr: set queue catQ default_chunk.Qlist=catQ Qmgr: set queue ratQ resources_default.Qlist=ratQ Qmgr: set queue ratQ resources_min.Qlist=ratQ Qmgr: set queue ratQ resources_max.Qlist=ratQ Qmgr: set queue ratQ default_chunk.Qlist=ratQ
pbsnodes
はPBSジョブ実行ノードの状態表示、特定ノードのonline/offlineなどの制御を行う。
【書式1】ホストのonline/offline制御 pbsnodes [ -c | -o | -r ] [-s server] hostname [hostname ...] 【書式2】offlineになっているホストを表示 pbsnodes [-l] [-s server] 【書式3】ホストの状態を表示 pbsnodes -a [-v] [-s server] 【書式4】バージョンを表示して終了 pbsnodes --version
-a
-l
-o ホストリスト
-c ホストリスト
環境変数の値を常時変更するには ~/.bashrc
に下記の通り追記。なお 似たファイルに ~/.bash_profile
があるが、こちらはログイン時にだけ実行される設定ファイル。~/.bashrc
は別のシェルが起動した時にも実行される。
【例】$PATH に /usr/local/mysql を追加する
PATH=$PATH:/usr/local/mysql
export PATH
環境変数の値を一時的に変更するには export
コマンドを用いる。
shell> export PATH=$PATH:/usr/local/mysql
.bashrc
ファイル内でのコメントアウトは #
(これ以降行末までがコメントアウトされる)。
環境変数の削除はunset 変数名
。
ユーザに依存しないシステム汎用の環境変数や起動プログラムの設定は /etc/profile
に、ログイン時の機能設定やエイリアスの設定は /etc/bashrc
に記述されたスクリプトで行われる。
RHELやCentOSの場合、/etc/redhat-release
というテキストファイルに記載されている。
【例】 shell> cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.4 (Tikanga)
dmidecode
コマンドで、BIOS、製品、マザーボード、CPU、キャッシュなどの情報が参照できる。
【例】 shell> dmidecode # dmidecode 2.10 SMBIOS 2.6 present. 103 structures occupying 6699 bytes. Table at 0xDF79C000. Handle 0xDA00, DMI type 218, 11 bytes OEM-specific Type Header and Data: DA 0B 00 DA B0 00 17 00 0E 20 00 Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: Dell Inc. Version: 1.1.9 Release Date: 05/21/2010 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 4096 kB Characteristics: ISA is supported PCI is supported PNP is supported BIOS is upgradeable ...
/proc/meminfo
のファイル内容を参照すれば、物理メモリ量などが分かる。
【例】 shell> less /proc/meminfo MemTotal: 132094400 kB MemFree: 122615632 kB Buffers: 404232 kB Cached: 8413392 kB SwapCached: 0 kB Active: 1271848 kB Inactive: 7682700 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 132094400 kB LowFree: 122615632 kB SwapTotal: 33551744 kB SwapFree: 33551744 kB Dirty: 48 kB Writeback: 0 kB AnonPages: 136828 kB Mapped: 41872 kB Slab: 451792 kB PageTables: 8064 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 99598944 kB Committed_AS: 721632 kB ...
uname
コマンドでシステム情報を得ることができる。
【書式】
uname オプション
-m
--machine
# uname -m i686
-n
--nodename
hostname
コマンドの出力結果と同じ。
# uname -n hoge.sample.org
-r
--release
# uname -r 2.6.18-164.15.1.el5
-s
--sysname
# uname -s Linux
-a
--all
# uname -a Linux hoge.sample.org 2.6.18-164.15.1.el5 #1 SMP Mon Mar 1 10:56:08 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
現在のパス表示。
パスの追加。
この方法だと、一旦ログアウトすれば設定は元に戻ってしまう。常時設定を行うにはユーザプロファイルを編集する→こちら。
例えば、ホームディレクトリ下のbinディレクトリを追加するには、
chemtoolをインストールする前に、いろんなものの事前インストールがいるみたい。 GTK+, glib, pangoがいり、更にglibのインストールにはpkgconfig, libiconv, gettextがいる。 この中で、pangoのインストールがうまく行かない。./configure の段階でエラーになる。
checking for FONTCONFIG... Package fontconfig was not found in the pkg-config search path. Perhaps you should add the directory containing `fontconfig.pc' to the PKG_CONFIG_PATH environment variable No package 'fontconfig' found configure: WARNING: No fontconfig found, skipping tests for FreeType and Xft checking for CAIRO... Package cairo was not found in the pkg-config search path. Perhaps you should add the directory containing `cairo.pc' to the PKG_CONFIG_PATH environment variable No package 'cairo' found configure: error: *** Didn't find any of FreeType, X11, or Win32. *** Must have at least one backend to build Pango.
アプリケーションのインストール(make install
)やチェック(make check
)時に "cannot restore segment prot after reloc: Permission denied" というエラーは、「SELinuxがセキュリティーの問題でライブラリをロード出来ないようにしてあるために起こる」とのこと。エラーメッセージで表示されているファイルに対して以下のコマンドを実行すれば回避できる。
chcon -t textrel_shlib_t '該当ファイル'
参考サイト:cannot restore segment prot after reloc: Permission denied - Linuxシステム設定
Picasa3.0(Googleの画像共有サイトと連携できる画像管理ソフト)をUbuntu 10.04にインストールしたが、画像やフォルダ名にマルチバイト文字があると文字化けしてしまう。その対策方法について、下記サイトに対処法が記載されてあったが、多少パスなどが変わっていたので、メモ。
sudo ln -s /usr/share/fonts/truetype/ttf-ipamonafont/ipagui-mona.ttf /opt/google/picasa/3.0/wine/drive_c/windows/fonts/
gedit ~/.google/picasa/3.0/system.reg
→"IPAGUI Gothic"="Z:\\usr\\share\\fonts\\truetype\\ttf-ipamonafont\\ipagui-mona.ttf"
Java環境として類似のOpenJDKがあるが、これだとうまくJava Appletが動かないよう。
[centos6] # ls ~jre-6u26-linux-i586.bin # cd /usr/lib/jvm # chmod +x ~jre-6u26-linux-i586.bin # ~jre-6u26-linux-i586.bin # which java /usr/bin/java # ls -l /usr/bin/java lrwxrwxrwx. 1 root root 22 8月 22 17:26 2011 /usr/bin/java -> /etc/alternatives/java # ls -l /etc/alternatives/java lrwxrwxrwx. 1 root root 35 8月 22 17:26 2011 /etc/alternatives/java -> /usr/lib/jvm/jre-1.5.0-gcj/bin/java # ls /usr/lib/jvm java-1.5.0-gcj-1.5.0.0 jre jre-1.5.0 jre-1.5.0-gcj jre-gcj jre1.6.0_26 # ln -sf /usr/lib/jvm/jre1.6.0_26/bin/java /etc/alternatives/java # ls -l /etc/alternatives/java lrwxrwxrwx. 1 root root 33 8月 22 17:34 2011 /etc/alternatives/java -> /usr/lib/jvm/jre1.6.0_26/bin/java
LinuxではXara Xtremeが良さそう。Windowsの有償製品をLinux向けにオープンソース化したもので、機能が充実していて使いやすいと評されている。Illustrator形式のファイル(拡張子は「.ai」)も開いて編集可能。但し、フォント名にマルチバイト文字列を含んでいなくてかつ、日本語が扱えるフォントをシステムにインストールしておかないと、日本語等の入力ができない。その要件を満たすフォントとして、IPAフォントとM+フォントを組み合わせたMigMixなどがある[1]。
参考文献・サイト
shell> free total used free shared buffers cached Mem: 1286436 1260376 26060 632 55556 937940 -/+ buffers/cache: 266880 1019556 Swap: 2040244 83244 1957000 この場合、物理メモリ量は1286436Byte。
参考文献・サイト:
以下にネットワークプリンタ(プリンタ自身がIPアドレスを持ち、共有プリンタとして機能しているプリンタ)の設定について記す。
機種名 | URL | 備考 |
---|---|---|
EPSON EP-805A | socket://[IPアドレス]:9100 | Ubuntu 12.04 Server 64bit版にて確認 |
Canon PIXMA MP980 | bjnp://[IPアドレス]:8611 | Ubuntu 12.04 Server 64bit版にて確認 |
man df
、man du
)