パッケージ情報の取得
2005-07-25-3 / カテゴリ: [unix][Solaris][command] / [permlink]

% pkginfo
これで、パッケージ一覧が表示される。
(バージョン情報等を含む)詳しい情報は
% pkginfo -l

特定パッケージについては
% pkginfo | grep -i ssh
application SMCossh        openssh
% pkginfo -l SMCossh
   PKGINST:  SMCossh
      NAME:  openssh
  CATEGORY:  application
      ARCH:  sparc
   VERSION:  3.7.1p2
   BASEDIR:  /usr/local
:
:
こんな感じで。

fetchmail と ssh ポートフォワードの併用(さらにapop)
2005-07-23-2 / カテゴリ: [linux][command][ssh][POP3][メール] / [permlink]

.fetchmailrcに
set postmaster zaki
set no bouncemail
set logfile $HOME/log/fetchmail.log

defaults
  flush
  fetchall
  no mimedecode
  no rewrite
  smtphost localhost

poll pop.example.org
  via localhost port 10110
  proto apop
  username 'username'
  preconnect "ssh -f -L 10110:pop.example.org:110 -i ~/.ssh/.id_rsa_nonpass zaki@pop.example.org sleep 15"
  password 'pop-passwd'

pop.example.org に ssh セッションを張って、ローカルへの 10110 アクセスを pop.example.org の 110 へフォワード。でもって、ローカルの 10110 へ apop で pop3 アクセス。sleep 15 は、retr が完了しきれる時間を考慮すること。

.id_rsa_nonpass はパスフレーズなしの ssh 秘密鍵。管理はしっかり!

ssh ポートフォワード
2005-07-23-1 / カテゴリ: [linux][command][ssh] / [permlink]

いつもTTSSHやputtyのポートフォワードばかり使って、/usr/bin/ssh でポートフォワードしたことなかったなぁ。
ssh -L 10025:remote.example.org:25 user@example.org
これで、ローカルマシンの10025にアクセスすれば、example.org から見た remote.example.org のポート 25 にアクセスできる。

ちなみに、上の ssh プロセス自体は、example.org への通常の ssh アクセスとさほど変わらず。

fetchmail 実行時に、Received ヘッダを追記しない
2005-07-19-1 / カテゴリ: [linux][command][メール] / [permlink]

通常、fetchmail でメールを取り込むと、
Received: from mail.example.org [192.168.0.1]
        by localhost with POP3 (fetchmail-6.2.5)
        for zaki@localhost (single-drop); Fri, 15 Jul 2005 13:30:04 +0900 (JST)
みたいな Received ヘッダが追記される。

このとき、
set invisible
を .fetchmailrc に設定しておけば、このヘッダが追記されなくなる。
コマンドラインオプションは --invisible かな。

       --invisible オプション (キーワード: set invisible) は fetchmail を見 え
       なくしようとします。通常、fetchmail は他の MTA と同じように振舞います。
       つまり、送信の経路が記述されている Received ヘッダをメッセージ全てに 書
       き 込 み、転送先の MTA に、fetchmail そのものが実行されているマシンから
       メールが来たことを知らせます。 invisible オプションが有効である場合は、
       Received ヘッダは付けられず、fetchmail は転送先の MTA をだまして、メー
       ルがメールサーバのホストから直接届いたと思わせようとします。
man fetchmail より

find で否定条件
2005-07-14-3 / カテゴリ: [unix][linux][command] / [permlink]

! をつける
$ find . ! -name "foobar"
foobar 以外を検索

単純な条件付のファイルリスト取得は grep は使わず find のオプションに指定せよ
2005-07-14-2 / カテゴリ: [unix][Solaris][command] / [permlink]

某所にて、こんなコマンドを見た。
$ find . -mtime +1 -print |grep -v .gz|grep -v "lost+found"

Solaris で試したところ、
$ find . -mtime +1 ! -name "*.gz" ! -name "lost+found" -print
の方が、3倍ほど高速だった。

pts/8:miyazaki@nwmail% time zsh -c 'repeat 100 /usr/bin/find . -mtime +1 -print
| grep -v "\.gz" | grep -v "lost+found"' > /dev/null
zsh -c  > /dev/null  1.11s user 3.15s system 94% cpu 4.522 total

pts/8:miyazaki@nwmail% time zsh -c 'repeat 100 /usr/bin/find . -mtime +1 ! -name
 "*.gz" ! -name "lost+found" -print' > /dev/null
zsh -c  > /dev/null  0.40s user 1.25s system 95% cpu 1.736 total

(ファイル数)
pts/8:miyazaki@nwmail% /usr/bin/find . -mtime +1 -print | grep -v "\.gz" | grep
-v "lost+found" W -l
     34
pts/8:miyazaki@nwmail% /usr/bin/find . -mtime +1 ! -name "*.gz" ! -name "lost+fo
und" -print W -l
     34
pts/8:miyazaki@nwmail% find . W -l
     41

てーか、grep -v .gz | grep -v "lost+found" って、gzip で圧縮したファイルと、lost+found ディレクトリを除きたいんだろうけど、要件を満たしすぎているぞ>担当者
Referrer (Inside): [2006-02-23-2]

find の and/or オプション
2005-07-14-1 / カテゴリ: [unix][Solaris][command] / [permlink]

Solaris の /usr/bin/find は、GNU findutil の -and/-or はない。
かわりに、-a/-o があるので、こっちを使う。
GNU find も、-and/-or の代わりに -a/-o が使える。こっちで覚えた方がいいかも。

