Unix/Linux

tcpdump

HTTPパケットキャプチャあれこれ – Qiita -i インターフェースをしているオプション。指定しないとインターフェイスのリストから 最も小さい番号で有効になっているもの(ループバック(127.0.0.1)を除く)が選ばれる。 なので、localhost上のパケットを見たい場合はifconfigでループバックのインターフェースを調べて、-i lo0などで指定する。 Man page of TCPDUMP

圧縮・解凍

zip 例)hoge.txtを圧縮してhoge.zipにする $ zip hoge.zip hoge.txt ディレクトリを圧縮したいときは-rオプション、暗号化したいときは-eオプションを使う 例)hogeディレクトリをhoge.zipにする $ zip -er hoge.zip hoge コマンド tar/zipコマンドで解凍・圧縮一覧まとめ(gz、zip、tar.xzなど) 特別なソフトなし!Macでパスワードつきでzip圧縮する方法 | nanapi [ナナピ] 拡張子を見てよしなに解凍するコマンド あらゆるアーカイブを管理できるツール、atool | OSDN Magazine dotfiles/decomp at master · tmsanrinsha/dotfiles – 自分で作ったシェルスクリプト

man page

manpath man pageを探すパス。コマンドラインで $ manpath と打つことで確かめることができる。 システムの設定は/etc/man.configとか/etc/man.confなどに書かれている。 内容は例えばhttp://linux.vbird.org/linux_basic/0310vi/man.config 以下のディレクトリはデフォルトでMANPATHに入っている。 # Every automatically generated MANPATH includes these fields # MANPATH /usr/man MANPATH /usr/share/man MANPATH /usr/local/man MANPATH /usr/local/share/man MANPATH /usr/X11R6/man また/dir/bin/fooがPATHにあるとき、man fooとうつと、/dir/manから探してくれる。 # If people ask for "man foo" and have "/dir/bin/foo" in their PATH # and the docs are found in "/dir/man", then no mapping is required. /dir/share/manから探してくれるかはディストリビューションに依っているっぽい。OS Xでは探してくれて、CentOS 6では探してくれなかった。 結構buildするとshare/manに配置されることがあると思うが……。./configureのときに--mandir=オプションなどを使って、manのインストール先を変更できる。 manの検索場所は環境変数MANPATHで追加することができる。 $ echo $MANPATH でMANPATHが空だったとしても

UNIX/Linuxでアプリケーション毎のシェルの設定ファイルを置いておくディレクトリ

