実行内容
次の 1〜3 をするシェルスクリプト.
Qiita への記事転載を楽にすることが目的である.
ただし、当スクリプトは (私的な) 別用途向けバッチの流用なので、
Qiita の書式にどの程度まで適合するかは不明である.
1. 指定したディレクトリ以下 (.git/ や .svn/ は除外) にあるファイルを抽出する
2. 上記 1 作成したコード群を(UTF-8で) Markdown の pre記法で修飾する
3. X Window システムのクリップボードにコピーする
手順
1. nkf と xclip をインストールしておくこと
手順は省略する.
また、X Window が使える環境であること.
2. $HOME/bin/toQ を作成する
#!/bin/bash
# 見出しの大きさ. 環境変数 SXHIND で 1〜5 まで調整可能.
IDT="###"
echo "$SXHIND" | grep -q -w "1" && {
IDT="#"
}
echo "$SXHIND" | grep -q -w "2" && {
IDT="##"
}
echo "$SXHIND" | grep -q -w "3" && {
IDT="###"
}
echo "$SXHIND" | grep -q -w "4" && {
IDT="####"
}
echo "$SXHIND" | grep -q -w "5" && {
IDT="#####"
}
for f in $@
do
MARK=
test -f $f && {
# ファイル名に拡張子を含むだろう場合
echo $f | grep -q -F '.' && {
FTYPE=${f##*.}
MB=""
ME='```'
case "$FTYPE" in
py) MB='```python' ;;
sh) MB='```bash' ;;
bat) MB='```bash' ;;
rb) MB='```ruby' ;;
ps1) MB='```powershell';;
js) MB='```javascript';;
c) MB='```c' ;;
cpp) MB='```cpp' ;;
go) MB='```c' ;;
html) MB='```html' ;;
yaml) MB='```yaml' ;;
yml) MB='```yaml' ;;
"") MB='```bash' ;;
*) MB='```bash' ;;
esac
} || {
# ファイル名に拡張子が存在しなければ、file コマンドによるファイル種別から推測する
FTYPE=`file -ib $f`
MB=""
ME='```'
case "$FTYPE" in
*x-python*) MB='```python' ;;
*x-shellscript*) MB='```bash' ;;
*x-ruby*) MB='```ruby' ;;
*x-msdos-batch*) MB='```bash' ;;
"") MB='```bash' ;;
*) MB='```bash' ;;
esac
}
# UTF-8 で表示する
nkf -w <<EOL
$IDT $f
$MB
`cat $f`
$ME
EOL
}
done
3. $HOME/bin/toQ を実行する
次の要領でファイルを指定する.
ファイルを個別指定する場合
$ toQ ./a.py ./sub/b.py |xclip
ファイル全選択する場合
$ toQ $( find . -type f )|xclip
ファイル全選択(応用)
カレント以下のファイルを pre記法にするが、.git/ と .svn/ は除外する.
(引数はトリッキーなので意味についてはこちらを参照. 私自身このような複雑な記法は普段は使わない)
$ toQ $( echo . | sed 's/\s\+/\n/g' | xargs -I@ find @ \( -type d 2>/dev/null -and \( -name '' -o -name '.git' -o -name '.svn' \) -prune \) -or \( -type d -and -print \) | xargs -I@ find @ -maxdepth 1 -type f ) | xclip
4. Qiita に貼り付ける
以上