LoginSignup
15
17

More than 5 years have passed since last update.

コマンドラインから記事を作成する方法

Posted at

はじめに

コマンドラインからブログでもQiitaでもなんでも良いですが、何かの文章をポストするっていうのは、意外と簡単なので、そういった仕組みづくりというのをやっておくと便利だと思います。

何か調べものがある時、わざわざブラウザを開いて、コピーして、エディタに、メモしてという手順は、CLIないしは、CUIユーザーとしては非常に面倒なことの一つだったりします。今回は、そんな時に役立つ個人的なTipsを幾つか紹介したいと思います。

ちなみに、CLI(コマンドラインユーザーインターフェース)とCUI(キャラクタユーザーインターフェース)と言うのは、ここではほぼ同じ意味で使用しています。つまり、黒い画面ってことでイメージしてもらえればいいわけですが、具体的には、端末(ターミナル、Terminal)でやるってことですね。私は、CUIって言うことが多いかなあ。GUIと対で使えるので。タイトルはCLIを使ってますが。

Webから文章を抜き出そう

Webから欲しい文章を取ってくるには、html2textというPython製のツールが非常に便利です。これは、HTMLをテキスト形式にして表示してくれるものです。したがって、wget, curlの出力をそのまま使える形にできますので、お手軽なのです。

$ pip install html2text

$ curl -sL http://qiita.com/syui/items/ab6a11aa57df8590d645 | html2text

文章を抜き出すには、pecoを使います。golang製のツールですが、欲しい出力を選択できます。

$ go get github.com/peco/peco/cmd/peco

$ curl -sL http://qiita.com/syui/items/ab6a11aa57df8590d645 | html2text | peco

ちなみに、pecoとかhtml2textは非常に使いやすいものなので、global aliasなどを設定しておくといいかもしれません。

~/.zshrc
alias -g P='|peco'
alias -g H='|html2text'
alias -g J='|jq'

これで、以下のようにすると使えます。

# ls -A | peco
$ ls -A P

必要な形式にして出力しよう

JSONでメモをとっている人などは、jqが便利です。個人的には、Qiitaのポストとか、ブログへのポストもすべて、JSONでとったメモを自動的に所定の形式にして作ったり、ポストしたりしているわけですが、例えば、こんな感じで記事を作り上げていきます。

$ sudo pacman -S jq

jsonjqは慣れれば簡単ですが、慣れないと最初は、なかなか使いにくいと思います。一応、参考になるコマンドを幾つか紹介。こんな感じで値を取り出せます。

hoge.json
[
  {
  "title": "json",
  "tags": [ { "name": "json" }, { "name":"text"}, { "name":"golang"}, { "name":"html"}, { "name":"python"} ],
  "body": "hello world",
  "coediting": false,
  "gist": false,
  "private": false,
  "tweet": false
  }
]
# 全体の値を取り出す
$ cat hoge.json | jq .

# 変換しないで値を取り出す、括弧"を取り除く
$ cat hoge.json | jq -r .

# 括弧[]内をとりあえず取り出す
$ cat hoge.json | jq '.[]'

# 括弧{}の順番で番号指定して取り出す
$ cat hoge.json | jq '.[0]'

# 括弧{}内のtitleの値を指定して取り出す
$ cat hoge.json | jq '.[].title'
$ cat hoge.json | jq '.[]|.title'

# 括弧[]内の値だけ括弧"を除き、すべて取り出す
$ cat hoge.json | jq -r '.[]|.[]'

# tagsをすべて取り出す
$ cat hoge.json | jq '.[].tags|.[].name'

# tagsの個数を指定して取り出す
$ cat hoge.json | jq '.[].tags|.[1,2].name'

検索して必要な部分を抜き出す

時に検索して必要な文章を取り出したい時があります。そんな時は以下のようなスクリプトを作っておくと便利です。

$ ./search.sh arch linux jsonという感じで使います。

search.sh
#!/bin/zsh

startpage="https://startpage.com/do/search?q="

case $1 in
    *)
        if [ ! $# = 0 ];then
            keyword=${startpage}`echo "${@}"|tr ' ' '+'`
            echo $keyword
            one_step=`curl -sL ${keyword} | html2text | grep '###' | peco |cut -d"(" -f2 | cut -d")" -f1`
            two_step=`curl -sL ${one_step} | html2text | peco`
            case $OSTYPE in
                darwin*)
                    echo "$two_step"| pbcopy && pbpaste
                ;;
                linux*)
                    echo "$two_step"| xclip -i -sel c && xclip -o -sel c
                ;;
            esac
        else
            echo '
            g <hoge> : google.com/search?q=<hoge>
            '
        fi
        ;;
    h|-h|-[hH]elp|--[hH]elp)
        echo '
        g <hoge> : google.com/search?q=<hoge>
        '
        ;;
esac

'

15
17
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
15
17