☆Unix/Linuxコマンド
◆addr2line
│ アドレスから対応するファイル名と行番号を取得。
-gオプションでデバッグ情報つきでコンパイルしておく
例)
addr2line -f -e a.out 0x8048364
│ -f 関数名も表示
│ -e 対象実行ファイル指定
◆ar
│ 汎用な非圧縮のアーカイバ
│ 主に静的ライブラリを操作するために使われる
例)アーカイブの作成
% ar rcus libhoge.a foo.o bar.o baz.o …
⇒r 新規なら挿入、既存なら置換
⇒c アーカイブファイルが存在しないときの警告抑制
⇒u タイムスタンプを見て新しいものを置換
⇒s 書庫インデックスを作成する。ranlib(1)と同等。
例) アーカイブファイルを展開
% ar xv libhoge.a
⇒x 展開
⇒v 確認
例)アーカイブファイルの中をリストする
% ar tv libfoo.a
_◇静的ライブラリの生成
│ cc -c -o foo.o foo.c
│ 。。。以下オブジェクト群を生成
│ ar ruv libfoo.a foo.o 。。。
※リンクは通常どおり
│ cc -o baz baz.o -lfoo
⇒実際にlibfoo.aからオブジェクトがリンクされる
_◇動的(シェーアード)ライブラリの生成
│ cc -fPIC -c -o foo.o foo.c
│ 。。。以下オブジェクト群を生成
│ cc -shared -Wl,-soname,libfoo.so.0 -o libfoo.so foo.o。。。
⇒sonameの指定のために-Wl,-sonameオプションを指定する
※リンクは通常どおり
cc -o baz baz.o -lfoo
⇒baz.oの中の未定義シンボルが共有オブジェクトで定義されていれば、共有オブジェクトのSONAMEをNEEDEDに設定するだけ
◆arch
│ カーネルのアーキテクチャ表示
◆c++filt
│ 名前マングル(name mangling)されたC++のシンボルをデマングル(demangle)して読みやすくする
例)
nm C++オブジェクト | c++filt
│ -t 関数名だけでなくtype名もデマングルする
◆cat
$ cat -t -e Makefile
⇒Tabと行末を可視化して表示
◆chgrp
◆chmod
│ ファイルモードの変更
例)
chmod +x ファイル
⇒実行権限を付与
◆chown
◆ctags
│ tagsファイルを生成する。
例)
ctags *.c
例)
ツリーのルートから全ファイルを検索して1つの tagsファイルを生成する
find . -type f | xargs ctags -a
◆cut
行レコードから特定のフィールドや文字を取り出す
例)スペース区切りのレコードからフィールド1を取り出す
cut -d’ ‘ -f1 ファイル名
◆date
日時表示
◆dd
│ ファイル変換とコピー
│ デバイスからデバイスへの直接コピー
if=file 入力ファイル指定(指定しないとstdin)
of=file 出力ファイル指定
bs=bytes 読み書きのブロックサイズ(バイト)
skip=blocks 先頭からスキップするブロック数
count=blocks コピーするブロック数
例)
$ dd if=/proc/self/mem of=vdso bs=1 skip=0xffffe000 count=4096
メモリのvdso領域をファイルに落とす
$ dd if=/boot/vmlinuz of=/dev/fd0
LinuxカーネルをFDにコピー
# dd if=/dev/sdb of=./usb
USBメモリの内容をまるごとusbなるファイル名でバックアップ
# dd if=./usb of=/dev/sdb
◆df
ディスクスペースを表示する
◆diff
例)
diff -u =(コマンド) =(コマンド)
◆du
│ ディレクトリ内のファイル容量表示
◆env
│ 環境変数の表示
※環境変数を変更してプログラムを実行する
–unset=NAME 指定した変数を削除
NAME=VALUE 変数NAMEに値VALUEをセット
※実行用スクリプトファイルで
#! /usr/bin/env 起動したいファイル名
とenvを介して起動するようにすれば、パスの違いなどを吸収できる。
◆ethtool
イーサネット制御
◆expr
◆file
ファイルの種類を調べる。ファイルの内容を読み込み、特徴的なシグネチャを探し出して種類を特定する。
①デバイス、ディレクトリ、リンクなどのスペシャル
②圧縮ファイル
③tar
④magicデータベース
⑤テキストファイル種別チェック
使用例)
file /usr/bin/file
-iオプションをつけることでMIMEメディアタイプ文字列で表示する。
※実行ファイルに対してfileコマンドを実行すればダイナミック、スタティックリンクの種別、ターゲットCPUなどが分かる
※coreダンプに対してfileコマンドを実行すれば、どのようなプログラムが吐いたコアか分かる
_◇magicファイル
4フィールドからなる
│ 先頭もしくは前のフィールドからのオフセット
│ データ種別
│ (エンディアンとサイズ)
│ 値
│ 出力する文字列
※オフセット値の前に>を書くことでレベルを示す。同じ数>が並んでいる場合は、順次、同様に前のレベルからのオフセット値をみる。マッチしたエントリの先に1つ多いエントリがあれば続けてマッチ処理をする。これにより分類等ができる。
※/usr/share/file/magic
◆find
│ 特定の条件に合致したファイル群を検出する。
find [pathnames][conditions]
pathnames:
│ 指定されない場合はカレント。そこからディレクトリツリーを下降して検出する。
│
conditions:
│ -print
│ デフォルト。一致したらフルパスで表示
│ -ls
│ マッチしたファイルを ls -dils形式で表示
│ -exec command {} \;
│ 検出ファイルに対してcommand実行。
│ -ok command;
│ コマンド実行するが、実行前に確認する。
│ -inum n
│ iノード番号がnのファイルを検出
│ -name pattern
│ ファイル名がパターンに一致するものを検出
│ ワイルドカード可
│ -size n[b|c|k]
│ 大きさがn[c]バイト,n[b]ブロック、n[k]キロバイトのファイルを検索
│ -regex
│ パターンを正規表現で
│ -type <d, f>
│ ディレクトリdまたはファイルf、シンボリックリンクlを検索
│ -perm xxx
│ パーミッション
│ -size SIZE
│ ファイルサイズ指定
│ +10k 10kバイト以上
│ -10k 10kバイト未満
│ -uid UID
│ -gid GID
│ -ctime +n | -n | n
│ 最終変更日+n日前以前、-n日前以降、n日前
│ -mtime n
│ ファイル更新日時が n日前
│ +nでn日より古い、-nでn日より新しい
│ -atime n
│ ファイルへのアクセス日時
│ -mmin 分
│ 分単位の更新。-mmin -60 60分以内に更新されたもの
│ -a
│ 条件のand
│ -or
│ 条件のor
※条件演算
(EXPR)
!EXPR
EXPR1 -a EXPR2
EXPR1 -o EXPR2
使用例)
find . -name ‘*.[ch]’
│ カレントディレクトリ以下のディレクトリの.cと.hを検索
find . -type d
│ ディレクトリのツリーを表示
find . -mtime +3
│ 3日以上前のファイルを検索
find . -name ‘*.c’ -or -name ‘*,BAK’
│ .cと.BAKを検索
find . -name ‘*.BAK’ -exec rm {} \;
│ *.BAKを見つけて消す。
│ ⇒{}は検索したファイル名に置換される。\;で-execに渡す引数をおしまいを示す。
find . -name ‘*.BAK’ -ok rm {} \;
│ ⇒上と同様の動作だが、ファイル毎にy, nで選択する。
find /cdrom -name ‘*.c’ -print | xargs grep ‘malloc.*NULL’
◆free
│ メモリの使用状況表示
◆gcore
│ コマンドラインから、起動中のプログラムのコアファイルを取得する
◆grep
│ 1つまたは、複数のファイルfilesを検索し、正規表現regexpに一致する文字列を含む行を出力する。
grep [option] regexp [files]
option:
│ -num
│ 一致行とその前後各num行を表示。重複行は無し。
│ -c
│ 一致行の行数のみ
│ -n
│ 行番号も表示
│ -v
│ 一致する文字列を含まない行を表示
│ -G
│ 標準正規表現。?,+,{,|,(,)はエスケープしない限り特別な意味はもたない。
│ -E
│ 拡張正規表現。egrepと同様。?,+,{,|,(,)は特別な意味を持つ。
│ -l
│ 一致のあるファイル名のみ出力
│ -r
│ grep -r パターン ディレクトリ名
│ ディレクトリを再帰的に検索
│ -A
│ grep -A N パターン ファイル名
│ マッチした行と、その後N行を表示
│ -B
│ マッチした行と、その前N行を表示
│ -C
│ マッチした行と、その前後N行を表示
※正規表現で使われる文字はコマンドラインシェルでも意味を持つものがある
⇒正規表現は引用符で囲む
例)
grep ‘^str’ *.c
例)
ファイル名の検索
ls | grep undo
│ ◆head
ファイルの前側を取り出す。tailと組み合わせれば途中も取り出せる。
例)
head -取り出す行数 ファイル名 >リダイレクト
◆id
│ ユーザー情報表示
◆info
│ info infoでinfoの使い方
│ その中で^hでさらに使い方
_◇ノード内移動
SPC ページスクロール
DEL ページ逆スクロール
b ノードの始まり
e ノードの終わり
_◇ノード間移動
n 次のノード
p 前のノード
u 上のノード
TAB 次のハイパーリンクのスキップ
RET カーソル化のハイパーリンクへ
_◇その他の制御
q 終了
◆ident
│ RCSの埋め込み $キーワード: 文字列 $
│ という文字列を表示する。
※バイナリファイルにでも、テキストファイルにでも働く。
◆kill
│ シグナルをプロセスに送る。
│ 一般ユーザは自分がオーナのプロセスのみ。
│ root権限あれば他ユーザのプロセスにも送れる。
kill -シグナル名 プロセスID
kill -l シグナルの一覧
SIGINT ^cと同じ
SIGKILL 強制終了
SIGSTOP ^zと同じ(一時停止)
SIGCONT 一時停止したプロセスを再開
◆last
│ ログイン履歴の表示
◆ldd
│ ダイナミックリンクされた共有ライブラリを表示する
│ ⇒必要とする共有ライブラリのSONAMEとそのアドレス、パス名が一覧される
ldd 実行ファイル
◆less
less テキストファイル
ページ送り 「スペース」キー
ページ戻り bキー
行送り eキー, j
行戻り yキー, k
ファイル先頭 g
ファイル末尾 G
検索 /キー
終了 qキー
lessのヘルプ hキー
◆ln
│ リンクを張る。
│ destnameは新しい名前か、既存の名前(書換え)、既存のディレクトリ名。
│ ディレクトリ名であればそのディレクトリにsourcenameのリンクを作成する。
ln [option] sourcename [destname]
│ -s
│ シンボリックリンク。
│ ファイル名をポイントするのでファイルシステムを跨るリンクを張ることができる。
※cp とソース、デスティネーション順序同じ
◆ls
-i inode
-s キロバイト単位のファイル容量表示を付加
◆man
_◇オプション
man コマンド名など
man セクション番号 コマンド名など
man -K キーワード
man -k apropos
man -a 検索条件
⇒検索条件に一致したすべてのマニュアルの表示
※複数のセクションに同名のコマンド名などがある場合、セクション番号を指定しないと番号の小さい方が表示される。
_◇操作
表示にlessを使っている場合
h ヘルプ
q 終了
スペース ページ送り
b ページ戻り
/ 順方向検索
│ n 次を検索
_◇セクション分け
※Linux man
│ 1 ユーザコマンド
│ 2 システムコール
│ 3 ライブラリ関数
│ 4 デバイスファイル
│ 5 ファイルフォーマット
│ 6 ゲーム
│ 7 規格など
│ 8 システム管理用コマンド
※各章の概要をintroで調べることができる
例)
man 3 intro
◆mount
ファイルシステムをマウントする
単にmountとすると現在の状態を示す
※コミット時間の設定
mount -o commit=1
1秒に設定(デフォルトは5秒)
◆nkf
◆nm
オブジェクトファイルに含まれるシンボルを表示する。
シンボルはシンボルの値(未定義の場合は空欄)とシンボルクラスが表示される
T テキスト、グローバル
t テキスト、ローカル
D データ、グローバル
G データ、グローバル(小さなオブジェクト)
d データ、ローカル
g データ、ローカル(小さなオブジェクト)
R リードオンリ、グローバル
r リードオンリ、ローカル
B BSS、グローバル
S BSS、グローバル(小さなオブジェクト)
b BSS、ローカル
s BSS,ローカル(小さなオブジェクト)
V Weakオブジェクト、グローバル
v Weakオプジェクト、ローカル
W Weakオブジェクトと決まっていないWeakシンボル、グローバル
w Weakオブジェクトと決まっていないWeakシンボル、ローカル
C コモン(共有)、グローバル、未初期化データ
N デバッグ用、グローバル
n デバッグ用、ローカル
– stabs(a.out オブジェクト内のstabsシンボル)
A 絶対値シンボル、グローバル(リンクしても変化しない)
a 絶対値シンボル、ローカル(リンクしても変化しない)
U 未定義、グローバル(別のオブジェクトファイルに実体がある)
I 間接参照、グローバル(別のシンボルの参照)
i 間接参照、ローカル(別のシンボルの参照)
? 未知のクラス
例)
% nm hello.o
例)
nm -g ライブラリ.a | grep T
ライブラリ中で定義されている関数を表示する
⇒Tはプログラムを意味する「テキスト」
⇒Uはシンボルの値が決まっていないもの
例)
nm -D -g libdl.so.2 | grep T
⇒-Dオプションはダイナミックシンボルを指定
※多数のオブジェクトファイルえお走査して出力することもできる
-Aオプションにより、ファイル名:を付けて出力するので、どのファイルの何か検索しやすい
nm -A *.o
-s ライブラリファイルに対してライブラリインデックスを表示
_◇nmをつかったデマングル
nm –demangle C++オブジェクトファイル
◆objcopy
任意のファイルをリンク可能なオブジェクトファイルに変換する。
例)foo.jpgをx86用のELF32形式オブジェクトに変換
% objcopy -I binary -O elf32-i386 -B i386 foo.jpg foo.o
※foo.oをリンクしたCのプログラムからはfoo.jpgのデータは以下の変数名を用いて参照できる。
extern char _binary_foo_jpg_start[];
extern char _binary_foo_jpg_end[];
extern char _binary_foo_jpg_size[];
※その使用
const char *start = _binary_foo_jpg_start;
const char *end = _binary_foo_jpg_end;
int size = (int)_binary_foo_jpg_size;
** &_binary_foo_jpg_size[0]はアドレスでなく値(データのサイズ)である。
◆od
オクタルダンプ
│ -a 文字の名前で表示する
│ -b 8進でバイトを表示する(デフォルト)
│ -c ASCII文字またはバックスラッシュ付きのエスケープ文字として表示する
│ -d 符号なし10進short として表示する
│ -f floatとして表示する
│ -h 16進shortとして表示する
│ -i 10進shortとして表示する
│ -l 10進longとして表示する
│ -o 8進shortとして表示する
│ -x 16進shortとして表示する
│ -v 複数行同一表示のダンプ省略なし
例)
% od /etc/ld.so.cache | head -5
※出力フォーマット指定 -t オプション
-tの後に型名文字を指定
│ a 7bit ASCII
│ c ASCII & ESC
│ d 10進
│ f 浮動小数
│ o 8進
│ u 符号無し10進
│ x 16進
│
│ C char
│ S short
│ I int
│ L Long
│ F float(fのときだけ)
│ D doulbe(fのときだけ)
│ L long double(fのときだけ)
│
│ z 右にASCIIも併記
※オフセットアドレスの表記指定 -A オプション
│ d 10進
│ o 8進
│ x 16進
│ n オフセット表示なし
例)16進オフセットアドレスつき16進ダンプ ASCII表示つき
od -t x1z -A x filename
⇒同一行の省略をなくするためには-vつけること
※文字列ダンプ -s オプション
最低3文字のASCII文字が続いて\0で終了しているようなバイト列を探す。-sの後に数字をつけると文字列の最小長さを表示。
_◇バイナリファイルをダンプしてCの配列に変換
#!/bin/sh
# $0 objname < in > out
objname=${1:-objname}
od -A n -v -t x1 | sed -e ‘1i\
const unsigned char ‘$objname'[]= {
s/\([0-9a-f][0-9a-f]\) */0x\1,/g
$s/,$//
$a\
};
‘
_◇特定のファイルの特定の部分をダンプする
od –skip-bytes 0xオフセット –read-bytes 0xサイズ -t x1z ファイル名
◆objdump
実行プログラムのヘッダ、依存するライブラリ等をダンプする。
│ -s full contentsオプション
例)
% objdump -p /bin/ls.exe
⇒readelf -d でも同様なダンプができる
※デバッグ情報が含まれているファイルの場合は、-l, -Sオプションによりソースファイルの情報も表示できる。
※-sオプションを使うとファイル全体をセクション毎にダンプする
※-jオプションにより特定セクションのみを対象とできる
例)
objdump -d -j .init hello
_◇逆アセンブル
ELFバイナリであれば逆アセンブルできる
│ リンク前のオブジェクトであれば、コンパイルされ、未リンクの状態で
│ 実行可能なオブジェクトであれば、リンク後の状態で
-d オプションであれば実行コードがあるセクション.textなどを逆アセンブルする
-D オプションであれば実行コード以外もコードとして逆アセンブルする
例)
% objdump -d hello.o
※–prefix-addressオプションにより、シンボルからの相対アドレスで出力される
※デバッグ情報をが含まれる場合
例)ソースコードの行との対応 -lオプション
%objdump -d -l hello.o
※デバッグ情報+ソースファイルが存在する場合
例)ソースコードの表示 -Sオプション
◆ps
実行中プロセスの表示
ps [option]
option:
│ なし psを実行しているユーザのプロセス表示
│ a 他ユーザのプロセスも表示 + STAT表示
│ u CPU使用率等詳細情報表示
│ x 全プロセス表示
│ j セッション、プロセスグループ表示
※pstreeコマンドによりプロセスの親子関係を表示できる。
PID プロセスID
PPID 親プロセスPID
PGID プロセスグループID
SID セッションID
◆pstree
プロセスツリーを表示する
◆pwd
現在のディレクトリパスの表示
◆readelf
ELFファイルの情報を表示する。
│ -h ELFファイルヘッダ
│ -l プログラムヘッダ
│ -S セクションヘッダ
│ -e 上記3つのヘッダ
│ -s シンボルテーブル
│ -r リロケーション情報
│ -d ダイナミックセグメント
│ -V パーティションセクション
例)ELFヘッダを見る
% readelf -h ELFファイル
例)プログラムヘッダを見る
% readelf -l ELFファイル
例)セクションヘッダを見る
% readelf -S ELFファイル
⇒セクションの一覧とそのタイプ、アドレス、サイズなどが分かる
PROGBITS プログラム
SYMTAB シンボルテーブル
STRTAB ストリングテーブル
REL リロケーションエントリ(リロケーションを行う場所のテーブル)
RELA 加数付リロケーションエントリ
DYNSYM 動的リンカ用シンボルテーブル
DYNAMIC 動的リンク情報
NOBITS ファイル上にデータなし(.bss)
※セクションとその位置、サイズが明らかになれば、その部分をodして内容を表示できる。
od –skip-bytes 0xオフセット –read-bytes 0xサイズ -t x1z ファイル名
例)シンボルテーブルを見る
% readelf -s ELFファイル
⇒stripされていても動的リンクならば動的シンボルテーブルがある
例)ダイナミックリンクの情報を参照
% readelf -d ELFファイル
⇒ダイナミックライブラリの参照必要とされる情報が(NEEDED)表示される
◆rm
ファイル削除
rm -f xxx
⇒必ず終了ステータス0を返す。make中で削除を試みたがターゲットが無い場合には-fつけないと0以外の終了ステータスが返る。これを抑止するため。
◆sed
_◇置換
s/正規表現/置換/フラグ
「正規表現」を探し出し「置換」で置き換える
※置換テキスト内では$n特殊表現により、正規表現内のn番目のカッコ内を指定できる
⇒1から始まる
gフラグにより、すべての重ならないマッチを対象にできる
◆sort
sort
│ 入力行をソート
sort -n
│ 数値順でソート
sort -r
│ 逆順
◆su / sudo
su [ユーザ名]
引数なしだと、スーパーユーザパスワードの入力によりrootにスイッチ。引数にユーザ名を与えると、そのユーザのパスワードの入力により、そのユーザにスイッチ
sudo コマンドライン
あらかじめ/etc/sudoersファイルに権限を与えるユーザを設定しておくことにより、sudoに自身のパスワードを与えることで、その権限を行使できる。
⇒Ubuntuでは特権を使う場合にはsudo必須
⇒GUIコマンドではgksu
例)
sudo vi /etc/fstab
◆stat
stat ファイル名
ファイル、ディレクトリ等の詳細情報表示
◆strace
実行中のプログラムが読んだシステムコールを表示する
使用例)
$ strace ./hello >/dev/null
$ strace -e trace=open,close ./hello >/dev/null
※cygwin上でも可能
◆strings
バイナリファイルから文字列を抽出する。
例)
% strings /bin/ls | head -5
% cat /bin/ls | strings | grep ignoring
※ignoringを含むメッセージを抽出
-tx 文字列の位置を16進で表示
※デフォルトは7ビットASCIIの4バイト以上の表示可能な文字列
-eS エンコーディングを8ビットにする
※内部的にBFDライブラリが解釈可能なオブジェクトファイルはデータセクションのみを対象とする。
-a 全てを対象にする。
-T 標準以外のオブジェクトファイルフォーマット
◆strip
│ オブジェクトファイルからシンボルを削除
例)
% strip test
-d デバッグ情報(ファイル名、行番号など)を削除
│ 関数名などの通常シンボルは残る
-R セクション名
│ 任意のセクションを削除
※.o、.aなどのファイルにstripを適用するとリンクができなくなる
◆tar
tar zxf ファイル名.tar.gz
⇒gnu tar拡張により解凍
◆tee
│ 標準入力を画面に出力するとともにファイルにも保存する
例)
make | tee make.log
◆test
│ 引数の条件を調べ、真偽を返す。
│ 真は0.
│ 偽は1.
│ エラーのときは2など
_◇ファイルの検査
条件 ファイル
主な条件
│ -d ディレクトリか
│ -e ファイルが存在するか
│ -f 通常のファイルか
│ -r 読み取り可か
│ -w 書き取り可か
_◇引数の検査
条件 引数
│ -n 引数が長さ0より長いか
│ -z 引数の長さが0か
│ -t 引数のファイルディスクリプタが端末か
_◇引数の比較
値 演算子 値
│ == 文字列一致
│ != 文字列不一致
│ -eq 数値一致
│ -ne 数値不一致
│ -gt ≧
│ -ge >
│ -lt <
│ -le ≦
_◇式の組み合わせ
①! 式
│ 否定
②式 -a 式
│ アンド
③式 -o 式
│ オア
④( 式 ) :
◆tail
│ ファイルの後ろ側を取り出す。headと組み合わせれば途中も取り出せる。
例)
tail -取り出す行数 ファイル名 >リダイレクト
tail -n N ファイル名
tail -f ファイル
│ ファイルの追記を監視
◆ulimit
各種リソースの上限を表示したり、設定したりする
bashの内部コマンド
例)
ulimit -c
コアファイルのサイズ上限を表示
ulimit -c unlimited
コアファイルのサイズを無制限とする
⇒コアファイルのサイズ上限を0とするとコアファイルは作られない。
※unlimitedと表示されてもコアが作成されない
⇒unimit -c 1073741824
などとしてみる
ulimit -s
スタックサイズを表示
ulimit -Ss 81920
ソフトウエアのリミットのうちスタックを81920kバイトとする
ulimit -a
全てのリミットを報告
-Hはハードウエアのリミットの設定
-Sはソフトウエアのリミットの設定
◆uname
システム情報を表示する。
uname [OPTION]
-a 全情報を表示
-sr カーネル名とリリース情報表示
◆uniq
uniq
│ 隣り合う行が同じなら1行にまとめる
uniq -c
│ 重複回数を出力する
◆users
現在ログイン中のユーザを表示
◆usermod
ユーザモード(ユーザアカウント情報)の編集
例)
sudo usermode -a -G vboxsf ユーザー名
-a 現在のグループはそのままでグループを追加
-G xxx xxxグループに所属させる
◆vmstat
メモリ、CPUなどの使用状況表示
◆wc
◆what
SCCSの生成する@(#)文字列から改行、空文字、”、>のいずれかまでを出力する。
◆xargs
コマンドに渡す引数を標準入力から読み取らせる。
一度にコマンドラインに渡せる長さには制限があるが、xargsはコマンドラインのサイズ制限を考慮して指定したコマンドに起動かけることができる。
※findで対象ファイルをリストし、xargsでこのリストを処理させるという使い方が定番。目的のファイルに所望の操作を加えることができる。
│
xargs [option][command]
option:
│ -t, –verbose
│ -e[string], –eof[=string]
│ EOF文字を_もしくはStringで置き換える。
│ -n args, –max-args=args
│ コマンド行にargs以上の引数を許さない
使用例)
find / -print | xargs grep pattern > out &
echo $* | xargs -n2 diff
使用例)
find -name “*.[csh]” -type f | xargs grep -n KEYWORD /dev/null | less
拡張子.c .s. .hのファイルをリストして、KEYWORDを検索する。
find . -name ‘*.BAK’ | xargs rm
⇒findの-execオプションより効率が良い。