|
Cygwin で日本語のディレクトリに cd したいことというのはときどき出てくる. そこに日本語をそのまま打ち込めないことの方がたぶん多いだろう.となると, 「コマンドでディレクトリ名を取り出してそれを cd に渡したい」というのが Unix 使いの人情である.と,その前に,そもそも ~/.zshenv で
setopt printeightbit
していないとそもそも日本語ディレクトリが見えないはずだ.zsh なのは仕様と しておく.さて,ls でリストを出し,その下から n 行を切り出す tail と, 上から n 行を切り出す head を使えば,どっちかを 1 にすりゃいいんじゃね, ということになる.上から5番目を使うとすれば
% ls -1d | head -5 | tail -1
この結果を cd に渡せばいいんじゃない,と.
% cd `ls -1 | head -5 | tail -1` cd: no such file or directory: ^[[34;42m日本語^[[0m
……あれ? ダメだ.nkf かけてもダメだぞと.これは, ls="ls --color" に alias されていたから.ls --color=none として
% cd `ls -1 --color=none | head -5 | tail -1`
でOK.
エクスプローラから,アルファベットでショートカットを作っておく. Cygwin からはショートカットはシンボリックリンクとして扱われるので (というか Cygwin はシンボリックリンクをショートカットとして実装している と言うべきか),かんたんに cd できる.
12月19日(火)xargsをまともに使うのが久しぶりだったのでメモ.
10万個オーダーのファイルを消すときに,
% rm *
とかやるとシェルが引数リストを渡すときに長すぎて死ぬ.ので,
% ls | xargs rm
とする.
同様に10万個オーダーのファイルが何個あるのか数えるとき,
% ls ./????? | wc -l
とやるとまた引数が長すぎて ls できない.
% ls | xargs wc -l
とすると,xargs はパイプに受け取ったのを標準入力 ではなく引数リストに渡すので,wc -l 1 2 3 4.... とやることになる. そのためファイルの個数を数えられない.
% ls (-1) | wc -l
の方が正解.
Meadow から Cygwin のシェルを呼び出すのにかなり悩んだので書いておく.
これが必要だということを分かっていなかった.環境変数PATHに,d:\cygwin\bin (筆者の場合)を 設定しておく.Cygwin シェルの中から which bash や which zsh をすると,/usr/bin/bash や /usr/bin/zsh が返ってくるのだが,これらは d:\cygwin\usr\bin の下にはなく,d:\cygwin\bin の下にある.まずこれが必要.
Meadowから,~/.emacs (でも .emacs.el でもいいが) で
;; ;;; Cygwin の zsh を使う場合 (setq explicit-shell-file-name "zsh.exe") (setq shell-file-name "sh.exe") (setq shell-command-switch "-c -i")
と書いておく.こっちの設定はよく見つかる.
メニューへ
Any comments will be welcome at takot+web at sfc dot keio dot ac dot jp