2015年6月30日火曜日

Blogger に表・テーブル を記述する方法。極限まで楽してある程度見栄えのよい表を作成したい

極限まで楽して、見栄えのよい表を作成したいがための作業メモ:最後は合理的に、簡便に。


もちろんOS問わない話です。MACでもWindowsでも基本的に同じ。

Linuxでグーグルの機能を使い、HTMLテーブルを作成するのなら、

  1. グーグルドライブ、APPSでスプレッドシート作成
  2. 編集する。(アドオンいれると多少高機能に)
  3. ODFでダウンロード、XL形式でも可。
  4. CALCで開く。 必要に応じて編集。
  5. CALC上で必要部をコピー
  6. ブラウザの編集投稿の画面にペイスト

これが一番楽で綺麗にできそう。時間も短い。

オンラインに保存しておく必要がなければ、実は、

CALCで作成、コピー、ペイスト


でもいい。ローカルなので作りやすい。結局1行で説明が済んだ。



ただ、この完成したテーブルをいじるのはやめたほうがいい。
直接タグをいじるなんて、苦行を超えていますね。
見通し悪いなんて騒ぎではない。色をつけたりセル統合したり、書式をいじっているともう大変です。人間が処理する世界ではありません。超単純なら別ですが。



作りなおして、コピペ。これが一番。漢は潔く。女の子もね。

※Calcとは、OpenOffice,LibreOfficeのスプレッドシート。表計算。エクセルみたいなものです。MS-Officeでも同じようにできるんでしょうね。たぶん。












2015年6月29日月曜日

Linux Mint 17.1 to 17.2 upgrade アップグレードしました。

MINT 17.1から17.2にアップグレードしています。

正規の手順のページがどこかにあるはずですが、とりあえずこれで適用しました。

参考ページは必ず参照してください。少しだけ違います。10分もかからなかったと思います。mint/ubuntu共に、jaistさんのミラーを定義しています。

リポジトリを書き換えます。


ターミナルで(CTRL+ALT+T) 。不安な場合は2つのファイルのバックアップを取得しておきましょう。


sudo apt-get update
sudo apt-get upgrade

sudo sed -i 's/rebecca/rafaela/' /etc/apt/sources.list
sudo sed -i 's/rebecca/rafaela/' /etc/apt/sources.list.d/official-package-repositories.list

sudo apt-get update
sudo apt-get upgrade
sudo apt-get -f install
sudo apt-get dist-upgrade
sudo apt-get -f install


sudo reboot 1回目のリブート


最新の推奨カーネルを導入します。


Install the latest recommended kernel を参考にして下さい。

具体的には、

mintupdate アップデートマネージャーを起動。
  1. 表示(V) Linuxカーネルを選ぶ。
  2. 推奨となっているカーネル。たぶん現時点では 3.16.0-38をマウスで選択。
  3. installボタンをクリック。



私は、もっと新しいカーネルを使っていますので適用しませんでした。一度にやってもいいのかもしれません。こういう作業は慎重なほうがいいのでおすすめはしません。

sudo reboot 2回めのリブートが必要です。



起動後に、バージョン確認。


ターミナルで。(CTRL+ALT+T)