RedHat系のLinuxには/etc/profile.d/というディレクトリがあり、そこにアプリケーションごとのシェルの設定ファイルが置かれているらしい。 実際、CentOS 6.2を見てみると [bash] % ls /etc/prorile.d colors.csh glib2.csh less.csh vim.csh colorls.sh glib2.sh less.sh vim.sh cvs.csh lang.csh qt.csh which2.sh cvs.sh lang.sh qt.sh [/bash] となっている。 これがbashだと/etc/profile中の以下のコードによって読み込まれる [bash] for i in /etc/profile.d/*.sh ; do if [ -r “$i” ]; then if [ “${-#*i}” != “$-” ]; then . $i else . “$i” >/dev/null 2>&1 fi fi done [/bash] 2行目の-rはファイルが読み取り可能なときに真を返すオプション。 3行目の$-は「set コマンドで設定されたフラグ、もしくはシェルの起動時に指定されたフラグの一覧が設定される変数」(変数を使用する – UNIX & Linux コマンド・シェルスクリプト リファレンス)。${-#*i}はパターンマッチと呼ばれるもので、$iの値で/^*?i/にマッチする部分を取り除く。 ここでやっていることはbashのオプションに-iが含まれているかどうかを確かめていて、含まれている場合は上が実行され、ない場合は下が実行される。-iオプションはbashがインタラクティブなときにつくオプションなので、シェルスクリプトで実行された場合は出力が/dev/nullに送られるという感じだろう。 なので、個人用のアプリケーションごとに設定は~/.profile.dというディレクトリを作って、そこに*.shというファイルを置き、.bash_profileにこんな感じ感じで書けばいいと思った。 [bash] if [ -d ~/.

Cygwinのlnをmklinkに変換するスクリプト

Cyqwinのlnで作ったシンボリックリンクをWindowsのプログラムから開くとバイナリファイルになっていて、リンク先を開いてくれない。 しかし、Windows Vista以降で使えるmklinkを使ってシンボリックリンクを作ると、Windowsでも、Cygwinでもシンボリックリンクとして働いていれる(windows とCygwinで始めに知るべきSymlinkの扱い – ブックマクロ開発に参照)。 そこで、lnと打ったら、mklinkでシンボリックリンク・ハードリンクを作ってくれるスクリプトを作った。 ※ちなみにハードリンクの場合はlnで作ってもWindows側でハードリンクとして働いてくれる。 しかし、gitで管理しているファイルに対して貼ったハードリンクはgit pullすると、外れてしまう。 なのでmklinkで作ったシンボリックリンクを使うのが一番良い。 ソースコード tmsanrinsha/ln2mklink インストール [bash] $ mkdir -p ~/bin $ curl -L https://raw.github.com/tmsanrinsha/ln2mklink/master/ln > ~/bin/ln $ chmod a+x ~/bin/ln $ export PATH=“$HOME/bin:$PATH” [/bash] .(z|ba)shrcに [bash] if [[ uname = CYGWIN* ]]; then export PATH=“$HOME/bin/cygwin:$PATH” fi [/bash] を追記して、 [bash] $ source .(z|ba)shrc [/bash] 使い方 普通にlnを使う感じに使う。ただしオプションは-sと-fのみ使える。 シンボリックリンクを貼りたい時はCygwin terminalを「管理者として実行」する必要がある。 引数一つだとカレントディレクトリに同名リンクファイルを作る [bash] [~/hoge_dir/fuga_dir]% ln ~/hoge_dir/foo foo <<===>> C:\Users\tmiwa\hoge_dir\foo のハードリンクが作成されました [/bash] 左側がリンクで、右が元々のファイル。このコメントはSJISなので文字エンコードをUTF-8にしていると文字化けする

zshの補完

補完の設定 zshで究極のオペレーションを:第5回 zshの誇る花形機能“補完”|gihyo.jp … 技術評論社 zshのzstyleでの補完時の挙動について – voidy21の日記 auto-fu.zshの自動補完が便利すぎる – Glide Note – グライドノート 補完関数を書く ghq コマンドの zsh 補完ファイルを修正したので、その過程を解説する – Qiita Writing Zsh Completion for Padrino 【コラム】漢のzsh (17) コマンド補完設定 – daemonコマンド編(1) | エンタープライズ | マイナビニュース – 第21回まで zsh補完関数の書き方(訳) netstatの代替品ssコマンドのzsh補完関数を作った – Glide Note – グライドノート zshでサブコマンドとファイル名を手抜き補完する – Glide Note – グライドノート zsh補完関数を自作すると便利 – はこべブログ♨ zshcompsys(1): zsh completion system – Linux man page zshcompwid(1): zsh completion widgets – Linux man page zsh/Etc/completion-style-guide at master · zsh-users/zsh zshのある暮らし2 – 補完ファイル svnの補完関数を書こう(1) -準備編- – みずぴー日記 関連 zsh | SanRin舎

su・sudo

With great power comes great responsibility. su suとsu -の違いは環境変数を引き継ぐか、引き継がないかの違い。 ◇ログインアカウントの変更◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆ sudo sudoとは管理者権限でコマンド実行するためのコマンドである。 インストール FreeBSDでsudoをインストールするには(参照) [bash] # あらかじめsuになる $ cd /usr/ports/security/sudo $ make clean ===< Cleaning for sudo-1.6.8.12 $ make install [/bash] もしくは [bash] $ pkg_add -r sudo [/bash] sudoを使うためにはvisudoを使って設定ファイルを編集する。 %wheel ALL=(ALL) ALL と設定するとwheelグループの所属するユーザーがsudoを使えるようになる。 wheelグループにユーザーを加えるには [bash] $ vi /etc/group wheel:*:0:root,<ここに加える> [/bash] そして確認 [bash] $ id uid=1001(<ユーザー名>) gid=1001(users) groups=1001(users),0(wheel) [/bash] ちなみにFreeBSDで初めてsudoを使ったら以下の文章が出てくる。 We trust you have received the usual lecture from the local System Administrator.

シェル

ログインシェル /etc/passwdで確認できる。 一度に複数のユーザーの設定を変えるにはsudo vipwと打つか、直接sudo vi /etc/passedで編集する。 chshコマンドを使うと特定のユーザーのログインシェルを変更できる。 参照 ログイン・シェル とは – Linuxキーワード:ITpro MacのログインシェルをHomebrew等で入れたzshやbashに変更する方法 | Macとかの雑記帳 dotfiles GitHubで管理すると良い tmsanrinsha/dotfiles GitHub does dotfiles – dotfiles.github.com sudoやsuでrootになると/root以下のdotfilesを参照する。 sudo -Eをすると環境変数を引き継ぐので\$HOMEが変わらず、自分のホームディレクトリのdotfilesを参照できる。 sudoのバージョンが低いとEオプションがない。個人で使ってる場合は/root以下のようにシンボリックリンクを貼るとかする。 [bash] sudo ln -s $HOME/.* /root [/bash] 設定ファイルの読み込み 【redhat linux】bash 設定ファイル読み込み順番 キーバインド bashはreadlineという入力ライブラリを使っているが、zshは独自のものを使っている(参照)。 zshについてはこちら。 readlineについてはこちら。 環境変数 UNIX シェル 第08回「ロケールを正しく設定する」 環境変数LC_ALLがセットされている場合は、LC_CTYPEやLC_MESSAGESの元の設定は無効となる。環境変数LC_ALLがセットされていない場合は、LC_CTYPE や LC_MESSAGESのデフォルトの値は環境変数LANGの値となる bash を自分好みに設定する / 魔宮の伝説 – いますぐ実践! Linuxシステム管理 / Vol.119 -環境変数(PS1-PS4, PROMPT_COMMAND, IGNOREEOF, FIGNORE)

Shell script

割りと便利だけど微妙に忘れがちなbashのコマンド・チートシート - Qiita プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita パイプを使った書き方 Bashのよくある間違い | Yakst for文の作り方など。 シェルスクリプト –Mukuan Task Force– – きれいにまとまっている UNIX & Linux コマンド・シェルスクリプト リファレンス BASHスクリプト Bashのおぼえがき シェルスクリプト実践テクニック~bash編 UNIXの部屋 コマンド検索:リダイレクト (*BSD/Linux) bash 1=”:” 2=”ミームの死骸を越えてゆけ” language=”/zshのコマンドライン履歴機能。直前のコマンド、直前の引数。” シェルスクリプトを書く際に気を付けていること8箇条 – カイワレの大冒険 zsh – 良いとこ取りをしたシェル – 会津大学UNIXウィキ シェルスクリプトで排他処理 – まつぼ x Web シェルのワンライナーの再利用性を高めるたった一つの方法 – TIM Labs bashによるシェルスクリプトの小技(1) – shibainu55日記 set #!/bin/sh -eux もしくは #!/bin/sh set -eux set -eはエラーが出たら終了

readline

bashやMySQLで使われている入力ライブラリ。zshでは使われていない。 設定 設定は.inputrcに書く。 .inputrc at master from tmsanrinsha/dotfiles – GitHub 参考にしたサイト .inputrc – teratermで日本語入力ができない場合 カーソルキーでインクリメンタルなコマンド履歴サーチを可能にする設定 – モジログ mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決 – (ひ)メモ リンク bashのキーバインド(キーボードショートカット) まとめ – readlineとbind、ついでにstty編 – うまい棒blog rlwrapを使ってmysqlコマンドのプロンプトに色をつける | おいぬま日報