2011年3月30日 星期三

Note for GPG

Reference:
http://wiki.debian.org.tw/GnuPG
(Ps:加入並修正 -o outputfile 的做法)

基本 GPG Use Case


信任簽證

  • 指紋的後8碼就是 KeyId
  • gpg --recv-keys ID
  • gpg --edit ID
    • fpr
    • sign
    • save
  • gpg --send-keys ID

管理 Private keys

  • 列出 gpg --list-secret-keys
  • 新增 gpg --gen-key && gpg --send-keys [KeyId]
  • 刪除 gpg --gen-revoke [KeyId] && gpg --send-keys [KeyId] && gpg --delete-secret-keys [KeyId]
  • 匯出 cp ~/.gnupg/secring.gpg [FileName]
  • 匯入 gpg --import < [FileName || secring.gpg ]
  • 備份撤消聲明 gpg --output [FileName] --gen-revoke [KeyId||Name] 將文字印出來存放著。

管理 Public Keys

  • 列出 gpg --list-keys
  • 新增 gpg --import < [KeyFile || pubring.gpg ]
  • 新增 gpg --recv-keys [KeyId]
  • 刪除 gpg --delete-keys [KeyIds]
  • 匯出 gpg --export > [FileName]
    • gpg --armor --export KeyID > PublicKey.asc
  • 匯入 gpg --import < [FileName || pubring.gpg ]
  • 更新 gpg --refresh-keys

簽名/驗證

  • 明文簽名 gpg --clearsign  [-o OutputFileName] [FileName]
  • 明文驗證 gpg --verify [FileName.asc]
  • 檔案簽名 gpg --sign --detach-sign [-o OutputFileName]  [FileName]
  • 檔案驗證 gpg --verify [FileName.gpg] [FileName]

加密/解密

  • 加密 gpg --encrypt --recipient [KeyId] [-o OutputFileName] [FileName]
  • 解密 gpg --decrypt [-o OutputFileName] [FileName.gpg] 

增加 UID

  • gpg --edit-key [KeyId]
    • 指令> adduid
    • ... # 依照指示填入姓名、郵件地址、註解
    • 指令> save
  • gpg --send-keys [KeyId]

2011年3月24日 星期四

Windows batch script 雜記

  • 擴充變數語法
  •  網芳掛載
  • 網路印表機掛載

  • 擴充變數語法
Reference: 
http://fan.renren.it/a/caozuoxitong/Windows/20101021/53524.html
http://www.911cd.net/forums/lofiversion/index.php/t3730.html


舉例 比如你有個批處理a.batD:\qq文件夾下
a.bat
內容為

cd /d %~dp0
在這裡

cd /d %~dp0
的意思就是
cd /d d:\qq
%0
代表批處理本身
d:\qq\a.bat
~dp
是變量擴充

d
既是擴充到分區號
d:
p
就是擴充到路徑
\qq
dp
就是擴充到分區號路徑 d:\qq

