アットウィキロゴ

Linux,Unixコマンドメモ

備忘録.
間違っているかもしれない.

  • コマンド && コマンド
  • ファイルの内容を行番号をつけて表示
  • PDFファイルを分割・結合する
  • ()を使ったコマンド,サブシェル
  • mailコマンドでメールを送る
  • cpコマンドで同一ファイル名.orgファイルを作る
  • シンボリックリンク
  • scpコマンド
  • grepコマンド
  • nkfコマンド(ファイルの文字エンコードを確認 / 変更する)
  • emacsのデフォルトのフォントサイズを変更する
  • ハードウェアの情報を確認する
  • findコマンド

コマンド && コマンド

1つ目のコマンドが正常終了した場合に2つ目のコマンドを実行する。

ファイルの内容を行番号をつけて表示

cat -n ファイル名

PDFファイルを分割・結合する

分割

% pdftk [対象のPDFファイル名] cat [ページ範囲] output [出力先のPDFファイル名]
例:a.pdfから,2ページ目を分割し,out.pdfという名前で出力する
% pdftk a.pdf cat 2 output out.pdf
ページ範囲の指定では,
2-5:2〜5ページ
2-end:2〜最後のページ
などで指定する。

結合

% pdftk [結合するPDFファイル名] cat output [出力先のPDFファイル名]
例:a.pdfとb.pdfを結合し,out.pdfという名前で出力する。
% pdftk a.pdf b.pdf cat output out.pdf


()を使ったコマンド,サブシェル

プロセスをグループ化することができる。
% (コマンド1 ; コマンド2) | コマンド3
% (コマンド1 ; コマンド2) > 出力ファイル
% (コマンド1 ; コマンド2 ; コマンド3) > 出力ファイル
% コマンド1 | (コマンド2 ; コマンド3)
% (コマンド1 | コマンド2) | (コマンド2 ; コマンド3)
など,複数のコマンドの出力を1つのパイプに流したり,
1つのファイルに渡すことが可能になる。

  • 例1
カレントディレクトリを変えずに,
他のディレクトリでプロセスを実行する。
% (cd /usr/ports ; make search key=firefox) > ports-firefox.txt

  • 例2
複数プロセスをまとめてバックグラウンドで動かす。
% (sleep 100s ; cmd1) &


mailコマンドでメールを送る

$ mail -s [subject] [送信先メールアドレス] < [送信内容のファイル?]

cpコマンドで同一ファイル名.orgファイルを作る

$ cp hoge.txt{,.org}

シンボリックリンク

$ ln -s [リンクするターゲット] [リンク名]

scpコマンド

Secure Copyコマンド。
sshによって暗号化された通信。
$ scp [オプション] [転送したいファイル名] [転送先のパス]

ローカルからホストへ

$ scp hote.xxx [email protected]:

ホストからローカルへ

$ scp [email protected]:hoge.xxx ./

複数のファイルを転送する

$ scp リモートホスト:"*.txt" .

grepコマンド

grepは、ファイル内から指定した文字列に一致する内容を含む行を検索するコマンド。
文字列には正規表現を指定することも可能。
$ grep [オプション] [検索文字列] [ファイル名]
デフォルトでは指定した文字列と一致する部分が見つかった行を表示する。
代表的なオプションには、次のようなものがある。
オプション 機能
-i 大文字と小文字を区別しない
-l パターンに一致した行を含むファイル名だけを出力する
-n パターンに一致した行のファイル内での行番号を表示する
-v パターンに一致しない行を表示する
-e
grep 2.5以降の場合、次のオプションも利用可能です。
オプション 機能
--color 一致文字列に色を付ける
-o(--only-matching) 一致した文字列だけを出力する
-r 特定ディレクトリ以下を再帰的に検索する
以下にgrepコマンドの使用例を示す。

複数の検索文字を指定してOR検索する

文字列「aomori」を含む行と文字列「yamanashi」を含む行を、「fruits.txt」ファイルから抜き出す。
$ cat fruits.txt
1001,unshu-mikan,wakayama
1002,apple,aomori
1003,japanese pear,chiba
1004,grape,yamanashi
1005,peach,yamanashi

$ grep -e "aomori" -e "yamanashi" fruits.txt
1002,apple,aomori
1004,grape,yamanashi
&bold(){1005},peach,yamanashi
「-e」オプションは、複数個のパターンを指定するときに使う。
なお、次のような指定をすることも可能。
$ grep "aomori\|yamanashi" fruits.txt
「|(パイプ)」の前に「\(バックスラッシュ)」を入れないとOR検索にならない。

複数の検索文字を指定してAND検索する

grepコマンドで、AND条件を指定する場合は、
シェルスクリプトのパイプ機能を使って、2つのgrepコマンドを結びつける。