ついでに、-and は省略しても同じ条件になる。
って、マニュアルにかいてあるし^^;;;
       expr1 expr2
              And (implied); expr1 が偽の場合は expr2 は評価されない。

       expr1 -a expr2
              expr1 expr2 と同じ。

       expr1 -and expr2
              expr1 expr2 と同じ。

関連: [2005-03-02-1]

wget で digest 認証
2005-07-12-1 / カテゴリ: [linux][command] / [permlink]

[2005-07-11-2]と同じ書式で普通にできるっぽい。wget 側で自動判別するのかな?
昨日できなかった理由がわからないけど、環境依存かもしれない。
wget ... GNU Wget 1.9.1
httpd ... Apache/1.3.3 (Debian GNU/Linux)

モジュール(mod_digest)のバージョンはどうやって見るのかな?

wget で basic 認証
2005-07-11-2 / カテゴリ: [linux][command] / [permlink]

$ wget --http-user=username --http-passwd=password http://www.example.org/
ps で見ると引数からパスがバレルので、共用サーバでの使用は控えるべし。

wget の Changelog 見る限り、digest認証にも対応してそうなんだけど、うまくいかない…
Referrer (Inside): [2005-07-12-1]

ascii文字の正規表現
2005-07-08-2 / カテゴリ: [programming][perl][command][正規表現] / [permlink]

m/[ -~]/
0x20(スペース)から0x7e(チルダ)まで。
0x20未満のハードタブ(0x09)や改行(0x0A)は個別に対処せよ。
0x7F(DEL)はいらねーよな。

あぁ、grep でも使える
$ command | grep -v '[ -~]'
asciiを含まない行を出力
$ command | grep '[^ -~]'
ascii以外を含む行を出力

lv(v.4.50, v.4.51)の正規表現検索は、スペースを範囲に含めると overcrossing range と出力されて効かないので、0x21の!から指定する
/[^ !-~]
ascii以外(タブなど除く)を含む行を出力

less(351, 358)は [ -~]で大丈夫なんだけどなぁ。意外にも more も大丈夫だ。

grep(GNU) マッチ行の前後X行も出力(前後セット)
2005-06-27-1 / カテゴリ: [linux][command][grep] / [permlink]

$ grep -C X pattern file
もしくは
$ grep -X pattern file

追記: -C を -c と間違えて書いていたのを修正(06/29)

くぅ、-A とか -B [2004-11-29-2] より、こっち覚えるのが先じゃねーか。

ただし、このオプションだけつけてもむしろ見難いので、-n とセットのほうが結果が見やすい。
$ grep -nX pattern file
マッチ行前後-
マッチ行:
マッチ行前後-

fetchmail で procmail を使わずにファイルに落とす
2005-06-24-1 / カテゴリ: [linux][メール][command] / [permlink]

[2004-09-09]では「そのままファイルに落とす」といいつつ procmail 使ってるので訂正
mda "/bin/cat - > /dir/file"
これでいける

grep スクリプト(?)
2005-06-13-1 / カテゴリ: [linux][command][grep] / [permlink]

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21973&forum=10
hmiyazaki@chaource:~/tmp$ cat test.grep 
#!/usr/bin/grep -ve #
hoge
foo
bar
hoge
hmiyazaki@chaource:~/tmp$ ./test.grep 
hoge
foo
bar
hoge
こんなこともできたのかー。
でも、使い道が…^^;

MANPATH を一時変更してマニュアルを見る
2005-06-07-4 / カテゴリ: [unix][linux][command] / [permlink]

$ man -M /foo/bar command

でも、alias で
alias man="man -M /usr/share/man -M /usr/local/man"
alias manlocal="man -M /usr/local/man -M /usr/share/man"
とかにした方がラクそうかも

grep でパターンを含まないファイル名を表示
2005-06-07-3 / カテゴリ: [linux][command][grep] / [permlink]

$ grep -L pattern *
Solaris の /bin/usr/grep は NG

ファイル内に1箇所も pattern を含まないファイル名を表示する。

grep パターンを含むファイル名のみを表示
2005-06-07-2 / カテゴリ: [unix][linux][command][grep] / [permlink]

$ grep -l pattern *
これで、pattern を含むファイル名(複数回マッチしてもファイル名は一つ)出力
Solaris の /bin/usr/grep も OK

たとえば、カレント以下 pattern を含むファイルを削除するなら
$ find . -type f | xargs grep -l pattern | xargs rm

みたいな。

patch ファイルの作り方
2005-06-05-1 / カテゴリ: [linux][unix][command] / [permlink]

(GNU patch 用)
とりあえず、簡単に。(1個のファイルの場合)
元のファイル(foobar.txt)がある
foobar.txt.org にコピーしておく
foobar.txt を修正する
% diff -u foobar.txt.org foobar.txt > foobar.txt.patch
できあがり。

あとは、foobar.txt のあるディレクトリに foobar.txt.patch を置いて
% patch < patch.txt.patch

パッケージの中身リスト(dpkg -L package)
2005-05-27-2 / カテゴリ: [win][command][cygwin] / [permlink]

$ cygcyeck -l package

telnet コマンドの強制停止
2005-05-19-2 / カテゴリ: [command][network] / [permlink]

telnet 実行中に応答がなくなったとき
> ^]
で、telnet プロンプトに切り替わるので
> telnet> quit
すれば抜けれる(と良いなぁ)

writeコマンド
2005-04-12-1 / カテゴリ: [unix][command] / [permlink]

usage: write username [terminal]
cf.
% write miyazaki pts/1
string
^D
カテゴリ: command / 前ページ 1 2 3 4 5 6 次ページ

最終更新時間: 2013-05-02 16:12