cat /etc/*release*

DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.2
DISTRIB_CODENAME=rafaela
DISTRIB_DESCRIPTION="Linux Mint 17.2 Rafaela"
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.1
DISTRIB_CODENAME=rebecca
DISTRIB_DESCRIPTION="Linux Mint 17.1 Rebecca"
NAME="Ubuntu"
VERSION="14.04.2 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.2 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

これは基本的にテキストファイルなので、バージョンが確実にあがっているのかどうかの担保にはなりませんね。確率的にはだいじょうぶでしょうが。Rebeccaの文字列が残りますがこれはこれで正解のようです。気にしない。


リリースノート

http://www.linuxmint.com/rel_rafaela_cinnamon_whatsnew.php

参考ページ

http://mintguide.org/system/448-early-update-linux-mint-17-1-rebecca-to-linux-mint-17-2-rafaela.html




2015年6月17日水曜日

Vzエディターライクな、エディターの使い方 (2)

基本原則:EUC-JPなターミナル上で動かす

Vzエディターライクな、エディターの使い方 (1)NxEdit の続きです。

env LANG=ja_JP.EUC-JP な端末でないと日本語の文字列は正しく表示されない。いずれのターミナルでも同じ。gnome-terminal(ubuntu 14.04 mint17.1 mint17.2RC)については既に述べたので、rxvtの場合を説明する。


 rxvt をeuc-jp で起動する。そのためには、たとえば、gnome-terminal で以下のコマンドを発行する。既述のロケール設定は完了していると仮定。

env LANG=ja_JP.EUC-JP urxvt

あたらしいWindowが uxrvt で開くはずだ。 私は zsh。プロンプト文字列「»」としているので、この文字が「損」という漢字プロンプトに置き換わる(文字化けである)。が、環境が変わっていることが容易に確認できるのでそのままにしてある。

  • (便利:この1行のみのスクリプトを~/binに設置する。どこからでも、rxvtでEUC-JPな環境になる。また、既に述べたgnome-terminal でのオブジェクト化(アイコン)をrxvtにも適用すれば同じような環境ができあがる。実行文字列は以上の通り。env LANG=ja_JP.EUC-JP urxvt だ。)

このエディターの内部処理とUTF-8の関係


NxEditは、内部処理がEUC-JP。文字コードがEUC-JP形式テキストであればそのまま読み込める。JIS,SJIS形式であればコンバートして読み込む。UTF-8は?

utf-8については、一時しのぎなのかパッチを書いてくださった方がいたのでありがたく利用させていただいている。ちなみに配布ソースとバイナリには実は当初から適用済みでああった。気がついた方はいるだろうか。ソースをみないとわからない。(秘密にするつもりではなかった。自分もほとんど利用していない。euc-jpにコンバートしてから、書き戻す習慣が先にできたので、あまり気にしていなかったのだ)

使い方はいたってシンプルだ。

ne -u utf-8.txt


-u オプションをつけて起動する。(もちろん、env LANG=ja_JP.EUC-JP にしたターミナルでないと化けるので注意)。

動作的には汎用ライブラリである iconv でEUC-JPに変換されてUTF-8が読み書きできるようになる。UTF-8での内部処理になったわけではない。あくまで、EUC-JPな世界のツールであることにかわりはない。"セカイ"は、EUCのままである。
 ファイル破壊の可能性はここにもあるのかもしれないし、ないのかもしれない。euc-jpが適切に扱えない文字が混ざると最悪ファイルが壊れる可能性があるらしい。それが何なのかはよくわからない。文字化け"要員"として歴史的に有名なSJIS半角カナチームについては、オリジナルの段階でも対策済みである。ソースにあったと思う。










2015年6月14日日曜日

Vzエディターライクな、エディターの使い方 (1)NxEdit

GPLライセンスのエディター NxEdit を配布しています。ubuntu/mint 64bitに対応させました。起動は、mint 17.1、ubuntu 15.04(mate) 14.04.2 で確認しています。放置していたのでですが、はじめて具体の使い方を説明してみます。

◎制限事項と利用上の注意事項


ワイドキャラクターを扱えるフォーマットは、Shift_JIS(JISも) と EUC-JP です。
UTF-8は適切に扱えません。UTF-8はそのままでは使えません。だいじなことなので2回いいました。

別言すれば、アスキーファイルのみ編集できればいいのならそのまま使えばいいので、以下はほとんど必要がないくらいですが読んでください。だいじなのはあくまで日本語を使いたい場合の話です。

もうひとつだいじなことをいえば、スタッカブルなバッファの操作はとても気持ちいいということ。ALT+S で保存などのコマンドが設定できること。欲をいえば際限がありませんが、そのまま埋もれ消えてしまうのも残念なので、64bitバイナリ生成までは当方で実施しました。

本エディタは現状仕様でEUC-JPロケールで使います。ここだいじです。

UTF-8でなく、SJIS,EUCのファイルをどうぞ。


日本語を適切に扱うためにはSJIS(JISでも)かEUCのどちらかに変換する必要があります。
(ちなみに、VIMはUTF-8に変換して読み込んでいるようです)。

2015年の今、職業でITしていない日本人ユーザーにとって、Shift_JISかUTF-8エンコーディングのファイルさえ扱えれば、99.9%のニーズは満たせるでしょう。0.1%については考慮しません。


Linuxにおいては、日常的な保守作業、アスキー文字列だけの定義ファイル数文字修正などなら、そのまま使えばいいのではないかと思います。

前置きが長くなりましたが、簡単にいえば、Gnome系ターミナルなら、UTF-8で起動して、ターミナルのロケールをEUC-JPにして、このエディターを使いましょうということです。

Terminator になじみがある人はそれでロケールを変更して利用してもかまいません。好きなターミナルを使えばいいです。但しロケールの変更がめんどうだったりするとアレですね。保存が効かないのも困ります。

※とはいえ、品質にまったく担保はありません。ファイルが壊れることも
視野において、ご利用は慎重にお願いします。コンパイルしている本人ですら
十分なテストはしていません。自前でバックアップをとるようにして下さい。バグフィックスの予定はありません。パッチは大歓迎です。よろしくお願いします。

オリジナルの特徴

  • Vz エディタの主要な操作方法・機能を実装している
  • スタッカブルな文字削除アンドゥー
  • スタッカブルなブロックバッファー
  • カーソルの移動方向により二種類のブロックを使い分ける方向感応
  • なるべく視点が動かなくてすむカーソル位置保持
  • カーソルが行を離れるまで行を更新しない行編集
  • キーボードの操作を覚えさせるキーボードマクロ機能
  • ツインウィンドーのファイラーを装備
  • その時点の編集状態をそのまま保存するプロファイル機能
  • 動作が極めて軽快である
  • 漢字コードを自動判別する※(UTF-8時代以前の話)
  • シグナルなどを受けた場合、可能な限りプロファイルを保存終了する
  • 同じユーザーが複数の ne 使用時に、 既に開いているファイルを保護する
  • 環境変数 NE_TERM 及び TERM に合わせて独自の端末設定を行える

ドキュメントより抜粋しました。EUC時代に生まれたエディターです。


話は戻って、利用のためにはEUC-JPロケール環境も必要、次の手順を踏んで構築します。(15.04以降ではターミナルにロケール切り替えスイッチャーが搭載されていますので、ロケール作成も不要です。以下の大半は、14.04LTS/17.1ユーザーを対象にしています)

◆ja_JP.EUC-JPロケール ターミナル環境の構築


ロケールファイルを(なければ)作成する。一回のみコマンド発行。デフォルトではないはずです。15.04以降のgnome-terminal ではこの作業は不要です。メニューから切り替えてください。(今月末リリース予定のmint 17.2も14.04系なのです。17.02RCで確認)

sudo locale-gen ja_JP.EUC-JP

◆ターミナルをEUC-JPロケールで起動する。


◆その前に、新しいプロファイルを作成する。


ターミナルを起動し、編集、プロファイル、新規で作成します。

以下のコマンドと合せておいてください。EUC-JPにしておきましょう。


env LANG=ja_JP.EUC-JP gnome-terminal --disable-factory --profile=EUC-JP

プロファイルを切り替えて、日本語文字列のあるディレクトリで、lsしてみましょう。綺麗に文字化けしているはずです。それで正解です。utf-8で名前がついたファイルを見ているので、EUCというメガネからみると化けているように見えて正解です。色めがねというやつです。

ターミナルでEUC-JPプロファイルにした状態で、SJISなファイルを探して、ne ファイル名 としてみましょう。日本語が表示されていると思います。

◆汎用:便利に使ってみる。


うまくいくようなら、パネルやデスクトップにオブジェクト(アイコン)を作成します。

たとえば、こんなかんじのファイルを作ればいいのです。

まず、エディターで空ファイルを指定して開きます。

gedit ~/Desktop/NeX.desktop
以下の内容を貼り付けて保存。

----cut----
[Desktop Entry]
Name=NeX Editor Terminal
Comment=CJK Terminal plus
TryExec=gnome-terminal
Exec=env LANG=ja_JP.EUC-JP gnome-terminal --disable-factory --profile=EUC-JP
Icon=utilities-terminal
Type=Application
Categories=GNOME;GTK;Utility;TerminalEmulator;
StartupNotify=true
OnlyShowIn=GNOME;Unity;
Actions=New
X-Ubuntu-Gettext-Domain=gnome-terminal

[Desktop Action New]
Name=New Terminal
Exec=env VTE_CJK_WIDTH=1 gnome-terminal --disable-factory
OnlyShowIn=Unity
----cut----

デスクトップにどこかさみしげなオブジェクトができているので、クリック。
警告がでます。自分自身を信頼します。すると、起動可能なオブジェクトに変身します。
たぶん。

ここまで、15.04以降のユーザーは実質不要です。

コマンドラインでの操作


以後は、コマンドラインで、操作します。~/.ne 配下にカスタマイズファイルがあります。メッセージに関してはめんどうなので英語のまま使うのがおすすめです。

文字コード変換は、nkf コマンドが便利です。

日本語原稿.txt があります。UTF-8です。


nkf -g 日本語.txt
UTF-8
と返りました。

#SJISにします。
nkf -s --overwrite 日本語.txt
#読み込んで編集します。終了します。
ne 日本語.txt
#UTF-8に戻します。
nkf -s --overwrite 日本語.txt



gedit ~/bin/vz

#!/bin/dash
nkf -s --overwrite $1
ne $1
nkf -w --overwrite $1
exit 0
 

と3行ほどのバッチでいいのかも。コード判別して分岐すべきですが。


 
vz ファイル名
 
で使います。





入手先:

このブログ内で配布しています。ne nice editor と名前がかぶっているのでneを入れている方はご注意ください。アンイストールしておいたほうがいいかもしれません。最近も少し触ってコンパイルしなおしたので、gccのバージョンもあがっていますので、そのうちアップするかもしれません。

debをクリック。dpkgまかせで導入します。本ブログにあります。

http://poor-user.blogspot.jp/2015_03_01_archive.html

実際のバイナリは、Dropboxとグーグルドライブで配布しています。リンクを貼っていただける場合は、このページにしていただけたほうが嬉しいです。

https://dl.dropbox.com/u/6626165/ne_make_ok.zip ソースコード
https://dl.dropbox.com/u/6626165/nex-3.05-1-00-amd64.deb AMD64
https://dl.dropbox.com/u/6626165/ne0515_3.05-1_i386.deb i386

ubuntu14.04.2 15.04 、mint17.1 で導入、起動確認。

Google Drive
https://docs.google.com/folder/d/0B3dSQTF-eLPsVmctdV9kUVBnX1E/edit


ubuntuにインストールできますから、mintなどubuntu派生Distributionでも使えるかと(使えます)。.debをクリックして、 ソフトウェアセンター(またはDPKGツール)から導入してください。品質云々が警告として表示される場合もあります。やめることもできます。完走ソース をDirectoryごとアーカイブしています。
転んでも泣かないを念頭によろしくお願いします。とんでもないことが生じるかもしれません。実際、化けた状態で無理やり日本語入力しようとすると変になります。その結果ファイルの修正が必要になったりします。人によってはこれを壊れたというのかもしれません。また、使えないキーアサインがありますね。あれ、どうするんだろう?! とか、既知の問題だらけです。


Vzエディターライクな、エディターの使い方 (2) に続く。

おまけ

ターミナル利用の際には、env VTE_CJK_WIDTH=1 と併用するといいかも。あるいはLTSでない最新環境に乗り換える。

15.04搭載gnome-terminal ではロケール切り替えは圧倒的に楽になったが、「あいまいな文字幅」の文字表示が日本人としてはやはり納得できない。大半の日本人とっては曖昧ではなく固定幅として染み付いているのだけど。「曖昧」なのは国際的視野にたった場合なのでしょうね。


ロケール毎に文字幅が選択できれば解決するのだろうが、ここまで来ると伝統的不具合と考えたほうがいいのかもしれない。たとえば、◉◯。治るといいなぁ。^^;  ✪はまっとうに使えるようだが、あまり馴染みがない。


cf.
http://www.wheel.gr.jp/~dai/fonts/pcf_on_ubuntu.html

CJK Terminal :ワイドキャラクター文字幅の問題解決への糸口(当時)
https://gist.github.com/sgk/5991138

nkf コマンド
http://takuya-1st.hatenablog.jp/entry/20100511/1273585953 が整理されていてわかりやすいです。

2015年6月13日土曜日

Zip の憂鬱。(1)文字化け、時々コードページエラー。そして、解決した。


参考:マウスやコマンドライン・ターミナルでの操作


    などもおすすめです。

    Zip:文字化けと正しく向き合う。冗長な序論

    zipをLinux上にもってくると化けてしまう。――Windowsとのやりとり(なんと現代でもです)やDOS、OS/2全盛期(20年前です)のアーカイブでどうしても解凍時化けてしまうzip形式アーカイブファイルがあります。エラーのたまに解凍すらできない場合もあります。私の場合、それは東ヨーロッパ言語であったり、シフトJISであったりします。ロシア語でもそうですし、スペイン語のスペシャルキャラクターでも同様です。ギリシャ語も化けますね。詳細はわかりませんが、GBでも化けるコードページがあるようです。英語なのに。

    自分の場合は、シフトJISがらみです。Windows シフトJISがなぜかいまだに主流なので、そのせいですね。過去のShift_JISのしがらみに僕らは縛られています。日本政府はシフトJIS撲滅に動き、ユニコードへの道を適切に開くべきです。ローカル過ぎる文字コードを利用しつづけるのは「いかがなものか」なのです。技術論なんてどうでもいいのです。

    さて、ターミナルエミュレータで処理できればいいのですが、左手を怪我している時はキーボードなしで操作したい。だらだら操作している時はGUIアプリで要するに処理したいわけです。本稿はいきなりGUI操作、そこまでは書きません。ターミナルから当該処理をすこしづつ改善していった自分の経緯を記録したいからです。


    さて、あと何十年たてば、このくだらない悲しみから、逃れることができるでしょうか。


    (補足)
    • ネットで流通しているファイル形式で忘れてならない形式にRARがあります。rar は優れていて、Windows下でシフトJISファイル名でパッキングしても、LinuxやMAC OS X(たぶん)で化けることはありません。ファイル名コードページの格納のことを考えているからだと思います。つまり、zipさえ対策すれば事実上アーカイバーの文字化けに悩むことから日本人Linuxユーザーは開放されることになります。
    • 逆の状況はどうなのか? と疑問を持つ人もいるでしょう。つまり、UTF-8ファイル名を格納したアーカイブをWindows7にメール送付なりした場合です。zipはWindows標準サポートです。もちろん化けます。化けますが化けません。先日検索していたら、マイクロソフトから公式なパッチが出ていました。それがあたっていれば、UTF-8 ZIPの文字化けはWindowsでは生じません。その上、Windowsの日本のユーザーの多く(特に個人ユーザー)は、ほぼ間違いなく(よりどりみどりの)サードパーティのアーカイバーを利用しているはずで、それらは考えられているのか? 文字化けしません(ちょっと試した範囲ですが)。きっとOS標準のバグだったものに気がついていない人が多いと思います。検索結果からそう判断しました。MACの人も同じ悩みはもっています。
    それ find で!! コマンド1つで、全圧縮形式を解凍する。混沌を求めて。unar unp

    トラディショナルにコマンドラインで攻めてみる。

    unzip コードページ指定

    unzip -Ocp932 file.zip


    たとえば、zshなら、~/.zshrc に

    alias unzipj="unzip -Oshiftjis"
    #alias unzip932="unar $1"

    とでもしておくと、Windowsユーザーが作ったシフトJISなZIPアーカイブが、
    unzipj というコマンドで解凍できます。-lつけるとリスト表示。

    2行目は後述unarです。実はこちらのほうがよく動くのでおすすめだったりします。MAC由来のようです。

    コマンドライン解凍。コードページを指定しているだけです。(cp932としたほうがいい気がします。根拠はありません。このツールでは等価なのかもしれない)

    汎用解凍兵器 unar


    多様な圧縮フォーマットに対応した汎用兵器であるunar(4文字です。not unrar) OS Xの世界の発祥っぽい。

    unar file.zip

    sudo apt-get install unar
    (導入。lsar も同時にインストールされます)

    とても使い方が簡単です。オプションなしでほぼ希望通りです。いまんとこ高精度でコードページを自動判別しています。unrarではありません。だいじなことなので2回言いました。

     2015年6月13日現在、1.8.1が最新です。さきほどコンパイルしてみたら、なぜか (unzipコードページ指定でも化けているせいで解凍できない)不具合zipが綺麗に処理できるようになりました。

    そのうち unar lsar 1.8.1をストレージ倉庫においておきます。

    アメリカ人が好きそうな雑食性万能ツール upnunp

    間違えて長いことupn と記述していました。

    sudo apt-get install unp

    unp file.zip

    sudo apt-get install unp
    (導入)

    ヘルプ
    unp --help

    これも便利なスクリプトです。万能解凍スクリプトです。適切なバイナリが導入されれていれば(最近のLinuxディストリビューションではそうですね)、そのまま使えます。なんでも食います。専用スパナでなくモンキーレンチというイメージです。


    僕の場合1行書き換えて使うと便利なunp。どんなアーカイブフォーマットもこのスクリプトに食わせてやればだいじょうぶというコマンドです。unarはバイナリですが、こちらはPerlで書かれた正統?なツールのフロントエンドスクリプトです。

    更新  (unzipのバージョンを確認) 

    unzipは、-Oオプションが有効なものであれば使えます。 ubuntuやmintなどの日本語チーム推奨パッケージをいれていれば自動的にはいっていると思います。以下のヘルプが見つかればOKです。目視でもよいですが。


    次の行をターミナルに切り貼り。Enter。
     
    unzip | grep -P 'O CHARSET.*?DOS.*?OS\/2'

    -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives
    という表示がヘルプに見つかれば対応バージョンです。

    以上で判別できたのは昔の話で、最近では日本語化をほどこさなくても、当該オプションのあるunzipが導入されている気がします。日本チームの方々が作成していたいだいているのは、たとえば、

    unzip_6.0-10~5.52~ja2_amd64.deb 

    です。差異については調べていません。jaリポジトリを有効にするとanthyなどが仲間になりたがります。当方では、それを避けたいので有効にしなくなりました。


    第1回まとめ


    ここまでで、ターミナルでのシフトJIS ZIPの文字化けが正しく扱えるようになりました。1日1個程度のやりとりならこれで困ることはないでしょうね。

    次回は、以上を踏まえ「nemo/caja/nautilusの右クリックに組み込みたい」及び「さらにGUIで安直に操作してみたいよね」です。

    え?!  なんですって。
    「WINEでいいんじゃね?」
    はい、解散、解散。

    追記 GUIツール(実質の第2回)

    14.04.2 + Cinnamon(Nightly build) で、Zip文字化けを確認するためのテストファイルを探す。
    http://www.hosino-kanata.com/kakusi/bjy/bjy.zip
    (ブラックジャックによろしく)。手持ちに文字化けするZipファイルがあればそれで確認してみればよいです。これはファイルが300MBと大きめです。


    • アーカイブマネージャ、文字化け。☓
    • Engrampa書庫マネージャ、文字化け。☓
    • Xarchiver 文字化けしない。 ○

    (騙されたと思って)Xarchiverを入れてみるといいかもしれません。少し動作が鈍いですが、文字化けせずに日本語ファイル名が解凍できています。誤報、下部に説明。 


    ▲上から、Xarchiver , アーカイブマネージャ、Engrampa書庫マネージャ


    Wineの場合 - Explzh for Windows 日本人でWINEなら個人的オススメ、使いやすいです。生Windowsでもオススメ。


    (騙されたと思ってと書いたのは、別の区画からたちあげたバージョンの違うubuntuではうまくいかないから。それと一時Xarchiverの ソースをいじってコンパイルしたのを入れて文字化けが治ったことがあって、ただし動作が変になったのでレストアしたはずだったりとか、よく覚えないことが ありまして、……ちゃんと確認していません。)
    追記:やっぱり特定環境でしか再現しないので、自分であてたパッチでコンパイルした結果、コードページ処理が有効になっていますね。ソースは整理していないので、どれがどれやらわかりません。コマンドで解凍するほうが楽なので、長期放置。

    tt(The Trusty Tahr)はこの0.5.2で、vv,ww,xxでは、0.5.4がインストールされると思います。 https://launchpad.net/ubuntu/+source/xarchiver







    2015年6月8日月曜日

    convmv ファイル名の文字コードを変換する。つまり、リネーム。

    convmvで shift_jisから utf8 にファイル名文字コードを変えることができる。相互にも可能である。便利である。

    ubuntu系だと、
    sudo apt-get install convmv

    でインストールできる。

    さて、ひとつ今日気がついたことがある。

    ファイルシステムが違うと動作が違うというか、NTFS(fuse)上では目論見通りに動作しないのだ。ext4上では期待どおり動作している。


    コマンドはこれ。前後を入れ替えると逆に変換してくれる。SIJSで名前がついたfile.txt をSJISからUTF-8にするコマンド例。

    % convmv -f shift_jis -t utf8 file.ext
    これで確認して、OKなら、--notest を末尾に加えて、実行(最終リネーム)という手順が普通だ。

    あえて文字化け?で書き込むために、まずUTF-8エンコードされたファイル名のファイルを用意する。


    touch "【山の声〜ある登山者の追想】後編.mp3"
    touch "【山の声〜ある登山者の追想】解説.mp3"

    2つのファイルができました。ゼロバイトファイルです。
    これで一回文字化けさせるために、UTF-8からS_JISに変更します……
    コマンド略。……
    (そして、以下の、◆◆◆?◆は、実際の文字化けイメージ。Shift_JISとしては正しいです。ファイルが壊れているわけではありません)


    % convmv -f shift_jis -t utf8 *.mp3 --notest

    mv "./◆◆◆?◆.mp3" "./【山の声〜ある登山者の追想】解説.mp3"
    mv "./◆◆◆?◆.mp3" "./【山の声〜ある登山者の追想】後編.mp3"
    Ready!

    これで戻りました。但し、冒頭で記したように、fuseなNTFS上ではうまくいかないようです。なぜだ。fuseで使ってきて理解不能でした。

    2015年6月2日火曜日

    スクリプト:カレントディレクトリの拡張子一覧を抽出、表示するスクリプト

    使い捨てのワンライナーですが、実際に使った上で、再利用も悪くないなというモノをメモしていきます。都度書くより速いです。

    カレントディレクトリ配下ディレクトリ内の拡張子一覧を抽出、表示(以下全部というパターン)

    なんとなくどんなファイル(種別)が配下にあるのか、知りたくなった場合に使います。おおざっぱです。

    結果をみると置いておく気のなかったファイルがあることがわかったりします。画像はjpgで統一しているはずが、gifが混じっていたら、なんか変!ってことになります。music以下にmp3が混じっていたら、CD-RIPしなおしてflacにする必要(ロスレス化統一中につきmp3が残っていると困る)があることに気づくとか。そんなお気軽な用途にどうぞ。


    locateやそのフロントエンドでやっているとらちがあかないと思う気短な諸兄に。findにしたので少し時間がかかります。

    #!/bin/bash
    # 名前 lsextr.sh で ~/bin に保存
    # カレントディレクトリ配下ディレクトリ内の拡張子一覧を抽出、表示
    # 以下の文字はないものとする。(空白、全角、英数字以外を含まない)
    # 英字は小文字のみです。
    # 特徴:下手にシェル関数使ったスクリプトはコケるがこれは23,544個ぐらいではこけない。だから作った。
    #横一覧  下に改訂版
    ls -R | perl -pe 's/^.*\.//' | grep -v : | grep -v " " |sort | uniq | grep -P '^[0-9a-z][0-9a-z][0-9a-z]' | perl -pe 's/\n/\t/'  

    #縦に表示したい場合は以下を有効
    ls -R | perl -pe 's/^.*\.//' | grep -v : | grep -v " " |sort | uniq | grep -P '^[0-9a-z][0-9a-z][0-9a-z]' | perl -pe 's/\n/\n/'  

    #横一覧改訂版 こっちのほうがより正確のはず
    find . -type f | perl -pe 's|^.*\.||' | sort | uniq | grep -P '^[0-9a-z][0-9a-z][0-9a-z]' | perl -pe 's/\n/\t/'

    #縦一覧改訂版 こっちのほうがより正確のはず
    find . -type f | perl -pe 's|^.*\.||' | sort | uniq | grep -P '^[0-9a-z][0-9a-z][0-9a-z]' | perl -pe 's/\n/\n/'

    タブで横に整列させるか、改行で一列に並べるかだけの違いです。 

    #拡張子の出現回数をカウント(またしてもだいたい)
    find . -type f -name \*.\* | perl -pe 's|^(.*)(\.)(.*?)|$2$3|' | grep -v " " | perl -ne "print if ( /[a-z0-9].*?/ )" | sort |uniq -c | sort



    ※結果はエンターとほぼ同時に出力されます。簡単なことしかしてないので速いです。キャッシュに入っているんだと思いますが。そこはそれ。キャッシュに入っていない状態だと少し時間がかかります。無駄な処理がありますが、これをひな形に自分が書き換えるために残してあります。



    #!/bin/bash

    #変形版
    #
    #拡張子の出現回数をカウント(またしてもだいたい)。
    #5文字以内の拡張子
    #「~付」バックアップファイル除外


    #出現回数順
    find . -type f -name \*.\* | perl -pe 's|^(.*)(\.)(.*?)|$2$3|' | grep -v " " | perl -ne "print if ( /[a-z0-9].*?/ )" | cut -b 1-6 |grep -v "~"| sort |uniq -c | sort

    #アルファベット順
    find . -type f -name \*.\* | perl -pe 's|^(.*)(\.)(.*?)|$2$3|' | grep -v " " | perl -ne "print if ( /[a-z0-9].*?/ )" | cut -b 1-6 |grep -v "~"| sort |uniq
     




    カレントディレクトリの拡張子一覧を抽出、表示

    #!/bin/bash
    # 名前 lsext.sh で ~/bin に保存
    #カレントディレクトリの拡張子一覧を抽出、表示
    # 以下の文字はないものとする。空白、全角、英数字を含まないとか。
    #(大文字拡張子は、事前にリネームしておきましょう。美しくないので)
    #
    #横一覧
    ls *.* | perl -pe 's/^.*\.//' | grep -v : | grep -v " " |sort | uniq | grep -P '^[0-9a-z][0-9a-z][0-9a-z]' | perl -pe 's/\n/\t/'

    #縦に表示したい場合は以下を有効
    ls *.* | perl -pe 's/^.*\.//' | grep -v : | grep -v " " |sort | uniq | grep -P '^[0-9a-z][0-9a-z][0-9a-z]' | perl -pe 's/\n/\n/'
     

    大文字拡張子の一括変換については後日。sed y/A-Z/a-z/  というわけじゃなくて、このスクリプトでチェックするなら、「 sed y/A-Z/a-z/ 」パイプを真ん中あたりに挿入して下さい。チェックするために小文字にするだけで、実ファイルはもちろん変わりません。大雑把な傾向をつかむ意図なのとWindowsからファイルはもってこないので、99%拡張子大文字のファイルは当方の場合は存在しないので気にしていないだけです。