ラベル UNIXコマンド の投稿を表示しています。 すべての投稿を表示
ラベル UNIXコマンド の投稿を表示しています。 すべての投稿を表示

2013/07/04

curlコマンドで連番のファイルを一気にダウンロードする

例えばvimのパッチを7.3.001から7.3.969までダウンロードする場合は以下のようにします。

$ curl -O ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.[001-969]

2011/11/16

カレントディレクトリ以下のタグファイルをつくる

忘れないようにメモ。

$ find . -name "*.[ch]" | \
> sed -e 's/^/"/' -e 's/$/"/' | \
> xargs /usr/bin/ctags -a


2010/03/06

複数の画像ファイルを1つのPDFに変換する

忘れないようにメモ。

複数の画像ファイルを1つのPDFに変換する場合はImageMagickのconvertコマンドを使用するのがいいみたいです。

Mac OS X(Snow Leopard)のMacPortsでインストールしたImageMagickで確認しました。

$ convert --version
Version: ImageMagick 6.6.0-0 2010-03-06 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC
Features: OpenMP OpenCL

$ ls
01.jpg 04.jpg 06.jpg 08.jpg 10.jpg 12.jpg 14.jpg 16.jpg 18.jpg
03.jpg 05.jpg 07.jpg 09.jpg 11.jpg 13.jpg 15.jpg 17.jpg 20.jpg

$ convert *.jpg a.pdf

$ ls
01.jpg 04.jpg 06.jpg 08.jpg 10.jpg 12.jpg 14.jpg 16.jpg 18.jpg a.pdf
03.jpg 05.jpg 07.jpg 09.jpg 11.jpg 13.jpg 15.jpg 17.jpg 20.jpg


連番のファイル順のPDFが作成されました。

2007/08/03

定期的にコマンドを実行する

watchコマンドを使う。

マニュアルからの引用。
watch - プログラムを定期的に実行し、出力をフルスクリーンで表示する

デフォルトは2秒毎に実行する。


afioコマンドでバックアップを行っている際のバックアップファイル(julie_afio_20070803.afz)のサイズを監視した。
$ watch 'ls -l julie_afio_20070803.afz ; ←実際は一行
du -sh julie_afio_20070803.afz'


次の画像は、GNU screenで画面を2分割しており、分割された画面の上がafioコマンドの出力、下がwatchコマンドで定期的に実行しているlsとduコマンドの出力。

5.5GBだったサイズが、


7.6GBになった。

2007/07/30

あるファイルを含むパッケージを調べる(RPM)

Vine Linux 4.1で、あるファイルを含むパッケージを調べる。
$ rpm -q -f /usr/bin/klaptop_acpi_helper
kdeutils-3.5.7-0vl1.1

2007/07/29

文字コード調査(テキトー)

Debian GNU/Linuxの文字コードがUTF-8のようですので、勉強のためにうちのシステムの文字コードについて調べてみました。

よく分からずにテキトーにやってます。

以下の記述は私のテキトーな調査を基に記述しています。
けっして信じないでください。


日本語名のフォルダを作成してみます。
以下のフォルダ作成は、Vine Linux 4.1のGNOMEターミナルエディタからDebian GNU/Linux 4.0にtelnet接続して行いました。
$ mkdir UTFです      <-- GNOMEターミナルをUTF8に設定し、
フォルダ"UTFです"を作成

$ mkdir EUC鐃叔わ申 <-- GNOMEターミナルをEUC-JPに設定し、
フォルダ"EUCです"を作成
(入力中に文字化けします)

$ ls <-- GNOMEターミナルをEUC-JPに設定
(日本語名のフォルダは全て文字化けしてしまいます)
??能?? Comic_etc EUC?任? Game HONDA KOUSHIEN TV_Cinema
UTF�с™ WallPaper WallPaper2 Web

$ ls <-- GNOMEターミナルをUTF8に設定
(UTF-8の日本語名のフォルダだけ正常に表示されます)
??ǽ?? Comic_etc EUC?Ǥ? Game HONDA KOUSHIEN TV_Cinema
UTFです WallPaper WallPaper2 Web

ここまででフォルダなどを作成したところをVine Linux 4.1のKonquerorで参照したのが下記です。
Vine Linux 4.1の文字コードはEUC-JPです。