$ grep "yamanashi" fruits.txt | grep "peach"
1005,peach,yamanashi
上記の例を実行すると、ファイル内の文字列「yamanashi」と文字列「peach」が
両方含まれる行を取得できます。

findコマンド

カレントディレクトリから「*.tex」または「*.eps」というファイル名のついたファイルを探す。
find h20/ -name "*.tex" -or -name "*.eps"
grepでもできる
find h20/ | grep -ve .eps -ve .tex -ve .pdf

構文
find [option] [path...] [expression]

オプション

-depth ディレクトリ本体の前に,ディレクトリの内容を先に評価する
-maxdepth n ディレクトリの深さを指定して検索。n=0ならサブディレクトリは探索しない。
-follow シンボリック・リンクの参照先を検索する
-xdev 他のファイル・システムにあるディレクトリは探索しない

判別式

-atime n 最後にアクセスされたのがn日前のファイルを検索する
-empty 空のファイルや中身のないディレクトリを検索する
-group gname グループ名がgnameのファイルを検索する(ID番号も指定可)
-mmin n データが最後に修正されたのがn分前のファイルを検索する
-mtime n データが最後に修正されたのが,n日前のファイルを検索する
-name "pattern" ファイル名がpatternと同じファイルを検索する。ワイルド・カードを用いることができる
-perm mode ファイルのアクセス権がmodeであるファイルを検索する。modeには8進数を用いることができる
-type c 指定したファイル・タイプを検索する。cはdがディレクトリを,fが通常ファイルを,lがシンボリック・リンクを表す
-user uname 所有者がunameになっているファイルを検索する(IDの数値も指定可能)

判別式中の演算子

複数の判別式を用いるとき,判別式を演算子で結ぶ。
代表的な演算子は以下の通り。表中のexprは判別式を表す
( expr ) カッコのなかを優先的に判別する
-not expr exprと異なる場合,検索対象となる
expr1 -and expr2 expr1とexpr2をandで評価する
expr1 -or expr2 expr1とexpr2をorで評価する

アクション

-exec command \; 検索後,commandを実行する。このとき{}をコマンドで用いることにより,検索結果をコマンドに引き渡す
-ok command \; -execと同様に検索後commandを実行する。ただし,ユーザーに問い合わせる
-print 検索結果を標準出力する。このとき結果をフルパスで表示する
-fprint file 検索結果をfileに書き出す。同名のファイルがある場合は上書きをする
-ls 結果をファイル詳細付きで表示する。"ls -dils"と同様な形式を指定する


nkfコマンド(ファイルの文字エンコードを確認 / 変更する)

$ nkf --overwrite [オプション] [ファイル名]
$ nkf [オプション] [入力ファイル名] > [出力ファイル名]

オプション
-j JISコード(ISO-2022-JP)
-e EUCコード
-s Shift-JISコード
-w UTF-8コード(BOM無し)
-Lu Unix改行(LF)形式に変換
-Lw Windows改行形式(CRLF)に変換
-Lm Macintosh改行形式(CR)に変換
-g (--guess) 自動判別の結果を表示
--overwrite 引数のファイルに直接上書き

使用例

文字コードを変換し別名保存(UTF-8)
$ nkf -w hoge.tex > newhoge.tex
文字コードを変換し上書き(EUC-JP)
$ nkf -e --overwrite hoge.tex
文字コードを確認
$ nkf -g hoge.tex

emacsのデフォルトのフォントサイズを変更する

emacsのscratch画面で
(frame-parameter nil 'font)
を入力し,閉じ括弧の後ろでC-jを押す。
"-bitstream-Bitstream Vera Sans Mono-normal-normal-normal-*-14-*-*-*-m-0-iso10646-1"
のように現在の設定が表示される。
この設定を, .Xresource ファイルに
emacs*font:-bitstream-Bitstream Vera Sans Mono-normal-normal-normal-*-14-*-*-*-m-0-iso10646-1
追加する。
このとき,14などの数値を変更することで,デフォルトのフォントサイズを変更できる。
その後で,
xrdb ~/.Xresources
を実行する。

ハードウェアの情報を確認する(lspci,lshw)

PCIバスデバイスの情報を確認する。

PCIバス上にあるデバイスの情報を見るためのコマンド。

利用しているPC全体の情報を知りたいとき。

ハードウェア情報は/proc以下から取得できるが,
1ファイルごとに見ていては大変。
そんなときはlshw

lshwが表示するハードウェア情報のもとになているファイル

/usr/local/share/pci.ids
/usr/share/pci.ids
/etc/pci.ids
/usr/share/hwdata/pci.ids
/proc/bus/pci/*
/proc/ide/*
/proc/scsi/* , /dev/sg*
/dev/cpu/*/cpuid
/proc/device-tree/*
/sys/*

最終更新:2012年09月24日 13:35