UNIX/Linux

You are not expected to understand this.

ディストリビューション

シェル

コマンド

echo

cp

cron

rm

cat

ヒアドキュメントを使った書き込み

$ cat >> file <<EOT
hoge
EOT

cd

ディレクトリの移動。cd $OLDPWDまたはcd -で直前のディレクトリに戻る。

ls

rsync

tree

tail

ファイルの最終部分を表示。tail -fと打つと、ファイルの内容を表示し続け、ファイルが更新されると表示更新される。ログファイルの監視に便利。

tail -Fだと、ファイル名が変更されても、監視し続けることができる([20120615 hktstudy] tail -Fを使いましょう)。

Apacheのエラーログをカラー化して表示するsedスクリプトを作った。

こんな感じ。

aeはtail -f /var/log/httpd-error.log | apacheErrorColor.sedのエイリアス。

参考にしたApacheログに色を付けて快適tail生活 – y-kawazの日記はカラーの所がうまく行かなかった。同じ症状がmacのsedコマンドでカラー出力ができない場合の対処法 – e2esound.com業務日誌でも語られている。自分のOSはFreeBSDだが、BSD系のsedでは上手くいかないのかもしれない。こちらの人はgsedをインストールして解決している。

どうようなものを作っている人がいて、Perl版、Rubyがある。

リンク

less

ln

シンボリックリンクのリンクが切れたファイルを表示するコマンド。

$ find . -type l -print0 | xargs -0 -I{} bash -c 'test -e {} || echo {}'

リンクの切れたファイルを削除するにはechoの部分をrmに変更する。

その他の方法

locate

ファイルを検索するコマンド。予め、検索用のデータベースを作っているのでfindより高速。

FreeBSD の場合は、/etc/periodic/weekly/310.locate というスクリプトが週に1回実行され、その中で /usr/libexec/locate.updatedb が呼ばれて/var/db/locate.database が更新される。

手動で更新したい場合はsu権限で/etc/periodic/weekly/310.locateを実行すればよい。

参考

command

編集系

awk

% cat test.txt
  0  43  54
  7  54  66
 88 110 117
101 123 131
131 148 150
147 161 161
238 232 213
253 246 227
181 137   0
203  75  22
220  50  47
211  54 130
108 113 196
 38 139 210
 42 161 152
133 153   0
% awk '{print NR-1&quot;,&quot;$1&quot;,&quot;$2&quot;,&quot;$3&quot;,&quot;}' test.txt
0,0,43,54,
1,7,54,66,
2,88,110,117,
3,101,123,131,
4,131,148,150,
5,147,161,161,
6,238,232,213,
7,253,246,227,
8,181,137,0,
9,203,75,22,
10,220,50,47,
11,211,54,130,
12,108,113,196,
13,38,139,210,
14,42,161,152,
15,133,153,0,

sed

置換する。FreeBSDだとiオプションを使って、変更したものを保存できる。

find . -type f -exec sed [-i &lt;extension&gt;] 's/bark/quack/g' {} \;

カレントディレクトリのファイル中のbarkをquackに置換する(iオプションが付いているとさらに保存する)。

例えば<extension>を.bakとかにすると、ファイル名に.bakを付け足したバックアップファイルを作る(参照)。”"だとバックアップファイルを作らない(参照)。

join

カレントディレクトリ以下のファイル名をURLに変更するUNIXコマンド

function url {
    find `pwd` -type f -maxdepth ${1:-1} | sed &quot;s|&lt;DocumentRoot&gt;|http://`hostname`|&quot;
}

これを.bashrcなどに書き加えておく。<DocumentRoot>は自分の環境に合わせて設定する。引数なしでurlを実行すると、depthが1になる。もっと深くまで見たいときはurl $lt;数字>で指定する。

cut

ユーザー

id

自分の情報の表示。

pw

FreeBSDでユーザーを作成する。

USER=<ユーザー名> && sudo pw useradd $USER -d /home/$USER -s /usr/local/bin/bash -c "<フルネーム>" -g users -w yes -m && unset USER

-d: ホームディレクトリ
-s: ログインシェル
-c: フルネーム(スペースが入る場合はダブルクォートで囲む)
-g: グループ
-w: パスワードの設定。下の表参照
-m: ユーザーのホームディレクトリを作るオプション

-wのパラメータ 意味
no 新しく作成されたアカウントでのログインを不可とします
yes アカウント名をパスワードにします
none パスワードを空欄にします
random ランダムパスワードを生成します

参照

su・sudo

接続を切ってもログイン状態を保つ

tmuxscreenといったターミナルマルチプレクサを使うと、nohup(no hang-up)状態になって、接続を切っても、ログアウトしない。

ターミナルマルチプレクサを用いず、すでに実行中のジョブをnohup状態にする方法はSanRin舎 » [UNIX/Linux] プロセス・ジョブ関連参照。

ネットワーク関連

ssh・scp・telnet

ftp

ncftp

高機能 ftpクライアント。ディレクトリのアップロード等。

curl & wget

ダウンロードしてchmodする

# http://betterthangrep.com/install/
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3

wgetの結果をcurlのように標準出力する

# https://github.com/robbyrussell/oh-my-zsh
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

zsh: no matches found: http://www.vim.org/scripts/download_script.php?src_id=15439

URLに?がついている場合クォートしてやる必要がある

curl 'http://www.vim.org/scripts/download_script.php?src_id=15439' > buftabs.vim

find xargs grep

ファイル・ディレクトリのサイズの調べ方

ルートディレクトリ以下で1日以内に更新があり、1M以上のサイズのファイルを表示

$ find / -mtime -1 -size +1M -exec ls -lh {} \;

ディスクが圧迫された時の原因を探るのに便利。
-exec ls -lh {} \;の代わりに-ls というてもあるが、単位がわかりづらい。
わかりにくいけど、sortすればいいかも。

$ find / -mtime -size +1M -ls | sort -n

findの使い方は、このページが詳しい。

ディレクトリのディスク使用量の表示

depth 1の例

$ du -h -d 1

treeでファイル・ディレクトリのサイズを表示

depth 2の例

$ tree  -L 2 -h

ディレクトリのサイズが512ではなく、ディレクトリ内のファイル使用量の合計だったら使いやすいのに…。

リンク

CPUの調べ方

cat /proc/cpuinfo と打つなど(参照)。

HDD等のデバイスの調べ方

fd と打つなど(参照)。

解凍

再起動

$ reboot -q

-qを付けるとすぐに再起動。

時刻をあわせる

$ ntpdate ntp.jst.mfeed.ad.jp

関連

リンク