Linux2
http://x68000.q-e-d.net/~68user/unix/
■
basename パス名+ファイル名からパス名を削除する
与えられた文字列の最後の / 以降を表示するコマンドである。
■
compress ファイルを圧縮する
●オプション
-c 圧縮結果を標準出力に書き出す。ファイル操作は行なわれない。
-f 圧縮ファイルが元ファイルより大きくなっても強制的に圧縮ファイルを作る
-v 圧縮率を表示
■
cp ファイルをコピーする
●オプション
-i コピー先のファイルが存在する場合、上書きしてよいか確認を求める。
-f 上書き確認を行わない。これはデフォルトだが、alias cp cp -i としている場合に便利
-p タイムスタンプもそのままコピーする
-R ディレクトリを再帰的にコピーする
% cp -R dir1/ dir2
とすると (`/'を付けると)、dir2 の下に dir1 以下のファイル・ディレクトリをコピーする。つまり
dir2/foo
dir2/bar
というファイルができる。
■
df ディスクの使用状況を表示
●オプション
-k 512バイト単位ではなく、1キロバイト単位で表示
-i i-node の消費量も表示
-H 人間が読みやすい単位で表示
■
du 指定ディレクトリ以下のディスク使用量を再帰的に表示する
-L シンボリックリンクも計算する
-a 各ファイルごとに使用量を表示する
-d 深さ 指定したディレクトリの深さだけしか表示しない。
-k 単位をKBで表示する
-s 指定ディレクトリのサブディレクトリの使用量を表示しない。
****************************************************************
●2GB 問題
Solaris・HP-UX・Linux などの gzip は 2GB 超のファイルに未対応であることが多い。
gzip 自体には「2GB」というファイルサイズの上限はない。また、最近の Solaris・HP-UX・Linux などの OS 自体は 2GB 超のファイルを問題なく扱える。ただし互換性からか、ソースをコンパイルすると、ファイルオフセット (off_t) が 32bit になってしまう環境が多い。このような環境でコンパイルしたバイナリは、gzip に限らず 2GB 超のファイルを生成できないし、既にある 2GB 超のファイルにアクセスすることはできない。
一般的には、コンパイル時に -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE というオプションを付けてコンパイルすればファイルオフセットが 64bit になることが多いようだ (Solaris2.6・Solari8・ HP-UX 11i・Linux で確認。AIX ではちょっと違うらしい)。
世の中で広く使われている gzip のバージョンは 1.2.4 であるが、ファイルオフセットが 32bit な環境で make すると、ファイルオフセットが 32bit な gzip が生成され、2GB 超のファイルを扱うことができない。SunSite や Linux 標準の gzip はこのように make されたものが多いので、2GB 超のファイルに未対応なことが多いのである。この場合、Makefile の CFLAGS に、上記のオプションを追加して再コンパイルすれば解決する。
gzip-1.3.3 の configure は少し賢くて、64bit ファイルポインタが使える場合は上記オプションを勝手に追加してコンパイルしてくれるため、2GB 問題は起こらないだろう。
ちなみに、ファイルオフセットが 32bit なのか 64bit なのかは以下のソースをコンパイルして実行すればわかる。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
main(){
printf("%d\n", sizeof(off_t));
}
出力結果が 4 ならば 32bit、8 ならば 64bit である。4 と表示された場合でも、上記オプションを付けてコンパイルすると、大抵の環境では 8 に変わるだろう (今どきの OS ならば)。
****************************************************************
■
less ファイル表示プログラム (ページャ)
あるコマンドを実行結果や、ファイルの内容を見たいとき、1画面に収まりきらずスクロールしてしまって最初の部分が見えないことがある。そういう場合、
% ls -l | less
や
% less file.txt
などとすることでゆっくり見ることができる。
■
ls ファイル・ディレクトリを表示
-a 「.」 から始まるファイルも表示。「.」「..」も表示する。
-A 「.」 から始まるファイルも表示。「.」「..」は表示しない。
root が ls を実行した場合、常に -A オプションが付けられたものとして動作する。
-l ファイル、ディレクトリの詳細な情報を表示する
-T タイムスタンプを年月日時分秒まで表示 (要 -l オプション)
-o ファイルフラグを表示。BSD 系のみ (要 -l オプション)
>> コマンド chflags *
-1 (マイナスエルじゃなくてマイナスイチ) 1行につき1つのファイルの情報を表示
-C マルチカラムで表示 (-1 の逆)。
% ls | more
などとすると、ls が出力先がパイプだと判断し、自動的に -1 を指定したのと同じように動作するが、-C を付けるとそれを抑制し、1行に複数のファイルを表示する。
-F ファイルタイプの識別子を付ける。
ディレクトリの後ろに「/」、シンボリックリンクの後ろに「@」、実行形式ファイルの後ろに「*」をつける
-L シンボリックリンク自体ではなく、リンク先のファイルの情報を表示
-R 再帰的にディレクトリ以下のファイルを表示する。
つまり ls -R / で全てのファイルが表示されることになる
-c ファイルの変更日時ではなく、最後にファイルステータスを変更した日時を表示
>> 用語集 タイムスタンプ *
-u ファイルの変更日時ではなく、最後にファイルにアクセスした日時を表示
>> 用語集 タイムスタンプ *
-d ディレクトリを指定した場合、ディレクトリ以下のファイルではなくディレクトリ自体の情報を表示。
ls -l /usr/bin は、ls -l /usr/bin/* と同じような動作をするが、ls -ld /usr/bin だと、
drwxr-xr-x 2 bin bin 5120 Oct 7 05:26 /usr/bin
と、ディレクトリ自体の情報を表示する
-f ファイル名をソートせずに表示
-r 逆順にソートして表示
-t ファイルを変更した日時の順でソートする。最近どのファイルが更新されたか調べたいときは
% ls -lt | head
最近どのファイルが参照されたかを調べたいときは
% ls -lut | head
が便利。
-i ファイルの i-node を表示
>> コマンド ln *
-s 各ファイルのファイルシステムブロックの使用量を表示 (512バイト単位)
たとえ1バイトのファイルでも1ブロック (512バイト) を消費している。その消費量を表示する。ブロックの単位は環境変数 BLOCKSIZE で設定できる。
>> 環境変数 BLOCKSIZE *
>> 用語集 穴あきファイル *
-k -s オプションが指定された場合、使用量を 1K バイト単位で表示する
-x ファイルを横方向ではなく、縦方向にソートする
(-x オプションは SystemV 系と GNU の ls のみ)。
-q ファイル・ディレクトリ名の中に表示不可能な文字があった場合、`?' という文字に置き換えて表示する。このオプションはデフォルトで有効になっている。このおかげで日本語を含むファイル名を ls で表示しようとすると、???? などとなってしまう。この機能は、出力先がパイプやファイルだと抑制されるので、
% ls | less
% ls | cat
などとすると、日本語ファイル名を表示できる。
■
realpath 相対パスを絶対パスに展開する
■
rm ファイルの削除
-i 1つ1つのファイルについて本当に削除するか確認を求める
-r 再帰的に指定ディレクトリ以下を削除する
-f パーミッションに関係なく全て削除する。
■
rmdir ディレクトリの削除
■
split ファイルを複数のファイルに分割する。結合は cat で行う。
-b num numバイトごとに分割
-l num num行ごとに分割
ファイル sample を 1400キロバイトごとに分割するには
% split -b 1400k sample
とする。分割されたファイルは xaa、xab、xac ... となる。結合するには
% cat xaa xab xac > sample
とすればよい(xaa xab xacの順番のとおりに結合される)。
■
su root (スーパーユーザ) になる。他人の名前でログインする
-f ユーザの .cshrc を読み込む
-l 本当のログインのようにする
HOME、SHELL、PATH、TERM、USER 以外の環境変数の設定は捨てられる
-m 環境変数をそのままに残しておく。
HOME・SELL・USER など、環境変数を元のままにしておく。また、ログインシェルは元のユーザのシェルを使用する。
■
sudo 他ユーザ権限でコマンドを実行する
●オプション
-l ユーザに許されているコマンドの一覧を表示。
% sudo -l
Password: (パスワードを入力)
You may run the following commands on this host:
(root) /usr/local/sbin/visudo
(root) /sbin/shutdown
この例では、visudo と shutdown コマンドを root 権限で実行することができる。
-b コマンドをバックグラウンドで実行
-u 指定したユーザ権限でコマンドを実行。以下のようにすれば、anotheruser の権限で anycommand が実行できる。
% sudo -u anotheruser anycommand
■
tar アーカイバ。複数のファイルを1つにまとめる。
命令: 以下の中から必ず1つだけ指定しなければならない。
c tarファイルを新しく作る
x tarファイルを展開する
t tarファイルの内容を表示する
r tarファイルに追加する。z や Z オプションと同時には使えない。
オプション:
f tarファイルを指定する
一見、毎回 f オプションを指定する意味がないように思えるが、本来 tar はテープドライブに書き出すコマンドなので、f でアーカイブ名を指定しないとテープドライブのデバイス /dev/rst0 を対象に読み書きしてしまう。
p パーミッションや owner、group の情報を保存する。
これは展開時にのみ影響する。
v バーボーズモード。処理内容を詳しく表示する
パーミッションなどの詳細な情報が表示されるため、はじめのうちはアーカイブ作成・展開時に tar cvf や tar xvf などと v オプションを付けたくなるかもしれない。しかし、慣れてきたら v オプションを指定しないようにしよう。
なぜなら、アーカイブ作成・展開時に何かのエラーが標準エラー出力に表示されるかもしれないからだ。もし v オプションを付加すると、エラー表示が v オプションによる冗長出力に埋もれて気づかない可能性がある。
z gzip で圧縮・伸長する。このオプションをサポートしているのは GNU tar だけである。
% tar ztf foo.tar.gz (gzip -dc foo.tar.gz | tar tf - と同じ)
y bzip2 で圧縮・伸長する。このオプションをサポートしているのは GNU tar だけである。
% tar ytf foo.tar.bz2 (bzip2 -dc foo.tar.gz | tar tf - と同じ)
Z compressで圧縮・伸長する
% tar Zxvf foo.tar.Z
⇒ compress で圧縮されている foo.tar.Z を展開する。
O 抽出したファイルを標準出力に出力する (x オプションと併用)
% tar xvfO hoge.tar file1.dat > file2
⇒ hoge.tar から file1.dat を取り出し、file2 というファイル名で保存
C 指定のディレクトリにファイルを展開する
普通に
% tar xvf /dir/foo.tar
とすると、カレントディレクトリにファイルが展開される。/bar/ に展開したい場合は
% tar xvf /dir/foo.tar -C /bar
とする。これは
% (cd /bar ; tar xvf /dir/foo.tar)
と同じ。
カレントディレクトリ以下のファイルを archive.tar にまとめるには
% tar cvf /tmp/archive.tar .
*.tar.gz や *.tgz を扱う場合は z を付ける、ということを覚えておけばい
なお、GNU tar 以外の tar は z オプションがないので、gzip されたファイルを扱うには、以下のようにパイプでつなぐ必要がある。
% tar cvf - . | gzip -c > hoge.tar.gz
⇒ カレントディレクトリ以下を tar でアーカイブし、gzip で圧縮
0 件のコメント:
コメントを投稿