日本語のフォルダ名がついているのは下記の3つです。
芸能人・・・Debian GNU/Linux (UTF-8の環境)に変更する以前から作成してあったフォルダ名EUC-JPのフォルダ

UTFです・・・上でGNOMEターミナルをUTF-8に設定した後に作成したフォルダ(化けてます)

EUCです・・・上でGNOMEターミナルをEUC-JPに設定した後に作成したフォルダ

GNOMEターミナルをUTF-8にして入力したフォルダ名はUTF-8で、GNOMEターミナルをEUC-JPにして入力したフォルダ名はEUC-JPで保存されていると思われます。


自分で作ったファイル名/フォルダ名の文字コードを調べるスクリプト(信頼性0)で調べると次のようになりました。
��ǽ�� (Directory)->
EUC-JP <-- 狙い通り!
Comic_etc (Directory)->
ASCII
EUC�Ǥ� (Directory)->
EUC-JP <-- 狙い通り!
Game (Directory)->
ASCII
HONDA (Directory)->
ASCII
KOUSHIEN (Directory)->
ASCII
TV_Cinema (Directory)->
ASCII
UTFです (Directory)->
UTF-8 <-- 狙い通り!
WallPaper (Directory)->
ASCII
WallPaper2 (Directory)->
ASCII
Web (Directory)->
ASCII


一応私の意図通りになっているようです。
(フォルダ名のエンコードもスクリプトの動作も)
繰り返しますが、信頼性0です。

ちなみにスクリプトの中身はこうです。
信頼性0です。
私はシェルスクリプトなんて作ったことろくにありません。
よく分かりません。
(というか、誰か教えて・・・)

中でnkfを--guessオプションをつけて使用しています。
おそらくnkf 2.0.4以降が必要だと思います。
#!/bin/sh

error_flag=1 # Initial valuable (ERROR)

for name in *; do
if [ -L "$name" ];then
# Symbolic link
type="Symbolic link"
error_flag=1
elif [ -d "$name" ]; then
# directory
type="Directory"
error_flag=0 # success
elif [ -f "$name" ]; then
# file
type="File"
error_flag=0 # success
else
# unknown
type="Unknown type"
error_flag=1 # error
fi

if [ $error_flag = 0 ]; then
echo "$name ($type)->"
echo -n " "
echo -n "$name" | nkf -guess
else
echo "$name ($type)"
fi
done

exit 0

2007/07/28

UTF-8によるscreen文字化け

家内ネットワークのファイル/IMAPサーバとして使いはじめたDebian GNU/Linux 4.0の日本語環境はデフォルトがUTF-8みたいです。
xxx@julie:~$ echo $LANG
ja_JP.UTF-8

ついにうちにもUTF-8の環境が出来てしまったみたいです。


で、EUC-JPのVine Linux 4.1からtelnetでDebian GNU/Linux 4.0にアクセスした際に文字化けする現象が発生していました。
(後述しますが、私の設定の問題です。)


次のような文字化けの現象が発生していました。

・KDEのKonsole(以下Konsole)の「設定」ー「エンコーディング」をutf8にしても文字化けが解消されない
・GNU Screen(以下screen)を使用していない状態でKDEのKonsoleの「設定」ー「エンコーディング」をutf8に変更すると文字化けしない


screenを使用せずにKonsoleをUTF-8の設定にすれば文字化けしないので、どうやらscreenの設定が悪いようです。
そういえば、.screenrcではろくに設定をしていませんでした。
escape ^L^L
hardstatus alwayslastline "screen |%c %m/%d | %w"

ネットで調べると.screenrcの設定例は色々見つかるのですが、自分の場合は少しずつ設定を追加していこうかと思っています。


screenのマニュアルを調べたところ、次のような対策があるみたいです。
もちろん他にもあるとは思いますが、私が簡単に見つけられた方法の中で手軽だと思ったのが下記の2つでした。
Konsoleのエンコーディングはutf8に変更することが前提です。