擴充變量語法詳解:
:: 選項語法:
:: ~I -
刪除任何引號("),擴充
%I
:: %~fI -
%I 擴充到一個完全合格的路徑名

:: %~dI -
僅將 %I 擴充到一個驅動器號

:: %~pI -
僅將 %I 擴充到一個路徑

:: %~nI -
僅將 %I 擴充到一個文件名

:: %~xI -
僅將 %I 擴充到一個文件擴展名

:: %~sI -
擴充的路徑只含有短名

:: %~aI -
%I 擴充到文件的文件屬性

:: %~tI -
%I 擴充到文件的日期/時間

:: %~zI -
%I 擴充到文件的大小

:: %~$PATH:I -
查找列在路徑環境變量的目錄,並將 %I 擴充

::
到找到的第一個完全合格的名稱。如果環境變量名

::
未被定義,或者沒有找到文件,此組合鍵會擴充到

::
空字符串

::
可以組合修飾符來得到多重結果
:
:: %~dpI -
僅將 %I 擴充到一個驅動器號和路徑

:: %~nxI -
僅將 %I 擴充到一個文件名和擴展名

:: %~fsI -
僅將 %I 擴充到一個帶有短名的完整路徑名

:: %~dp$PATH:i -
查找列在路徑環境變量的目錄,並將 %I 擴充

::
到找到的第一個驅動器號和路徑。

:: %~ftzaI -
%I 擴充到類似輸出線路的 DIR 

  •  網芳掛載
 @ECHO OFF
net use v: "\\$ip\share3" "password" /user:[pcid]\[userid] /persistent:no

  • 網路印表機掛載
net use LPT3: "\\printer\HP LJ 5100 (R254) PCL 6" "password" /user:[AD-ID]\[user name for AD] /persistent:no

2011年3月15日 星期二

解決 tree 指令無法顯示中文問題

預設安裝的 tree 套件無法正確顯示中文,如:
 ~/tmp$ tree
.
`-- \346\211\213\345\206\212
    `-- shell \346\267\261\345\272\246\346\225\231\345\255\270.pdf

1 directory, 1 file
需要手動更改:
  1. 至 http://mama.indstate.edu/users/ice/tree/下載最新版本,以 1.5.3 為例
  2. $ wget http://mama.indstate.edu/users/ice/tree/src/tree-1.5.3.tgz
  3. 解開並重新編譯、安裝
  4. $ tar xzf tree-1.5.3.tgz; cd tree-1.5.3/ ; make ; sudo make install
確認蓋掉 /usr/bin/tree
Done.

再試一次
~/tmp$ tree
.
`-- 手冊
    `-- shell 深度教學.pdf

1 directory, 1 file
中文目錄與檔名都可正確顯示

常見繁簡文互換或中文編碼問題

編碼轉換(不轉換繁、簡文)
  • 改變將路徑下的目錄與檔案名稱的編碼方式
*  需安裝 convmv
* 先測試看看:從 big5 編碼轉成 utf8
convmv -f big5 -t utf8 -r --nosmart folder_name
* 強制轉換
convmv -f big5 -t utf8 -r --nosmart --notest folder_name

繁、簡體轉換
  • 轉換檔案內容:利用 iconv 進行繁、簡互轉
* 先考慮簡單的情況:
將 gb2312 編碼的簡體轉為 big5 編碼的繁體
iconv sc-gb2312.txt -f gb2312 -t big5 -o output.txt
若需要再把編碼轉為 utf8 則再換一次
iconv sc-gb2312.txt -f gb2312 -t big5 | iconv -f big5 -t utf8   -o output.txt
big5 繁體中文要轉成 utf8 編碼的繁體中文
cat tc-big5.txt | iconv -f big5 -t utf8 > output.txt
但比較麻煩的不知道編碼的格式為何。如此,可以用 autob5, autogb (需要安裝 zh-autoconvert ) 來協助,需要再轉換 utf8 編碼再 pipe 給 iconv 做,如下:
cat sc-unknow.txt | autob5 | iconv -f big5 -t utf8 >  output.txt
批次轉換
for i in `ls *.chs.srt`; do cat $i | autob5 | iconv -f big5 -t utf8 >  $i.cht-srt ; done

反之亦然,如:
cat tc-big5.txt | autogb | iconv -f gbk -t utf8 > output.txt

* 複雜的情況:
文件內容為 utf8 編碼之簡體,要轉換成 utf8 繁體,則需要中介編碼,如下
cat sc-utf8.txt | iconv -f utf8 -t gb2312  | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8 output.txt

下面則是轉換都是 utf8 的方式繁、簡檔名
  • utf8簡體檔名轉成utf8繁體檔名
* 需安裝 zh-autoconvert
* 先轉換目錄名稱
find . -type d -print0 | while read -d $'\0' file  ;  do  mv "$file" "$(echo $file | autob5 --input utf8 | iconv -f big5 -t utf8)" ; done
* 再轉換檔案名稱
find . -print0 | while read -d $'\0' file ; do  mv "$file" "$(echo $file | autob5 --input utf8 | iconv -f big5 -t utf8)" ; done
PS:以上用法可避免檔案或目錄名稱中有空白

Ceasar's Photo

www.flickr.com