ファイルを結合する
キーとなる列は昇順に並べておく。
# 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 NUL
左から、
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を表示する)
プロセスおよびジョブを終了させる
プロセスID pid のプロセスを終了する。
# kill pid
だめなら、強制終了。
# kill -9 pid
メッセージやテキストファイルを1画面ずつ表示する
# less file.txt
-N : 行番号を表示する
シンボリックリンクの作成
# ln -s リンク元 リンク先
オプション -s :作成するリンクがシンボリックリンクであることを表す
リンク元とリンク先の順番は cp コマンドなどと同じ
ファイルやディレクトリを検索する
データベースから検索するので高速
# locate [file]
※ locate ではデータベース更新後に作成されたファイルやディレクトリは検索できない。データベースを再更新するには updatedb コマンドを実行する。
# updatedb
ファイルの一覧表示
自分がアクセスしているディレクトリ内のファイルを一覧表示する
# ls
隠しファイルを含むすべてのファイルを表示する
# ls -a
属性も表示させる
# ls -l
すべてのファイルの情報を詳細に表示する
# ls -al
ファイル名の数字部分を自然順序でソート(ゼロ埋めされていなくても正しくソートされる)
# ls -v
ディレクトリを作る
ディレクトリ (test) を作る
# mkdir test
存在しない test ディレクトリ内に sub ディレクトリを作成する
# mkdir -p test/sub
-p :ディレクトリが存在していてもエラーを返さない。必要に応じて親ディレクトリを作成する。
ファイル,ディレクトリの名前変更と移動
名前を変更する。(test1→test2)
# mv test1 test2
移動する。(test1→user/newdir/test1)
# mv test1 user/newdir
オプション
-f :同名ファイルがある時も上書きの確認の問い合わせなく上書きをする
ファイルの文字コードを変換する
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コード
※指定しなくても自動判定が効くが、誤判定のリスクを避ける意味でも、入力する文字コードが分かっている場合は明示的に指定した方がいい。
行番号を追加する
# nl test.txt
1 aaa
2 bbb
3 ccc
-nオプション(行番号の表示形式の変更)
ln 左詰め
rn 右詰め(デフォルト)
rz 右詰めで0で埋める
# nl -n ln test.txt
1 aaa
2 bbb
3 ccc
# nl -n rz test.txt
000001 aaa
000002 bbb
000003 ccc
-sオプション(行番号とファイルの内容の間の区切り文字を変更)
デフォルトの区切り文字はTAB
# nl -s':' test.txt
1:aaa
2:bbb
3:ccc
-wオプション(行番号の長さを変更)
# nl -w3 -n rz test.txt
001 aaa
002 bbb
003 ccc