0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

指定ファイルをMarkdownのpre記法で装飾し、クリップボードにコピーするシェルスクリプト

Last updated at Posted at 2021-08-11

実行内容

次の 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 に貼り付ける

 

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?