UNIX/Linux
You are not expected to understand this.
Contents
ディストリビューション
シェル
コマンド
echo
- echoのまとめ – aqua-noraの日記 – echo -e とやるとエスケープ文字を解釈する
cp
cron
- cron で > /dev/null して椅子を投げられないための3つの方法 – 酒日記 はてな支店 – エラーが発生した時、ログを書き込む
rm
cat
ヒアドキュメントを使った書き込み
$ cat >> file <<EOT hoge EOT
cd
ディレクトリの移動。cd $OLDPWDまたはcd -で直前のディレクトリに戻る。
ls
rsync
- rsync – rsyncのオプション一覧
- rsync の使い方、オプションについてのまとめ – –cvs-excludeや除外するファイル名をファイルで指定する方法
- scpとrsyncの所作の違い。気をつけるところ – kenjiskywalker no memo
tree
- SanRin舎 » tree(UNIXコマンド) – rsyncは一時ファイル
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
- Stray Penguin – Linux Memo (AWK) – AWK内で外部コマンドを実行し結果を変数に代入するなど
- AWK リファレンス – UNIX & Linux コマンド・シェルスクリプト リファレンス
- UNIX 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","$1","$2","$3","}' 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 <extension>] 's/bark/quack/g' {} \;
カレントディレクトリのファイル中のbarkをquackに置換する(iオプションが付いているとさらに保存する)。
例えば<extension>を.bakとかにすると、ファイル名に.bakを付け足したバックアップファイルを作る(参照)。”"だとバックアップファイルを作らない(参照)。
join
カレントディレクトリ以下のファイル名をURLに変更するUNIXコマンド
function url {
find `pwd` -type f -maxdepth ${1:-1} | sed "s|<DocumentRoot>|http://`hostname`|"
}
これを.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
接続を切ってもログイン状態を保つ
tmuxやscreenといったターミナルマルチプレクサを使うと、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 というてもあるが、単位がわかりづらい
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
関連
リンク
fd と打つなど(参照)。

