履歴のインクリメンタルサーチとCtrl-sによるstop
2006-09-28-2 / カテゴリ: [unix][shell] / [permlink]
zshやbashでCtrl-rすると、入力文字列をキーにしたインクリメンタルサーチができる。逆サーチ(メッセージを見る限り『^rが逆』ぽいけど^^;)はCtrl-s
でもデフォルト状態のCtrl-sは端末のstopに割り当てられているので、入出力がロックされてしまう(解除はCtrl-q)
stopを使わないのであれば、
これで、Ctrl-s/Ctrl-rでインクリメンタルサーチ可能
やっぱWinよりUNIX/Linux系の方が戯術ネタあるよなぁ。
というか、最近一番使うシェルってエクスプローラなんだよなぁ。
(いや、あまり使ってないか?)
でもデフォルト状態のCtrl-sは端末のstopに割り当てられているので、入出力がロックされてしまう(解除はCtrl-q)
% stty -a speed 38400 baud; rows 24; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = ^Z; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo -echoe -echok -echonl -noflsh -tostop -echoctl -echokeなので、端末のstopのキーバインドを変更する。
% stty stop ^x (Ctrl-xに変更)stty: invalid integer argument ... とか表示される場合はクォートで囲むか、Ctrl-vの後にアサインしたいキーコンビネーション(ハット+キーでなく、コントロールを押下しながら設定したいキー)を入力。
stopを使わないのであれば、
% stty stop undef
これで、Ctrl-s/Ctrl-rでインクリメンタルサーチ可能
やっぱWinよりUNIX/Linux系の方が戯術ネタあるよなぁ。
というか、最近一番使うシェルってエクスプローラなんだよなぁ。
(いや、あまり使ってないか?)
zsh で TAB 補完時に大文字小文字無視
2006-06-23-2 / カテゴリ: [unix][shell] / [permlink]
compctl -M 'm:{a-z}={A-Z}'でGo
Linux だとあんまり大文字使わないんだけど、windowsだと何故か割と大文字使うんだよね…
diff オプション再帰編
2006-03-08-2 / カテゴリ: [linux][unix][command] / [permlink]
-q: 差分の有無のみ出力
まぁ、基本オプションだろうけど。
-x PATTERN: PATTERN(ファイルグロブ)に一致するファイルを除外
perl のパスまで変わってるのかよ^^;
まぁ、基本オプションだろうけど。
$ diff -rq chalow-1.0rc4/ chalow-1.0rc6 ファイルchalow-1.0rc4/ChangeLogとchalow-1.0rc6/ChangeLogは違います ファイルchalow-1.0rc4/ChangeLogReader.pmとchalow-1.0rc6/ChangeLogReader.pmは違います ファイルchalow-1.0rc4/READMEとchalow-1.0rc6/READMEは違います ファイルchalow-1.0rc4/chalowとchalow-1.0rc6/chalowは違います ファイルchalow-1.0rc4/cl.confとchalow-1.0rc6/cl.confは違います ファイルchalow-1.0rc4/clsearch.cgiとchalow-1.0rc6/clsearch.cgiは違います chalow-1.0rc6/confだけに発見: utf8 chalow-1.0rc4/conf/ytoだけに発見: cl-yto.conf chalow-1.0rc6/conf/ytoだけに発見: cl.conf chalow-1.0rc6/conf/ytoだけに発見: debug.css ファイルchalow-1.0rc4/conf/yto/diary.cssとchalow-1.0rc6/conf/yto/diary.cssは違います
-x PATTERN: PATTERN(ファイルグロブ)に一致するファイルを除外
$ diff -x README -x "Change*" -ru chalow-1.0rc4/ chalow-1.0rc6/ --- chalow-1.0rc4/chalow 2004-12-24 21:09:50.000000000 +0900 +++ chalow-1.0rc6/chalow 2005-08-21 14:35:31.000000000 +0900 @@ -1,5 +1,5 @@ -#!/usr/bin/env perl -# $Id: chalow,v 1.95 2004/12/24 12:09:50 yto Exp $ +#!/usr/bin/perl : :chalow の新しい(つっても半年以上前だけど)バージョンに「続きを見る」機能があるらしーけど、割とコードをいじくり回してるのでうまくマージしないと…
perl のパスまで変わってるのかよ^^;
ファイルがどのパッケージに含まれていたかの確認
2005-08-31-2 / カテゴリ: [unix][Solaris] / [permlink]
dpkg -S /path/file に相当するコマンドは?
% pkgchk -lp /usr/sbin/pkgchk Pathname: /usr/sbin/pkgchk Type: regular file Expected mode: 0555 Expected owner: root Expected group: sys Expected file size (bytes): 169020 Expected sum(1) of contents: 38077 Expected last modification: Jul 11 05:54:58 2003 Referenced by the following packages: SUNWcsu Current status: installed
パッケージの内容一覧
2005-08-31-1 / カテゴリ: [unix][Solaris] / [permlink]
dpkg -L pkg-name に相当するコマンドは?
% pkgchk -v pkg-name一覧の表示と同時に、デフォルトからの改竄チェックもおこなう。
% pkgchk -l pkg-nameファイルリスト以外に、Type/mode/owner/size などの詳細情報も表示する。
zsh/tcsh で、「以外」のワイルドカード
2005-08-29-4 / カテゴリ: [unix][linux][shell] / [permlink]
'^'を入れると、指定以外のリストになる。
{} との併用は不可なのか。
bash は使えないのね…
ls ^*.pl末尾が .pl 以外のリスト
An entire glob-pattern can also be negated with `^':man tcsh(1) より
> echo *
bang crash crunch ouch
> echo ^cr*
bang ouch
Glob-patterns which do not use `?', `*', or `[]' or which
use `{}' or `~' (below) are not negated correctly.
{} との併用は不可なのか。
bash は使えないのね…
Apache(1.x), mod_ssl で https
2005-08-09-1 / カテゴリ: [unix][SSL][Apache] / [permlink]
オレオレ CA 付で、新規に CA とサーバ鍵を生成する。
参考 Apache+mod SSLのインストールと設定
非 root で作業(ぉぃ
つか、mod_ssl の INSTALL にインストール手順が載ってるので、そのまんま作業すれば良い。
(↓ prefix の指定方法を間違ってます。後述)
で
TYPE=custom で、CA とサーバ鍵をセットで作る(作ったサーバ証明書をCAに署名させる)
インストール
…うまくいってるように見えたけど、~/local/apache-ssl がない。
探してみると、作業ディレクトリ直下に '~' ディレクトリができてる… orz
つーわけで、--prefix は絶対ディレクトリ指定にすれば OK
でもって、インストールディレクトリ(~/local/apache-ssl)以下にある conf/ssl.crt/ca.crt をクライアント(ブラウザ) にインポートしてやれば、OK
debian での apache + mod-ssl インストール[2005-03-25-1]と似たようなものか。
参考 Apache+mod SSLのインストールと設定
非 root で作業(ぉぃ
$ mkdir -p ~/local/src/apache $ cd ~/local/src/apache $ wget http://www.modssl.org/source/mod_ssl-2.8.23-1.3.33.tar.gz $ wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/apache_1.3.33.tar.gz $ gzip -dc mod_ssl-2.8.23-1.3.33.tar.gz | tar xvf - $ gzip -dc apache_1.3.33.tar.gz | tar xvf -
つか、mod_ssl の INSTALL にインストール手順が載ってるので、そのまんま作業すれば良い。
(↓ prefix の指定方法を間違ってます。後述)
$ cd mod_ssl-2.8.23-1.3.33 $ ./configure --with-apache=../apache_1.3.33 --with-ssl=/usr/local/ssl --prefix=~/local/apache-ssl Configuring mod_ssl/2.8.23 for Apache/1.3.33 + Apache location: ../apache_1.3.33 (Version 1.3.33) + OpenSSL location: /usr/local/ssl + Auxiliary patch tool: ./etc/patch/patch (local) + Applying packages to Apache source tree: o Extended API (EAPI) o Distribution Documents o SSL Module Source o SSL Support o SSL Configuration Additions o SSL Module Documentation o Addons Done: source extension and patches successfully applied. Configuring for Apache, Version 1.3.33 + using installation path layout: Apache (config.layout) Creating Makefile Creating Configuration.apaci in src Creating Makefile in src + configured for Solaris 280 platform + setting C compiler to gcc + setting C pre-processor to gcc -E + using "tr [a-z] [A-Z]" to uppercase + checking for system header files + adding selected modules o ssl_module uses ConfigStart/End + SSL interface: mod_ssl/2.8.23 + SSL interface build type: OBJ + SSL interface compatibility: enabled + SSL interface experimental code: disabled + SSL interface conservative code: disabled + SSL interface vendor extensions: disabled + SSL interface plugin: Vendor DBM (libc) + SSL library path: /opt/usr/local/ssl + SSL library version: OpenSSL 0.9.7b 10 Apr 2003 + SSL library type: installed package (stand-alone) + enabling Extended API (EAPI) + using system Expat + checking sizeof various data types + doing sanity check on compiler and options Creating Makefile in src/support Creating Makefile in src/os/unix Creating Makefile in src/ap Creating Makefile in src/main Creating Makefile in src/modules/standard Creating Makefile in src/modules/ssl Now proceed with the following commands: $ cd ../apache_1.3.33 $ make $ make certificate $ make install
で
$ cd ../apache_1.3.33 $ make : (コンパイル) :
TYPE=custom で、CA とサーバ鍵をセットで作る(作ったサーバ証明書をCAに署名させる)
$ make certificate TYPE=custom make[1]: Entering directory `/export/home/miyazaki/local/src/apache/apache_1.3.3 3/src' SSL Certificate Generation Utility (mkcert.sh) Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reserved. Generating custom certificate signed by own CA [CUSTOM] ______________________________________________________________________ STEP 0: Decide the signature algorithm used for certificates The generated X.509 certificates can contain either RSA or DSA based ingredients. Select the one you want to use. Signature Algorithm ((R)SA or (D)SA) [R]: ______________________________________________________________________ STEP 1: Generating RSA private key for CA (1024 bit) [ca.key] 1578372 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus .....................++++++ ...++++++ e is 65537 (0x10001) ______________________________________________________________________ STEP 2: Generating X.509 certificate signing request for CA [ca.csr] You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- 1. Country Name (2 letter code) [XY]:JP 2. State or Province Name (full name) [Snake Desert]:Kanagawa 3. Locality Name (eg, city) [Snake Town]:Yokohama 4. Organization Name (eg, company) [Snake Oil, Ltd]:home 5. Organizational Unit Name (eg, section) [Certificate Authority]:admin 6. Common Name (eg, CA name) [Snake Oil CA]:foo 7. Email Address (eg, name@FQDN) [ca@snakeoil.dom]:www@www.example.org 8. Certificate Validity (days) [365]: ______________________________________________________________________ STEP 3: Generating X.509 certificate for CA signed by itself [ca.crt] Certificate Version (1 or 3) [3]: Signature ok subject=/C=JP/ST=Kanagawa/L=Yokohama/O=home/OU=admin/CN=foo/emailAddress=www@www.example .org Getting Private key Verify: matching certificate & key modulus Verify: matching certificate signature ../conf/ssl.crt/ca.crt: /C=JP/ST=Kanagawa/L=Yokohama/O=home/OU=admin/CN=foo/emailAddress =www@www.example.org error 18 at 0 depth lookup:self signed certificate OK ______________________________________________________________________ STEP 4: Generating RSA private key for SERVER (1024 bit) [server.key] 1578471 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus ..............++++++ ...............................++++++ e is 65537 (0x10001) ______________________________________________________________________ STEP 5: Generating X.509 certificate signing request for SERVER [server.csr] You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- 1. Country Name (2 letter code) [XY]:JP 2. State or Province Name (full name) [Snake Desert]:Kanagawa 3. Locality Name (eg, city) [Snake Town]:Yokohama 4. Organization Name (eg, company) [Snake Oil, Ltd]:home 5. Organizational Unit Name (eg, section) [Webserver Team]:foo 6. Common Name (eg, FQDN) [www.snakeoil.dom]:www.example.org 7. Email Address (eg, name@fqdn) [www@snakeoil.dom]:www@www.example.org 8. Certificate Validity (days) [365]: ______________________________________________________________________ STEP 6: Generating X.509 certificate signed by own CA [server.crt] Certificate Version (1 or 3) [3]: Signature ok subject=/C=JP/ST=Kanagawa/L=Yokohama/O=home/OU=foo/CN=www.example.org/emailAddress =www@www.example.org Getting CA Private Key Verify: matching certificate & key modulus Verify: matching certificate signature ../conf/ssl.crt/server.crt: OK ______________________________________________________________________ STEP 7: Enrypting RSA private key of CA with a pass phrase for security [ca.key] The contents of the ca.key file (the generated private key) has to be kept secret. So we strongly recommend you to encrypt the server.key file with a Triple-DES cipher and a Pass Phrase. Encrypt the private key now? [Y/n]: n Warning, you're using an unencrypted private key. Please notice this fact and do this on your own risk. ______________________________________________________________________ STEP 8: Enrypting RSA private key of SERVER with a pass phrase for security [ser ver.key] The contents of the server.key file (the generated private key) has to be kept secret. So we strongly recommend you to encrypt the server.key file with a Triple-DES cipher and a Pass Phrase. Encrypt the private key now? [Y/n]: n Warning, you're using an unencrypted RSA private key. Please notice this fact and do this on your own risk. ______________________________________________________________________ RESULT: CA and Server Certification Files o conf/ssl.key/ca.key The PEM-encoded RSA private key file of the CA which you can use to sign other servers or clients. KEEP THIS FILE PRIVATE! o conf/ssl.crt/ca.crt The PEM-encoded X.509 certificate file of the CA which you use to sign other servers or clients. When you sign clients with it (for SSL client authentication) you can configure this file with the 'SSLCACertificateFile' directive. o conf/ssl.key/server.key The PEM-encoded RSA private key file of the server which you configure with the 'SSLCertificateKeyFile' directive (automatically done when you install via APACI). KEEP THIS FILE PRIVATE! o conf/ssl.crt/server.crt The PEM-encoded X.509 certificate file of the server which you configure with the 'SSLCertificateFile' directive (automatically done when you install via APACI). o conf/ssl.csr/server.csr The PEM-encoded X.509 certificate signing request of the server file which you can send to an official Certificate Authority (CA) in order to request a real server certificate (signed by this CA instead of our own CA) which later can replace the conf/ssl.crt/server.crt file. Congratulations that you establish your server with real certificates. make[1]: Leaving directory `/export/home/miyazaki/local/src/apache/apache_1.3.33 /src'
インストール
$ make install
…うまくいってるように見えたけど、~/local/apache-ssl がない。
探してみると、作業ディレクトリ直下に '~' ディレクトリができてる… orz
つーわけで、--prefix は絶対ディレクトリ指定にすれば OK
でもって、インストールディレクトリ(~/local/apache-ssl)以下にある conf/ssl.crt/ca.crt をクライアント(ブラウザ) にインポートしてやれば、OK
debian での apache + mod-ssl インストール[2005-03-25-1]と似たようなものか。
Referrer (Inside):
[2005-08-28-1]
ls をリダイレクトしたときに、1行複数項目表示
2005-08-08-1 / カテゴリ: [unix][command] / [permlink]
$ ls -C | more
オプションなしで ls をリダイレクト・パイプしたときは1行1エントリになる(つか、これがデフォルトみたい)。
出力は標準出力に対して行われ、 -C オプションで複数列出力が要求されな いman ls より
限 り、1 行に 1 エントリである。しかし、端末に対する出力では、出力が 1
列または複数列のどちらになるかが定められていない。オプション -1 と -C
は、それぞれ 1 列出力と複数列出力を強制させるために使用される。
半角カタカナのコード
2005-07-29-2 / カテゴリ: [unix] / [permlink]
sjis ... 0xA6 - 0xDF (ヲァィゥェォャュョッ‐アイ…ワン゛゜)
euc ... sjis のコードの前に 0x8E
euc の半角カタカナは、sjisの2倍のサイズってことか。
つか、なんで「ヲ」は最初に来てんだろ??
euc ... sjis のコードの前に 0x8E
euc の半角カタカナは、sjisの2倍のサイズってことか。
つか、なんで「ヲ」は最初に来てんだろ??
パッケージ情報の取得
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 : :こんな感じで。
find で否定条件
2005-07-14-3 / カテゴリ: [unix][linux][command] / [permlink]
! をつける
$ find . ! -name "foobar"foobar 以外を検索
単純な条件付のファイルリスト取得は grep は使わず find のオプションに指定せよ
2005-07-14-2 / カテゴリ: [unix][Solaris][command] / [permlink]
某所にて、こんなコマンドを見た。
Solaris で試したところ、
てーか、grep -v .gz | grep -v "lost+found" って、gzip で圧縮したファイルと、lost+found ディレクトリを除きたいんだろうけど、要件を満たしすぎているぞ>担当者
$ 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 は省略しても同じ条件になる。
って、マニュアルにかいてあるし^^;;;
関連: [2005-03-02-1]
かわりに、-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]
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"とかにした方がラクそうかも
patch ファイルの作り方
2005-06-05-1 / カテゴリ: [linux][unix][command] / [permlink]
(GNU patch 用)
とりあえず、簡単に。(1個のファイルの場合)
あとは、foobar.txt のあるディレクトリに foobar.txt.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
zshを使ってコマンドを指定回数連続実行
2005-04-22-2 / カテゴリ: [unix][linux][shell] / [permlink]
% zsh -c "repeat COUNT command"ベンチ計ったりするには
% time zsh -c "repeat 100 command >/dev/null"見たいな感じで
最終更新時間: 2013-05-02 16:12