(1) "-U"オプションをつけて起動する
screenのマニュアルには次のようにあります。
-U   UTF-8 モードで screen を動作させる。
このオプションは、ユーザの端末が UTF-8 エンコードされた
文字を理解し、また送信してくることをscreenに伝える。
また新規ウィンドウのデフォルトエンコーディングが
`utf8' になる。


(2) screenのコマンドモードでutf8コマンドを使用する
utf8 [on|off [on|off]]
現在のウィンドウが用いるエンコーディングを変更する。
utf8 を on にすると、ウィンドウに送られる文字列は
UTF-8 エンコードされる (逆も同じ)。 パラメータを
省略すると状態をトグルする。二つ目のパラメータを
与えると、ディスプレイのエンコーディングも同時に
変更される (これは screen の "-U"オプションで
指定するほうが良いが)。 "defutf8" も参照のこと。
これは新規に生成されるウィンドウのデフォルトを変更する。


うちの場合、デフォルトはVine Linux 4.1のEUC-JPで使用しているため、必要な時に(2)の方法を用いる(screenのコマンドモードに入り、"utf8 on on"というコマンドを使用してUTF-8に変更する)方がいい気がします。
多分。

2007/07/20

ZaurusをSambaクライアントに

ZaurusをNFSクライアントに」ではZaurus(SL-C3000)をNFSクライアントにしましたが問題がありました。

問題1
ファイル名の日本語が表示出来ていません。

以前Sambaサーバ上のファイル名はShift-JISにしました。
NFSサーバとして使用している場合にはEUC-JPになっているはずです。多分。

ZaurusではSambaとNFSの両方で日本語表示できないということは、ZaurusはShift-JISでもEUC-JPでもないということでしょうか?
もしかしてUTF-8?

問題2
1Gくらいあるフォルダを"cp -ar"でNFS領域にコピーしたのですが、途中でcpがデッドロックとやらになってしまい止まってしまいました。

ログ(syslog)とか見てみたのですが、参考になるようなログはみつかりませんでした。
この場合どのログをみればよかったのでしょうか?
デッドロックの問題は原因がつかめていません。
まだ設定が不足している箇所も多数あると思いますが・・・。



上記のような問題が発生しているのを避けるため、NFSではなくSambaを使用してJULIE(NFSサーバ兼Sambaサーバ)にアクセスしてみるのはどうかと考えました。
本来であればNFSの設定を見直すべきかもしれませんが。

NFSの文字コード指定ってあるのか分かりませんが、Sambaならあるのは以前確認済みですし、日本語表示もなんとかなるのではないかとほのかな期待を抱いてやってみることにします。

(1) Zaurus用smbmountを取得
こちらからsmbmount_0.1_arm.ipkを取得し、インストールしました。
(後ほど述べますが、ここでインストールしたsmbmount_0.1_arm.ipkはその後アンインストールしました)

(2) JULIE(Sambaサーバ)の領域をマウント
#sudo smbmount //julie/share /mnt/julie/
-o username=xxx,ip=xxx.xxx.xxx.xxx

としてマウントしました。


(1)~(2)までで、とりあえずZaurusをSambaクライアントとして使用できるようになりました。
NFSを使用したときよりSambaを使っている方が動作が軽快な気がします。
(もちろんNFS設定をチューニングすればいいのかもしれません)

ところが、Zaurusのファイルマネージャではやはりファイル名の日本語表示が出来ていませんでした。

smbmountのオプションとしてcodepageとiocharsetがありますが、(1)でインストールしたsmbmount_0.1_arm.ipkでは対応していませんでした。

探してみたところcodepageとiocharsetのオプションに対応したsmbmountを配布されているサイトがありました。
こちらからsmbmount_2.2.8a-ja-1.0_arm.ipkをいただいてきてインストールし、次のようなコマンド引数でマウントしました。
sudo smbmount //julie/share /mnt/julie/
-o fmask=666,username=xxx,ip=xxx.xxx.xxx.xxx,
codepage=cp932,iocharset=utf8


結果、Sambaサーバ上の日本語ファイル名のファイルを、Zaurusのファイルマネージャで日本語表示出来るようになりました。



ちなみに、smbmountのオプションとして渡したiocharsetとcodepageは、Sambaのマニュアルには次のようにあります。
iocharset=<arg>
Linux 側のコードページ-文字コード変換 (NLS) で使用される文字コードを設定する。引数は iso8859-1 のようなキャラクタセットの名前でなくてはいけない。 (注: カーネル 2.4.0 以降のみサポートされる)


codepage=<arg>
サーバ側で使用される文字コードを指定する。 iocharset オプションを参照。例えば cp850 などである。 (注: カーネル 2.4.0 以降のみサポートされる)

私が行った設定の場合、iocharsetの説明中のLinuxとはZaurusを指し、codepageのサーバとはSambaサーバであるJULIE(Plamo Linux)を指します。

また、CP932はマイクロソフトのShift-JIS拡張らしいです。

2007/07/18

NFSについて調べる(サーバ側)

JFの「Linux NFS-HOWTO」を読んで、NFSについて調べてみたことのメモ。

まずはサーバ側のこと。

・NFS が動作しているか確認する
julie:~# rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 729 mountd
100005 1 tcp 732 mountd
100005 2 udp 729 mountd
100005 2 tcp 732 mountd
100005 3 udp 729 mountd
100005 3 tcp 732 mountd
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 udp 1026 nlockmgr
100021 3 udp 1026 nlockmgr
100021 4 udp 1026 nlockmgr
100021 1 tcp 1079 nlockmgr
100021 3 tcp 1079 nlockmgr
100021 4 tcp 1079 nlockmgr
900101 1 udp 834
900101 2 udp 834
900101 1 tcp 837
900101 2 tcp 837

また、rpcinfoコマンドと引数"-p"はマニュアルには次のようにあります。
rpcinfo は、 RPC サーバに対して RPC 呼び出しを行い、得られた情報を表示する。

-p
host の portmapper を検出し、そこに登録されている全ての RPC プログラムの一覧を表示する。 host が指定されていない場合、 hostname(1) で返される値がデフォルトになる。

うちのNFSサーバ(JULIE)ではversion 2〜4のNFSが動いているみたいです。

・/etc/exports をあとから変更する
nfsd に /etc/exports ファイルを読み直させるために"exportfs -ra"コマンドを実行する。

exportfsコマンドのマニュアルには次のようにあります。
exportfs コマンドは、現在 NFS でエクスポートしているファイルシステムのテーブルを管理するために使うコマンドである。このリストは /var/lib/nfs/xtab という名前のファイルに保存される。

また、オプション"r"と"a"は次のようにあります。
-a
全てのディレクトリをエクスポート・アンエクスポートする。

-r
全 てのディレクトリを再エクスポートする。 /var/lib/nfs/xtab を /etc/exportsと同期させる。 /etc/exports から削除されたエントリを /var/lib/nfs/xtab からも削除し、既に無効になったエントリをカーネルのエクスポートテーブルから削除する。


NFSについて調べる(クライアント側)」に続く。

2007/07/16

日本語文字化けをどうにかする その3

日本語文字化けをどうにかする その2」の続きです。
ReiserFSファイルシステムでの文字化けについてです。

なお、多分重要な点として「Vine Linux 4.1はEUC-JPがデフォルトになっているらしい」ということがあります。
$ echo $LANG ja_JP.eucJP


NFSサーバのPlamo Linux(ホスト名 JULIE)がマウントしているReiserFS領域をVine Linux(ホスト名 SALIE)でNFSマウントした際の文字化けをなんとかしたいと思います。

私が使用しているのはReiserFSですが、ext2やext3でも同じではないでしょうか。
多分。
JFSやXFSはどうかな?


SALIE(NFSクライアント)のKonquerorでは次のように文字化けしていました。
ひどいありさまです。

行った対策は次の通りです。
・保存されているファイル名・フォルダ名の文字コードがShift-JISであるので、EUC-JPに変更する。
・ファイル名・フォルダ名の変更にはconvmvというツールを使用する。

convmvはSALIE(NFSクライアント)にインストールしました。
Vine Linuxにはconvmvが見つからなかったため、Fedora-JPのサイトからconvmv-1.10-2.fc6.src.rpmをいただいて、それをrpm --rebuildしました。

convmvはNFSサーバとクライアントのどちらにインストールして大丈夫ですが、書き込み権限は必要かと思います。


変換する際のコマンドは次の通りです。
$ convmv -r -f sjis -t euc-jp * --notest
mv "ル@ル@ル~@/ル~@.mdi" "ル~@/資産設計(2) 戦術編 10 万円ではじめる方法.mdi"
mv "ル~@/ル~@.pdf" "ル~@/資産設計(2) 戦術編 10 万円ではじめる方法.pdf"

~以下略~



この結果、SALIE(NFSクライアント)のKonquerorで正常に表示できるようになりました。



日本語文字化けをどうにかする その4」に続く。