tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【vim】スワップファイル(.swp)について - 出さなくする/出力場所を設定する

はじめに

スワップファイル(.swpとか)って普段あまり気になりませんが、
PCやターミナルが不意に強制終了などするとそのまま.swpが残ってしまうときありますよね。

消すにもいろんなディレクトリにちらばって残っていたり
探すのもめんどくさいしでいっその事でなきゃいいのにとも思いますが、
クラッシュ前の変更を記録してくれたりするので出さなくするにもなーと思います。

そんなときのメモ。
内容自体は今更な内容ですw

アジェンダ

  1. スワップファイル(.swp)とは
  2. スワップファイル(.swp)できたとき
  3. スワップファイル(.swp)を出さなくする設定
  4. スワップファイル(.swp)の出力場所を設定する
  5. スワップファイル(.swp)の作り方

1. スワップファイル(.swp)とは

まずは.swpファイルについて軽く触れておきます。

swpファイルはスワップファイルと呼ばれています。
スワップファイルはアプリケーションのクラッシュに備えて、 vimエディタでの編集開始時に作成され、編集後に削除される編集情報の記録ファイルです。
スワップファイルを使用していれば、vimエディタがシステムエラーで強制終了しても、 保存前のデータが失われずに済みことがあります。

2. スワップファイル(.swp)できたとき

.swpがあるファイルをvimで開くとこんな表示がされます。

E325: ATTENTION
Found a swap file by the name ".swp_sample.txt.swp"
          owned by: hoge   dated: Mon Jan 23 12:09:39 2017
         file name: ~hoge/swp/swp_sample.txt
          modified: no
         user name: hoge   host name: O-04850-MAC.local
        process ID: 8563
While opening file "swp_sample.txt"
             dated: Mon Jan 23 12:07:24 2017

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r swp_sample.txt"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".swp_sample.txt.swp"
    to avoid this message.

Swap file ".swp_sample.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 

書いてある通りですが、それぞのキーを押す事で次の動作を決める事ができます。

キー オプション名 説明
O 読み込み専用 読み込み専用でファイルを開く
E 編集 .swpを無視してオリジナルのファイルに対して編集する。スワップファイルは新たに別名で作成される
R 復活 オリジナルのファイルと.swpファイルを使用してクラッシュ前の状態を復元する
D 削除 swapファイルを削除してオリジナルのファイルの編集をする
Q 終了 ファイルを開くのをやめる
A 中止 現在作業中の処理を停止する。連続でファイルを開いている場合などに中止する

3. スワップファイル(.swp)を出さなくする設定

スワップファイル(.swp)を出さなくするには
~/.vimrc に設定を足します。

set noswapfile

有効にする(出すとき)はこっちを設定します。

set swapfile

4. スワップファイル(.swp)の出力場所を設定する

出力する場所を変更するために
まずはmkdir ~/.vim/tmp.swpをおくディレクトリを作成してから
以下の設定を~/.vimrcに追加します。

set directory=~/.vim/tmp

5. スワップファイル(.swp)の作り方

出さなくするにせよ、出力場所を変えるにせよ動作確認がしたいものです。
.swpファイルは強制終了時などに残りますが、vimを開いた状態でターミナルのxボタン閉じるをしても残らなかったりします。

なのでkillすることで強制終了する事で.swpを残します。

# vimで適当なファイルを開いたまま別のターミナルでls
$ ls -l
total 32
drwxr-xr-x  4 hoge  hoge    136  1 24 23:55 .
drwxr-xr-x  4 hoge  hoge    136  1 24 17:27 ..
-rw-r--r--  1 hoge  hoge  12288  1 24 23:55 .swp_sample.txt.swp
-rw-r--r--  1 hoge  hoge      9  1 23 12:07 swp_sample.txt

# killするプロセスを知る
$ pstree
~ 省略 ~ 
 | |-+= 00592 hoge /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_45067
 | | |-+= 27293 root login -pfl hoge /bin/bash -c exec -la bash /bin/bash
 | | | \-+= 27294 hoge -bash
 | | |   \--= 34214 hoge vim swp_sample.txt
~ 省略 ~

# この場合は`08663`をkill
$ kill -9 34214

# vimを開いているターミナルをプロセスが終了しているはず
# と、同時に.swpも残りっぱなしになる

おわり

今更な内容でも書く事を大事にしようと思います\(^o^)/

【vim】ジャンプする前のカーソルの位置に戻るjump-motions - <C-o>

はじめに

もうタイトルに書いてるのが全てです

初歩的ですがたまに忘れては、そもそもこの機能の日本語での呼び方もわからず...検索するのも数分...
と何度か繰り返したので自分戒めメモです。

名前

検索するとき出てこないのでこれを気に覚えます。
Jumpjump-motionsというらしいです。

vim help

vim:help jump-motionsと打つとhelpが表示されます。
基本的な事だけコピって貼っておきます。

8. Jumps                                        jump-motions

A "jump" is one of the following commands: "'", "`", "G", "/", "?", "n",
"N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", "H" and
the commands that start editing a new file.  If you make the cursor "jump"
with one of these commands, the position of the cursor before the jump is
remembered.  You can return to that position with the "''" and "``" command,
unless the line containing that position was changed or deleted.

                                                        CTRL-O
CTRL-O                  Go to [count] Older cursor position in jump list
                        (not a motion command).
                        {not in Vi}
                        {not available without the +jumplist feature}

<Tab>           or                                      CTRL-I <Tab>
CTRL-I                  Go to [count] newer cursor position in jump list
                        (not a motion command).
                        {not in Vi}
                        {not available without the +jumplist feature}

用例

vimでファイルを開いている時、
gg(topへ移動)やG(末尾へ移動)などへ移動(これをジャンプという)した後に、元いた場所に戻りたいことがあります。
ここで<C-o>(ctrl + o)と打つ事でジャンプ元へ戻ります。

終わり

忘れぽさがひどい気がする><

【go】golang環境でFailed parsing input: parser: bad import "syscall" というエラーが出るときのメモ

はじめに

golangを開発していて、go getコマンドなどでライブラリなどを入れた場合にこんなエラーが出ることがあります。

2017/01/16 14:00:33 go-app-builder: Failed parsing input: parser: bad import "syscall" in src/golang.org/x/tools/cmd/heapview/internal/core/mmapfile.go

原因

参考にしたサイトからそのまま引用させて頂きますが、以下のような場合に起こるらしいです。

GAE/Go では syscall や unsafe パッケージのインポートが許されていない。 たとえばプロジェクトルート以下に vendor ディレクトリを作っていて、 その下に置いたサードパーティ製のライブラリがこれら利用不可のパッケージを利用していた場合、 アプリケーションから利用していなくても開発サーバの起動やデプロイができなくなることになる。

go getコマンドでライブラリを入れたり、
自分の場合はvimでgo環境を整えるためにvim-go:GoInstallBinariesを行ったあとに起こりました。
※ direnvでGOPATHを変えてたからなど起こった原因は自分環境のせいではありますが...

対応方法

こちらも参考サイトに書かれていますが、
app.yamlnobuild_filesという項目を追記してbuild対象から外してやる事でエラーがでなくなりました。

nobuild_files:
    - src/gopkg.in
    - src/golang.org
    - src/github.com

参考似させて頂いたサイト

おわり

ちょっとしたことでハマると数時間あっというまですね\(^o^)/

【go】mac vimのGo開発環境を設定するメモ - mac x vim x vundle x go

はじめに

macでGo開発するときにvimの環境を整えるメモです。
vimでこんな感じの事ができるようになればいいやーくらいの感じです。

  • 補完
  • lint
  • 関数定義へジャンプ
  • ドキュメント(GoDocを開く)

アジェンダ

  1. GOPATH確認
  2. Vundleでvim-goの設定&インストール
  3. Vundleでvim-goの依存パッケージのインストール
  4. おもむろに動作確認(:GoFmt、補完、:GoRun)
  5. go-commandsメモ(:GoPath、:GoFmt、:GoDef、:GoDoc、:GoLint)

1. GOPATH確認

GOPATHを念のため確認します。

$ echo $GOPATH
/Users/hoge/.go

$ vim ~/.bashrc
---- vi追記 ----
export GOPATH=$HOME/.go
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export PATH=$PATH:$GOPATH/bin
---------------

2. Vundleでvim-goの設定&インストール

vimvim-goの設定

~/.vimrcにVundleの設定を追記します。

$ vim ~/.vimrc
---- vim追記----
set nocompatible              " be iMproved, required
"filetype off                  " required

set rtp+=~/.vim/bundle/Vundle.vim/
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

" golangに関して以下2行を追記
Plugin 'fatih/vim-go'
Plugin 'nsf/gocode', {'rtp': 'vim/'}                                                                                                                                                                                                                                    

call vundle#end()            " required
filetype plugin indent on    " required
---------------

vim-goインストール

適当にVimを開いた状態で :PluginInstall コマンドを打って
追記したvim-goとgocodeをインストールします。

特に設定を変えていなければ~/.vim/bundle配下にインストールされた事が確認できます。

$ ls -l ~/.vim/bundle/
total 0
drwxr-xr-x  15 hoge  hoge   510 12 12 01:22 Vundle.vim
drwxr-xr-x  36 hoge  hoge  1224  1 16 15:14 gocode
drwxr-xr-x  13 hoge  hoge   442 12 12 01:25 nerdtree
drwxr-xr-x  23 hoge  hoge   782  1 16 15:14 vim-go

Vundle自体の設定についてはこちらをご参考まで。

3. Vundleでvim-goの依存パッケージのインストール

適当にvimを起動している状態で:GoInstallBinariesを打って依存パッケージをインストールします。
こんなコマンドまで用意されていて便利!!

コマンドを打つとxxx not foundな感じで、入っていない依存パッケージをチェックして勝手にインストールしてくれます。

vim-go: goimports not found. Installing golang.org/x/tools/cmd/goimports to folder /Users/hoge/.go/bin/
vim-go: guru not found. Installing golang.org/x/tools/cmd/guru to folder /Users/hoge/.go/bin/
vim-go: gorename not found. Installing golang.org/x/tools/cmd/gorename to folder /Users/hoge/.go/bin/
vim-go: golint not found. Installing github.com/golang/lint/golint to folder /Users/hoge/.go/bin/
vim-go: godef not found. Installing github.com/rogpeppe/godef to folder /Users/hoge/.go/bin/
vim-go: errcheck not found. Installing github.com/kisielk/errcheck to folder /Users/hoge/.go/bin/
vim-go: gotags not found. Installing github.com/jstemmer/gotags to folder /Users/hoge/.go/bin/
vim-go: asmfmt not found. Installing github.com/klauspost/asmfmt/cmd/asmfmt to folder /Users/hoge/.go/bin/
vim-go: motion not found. Installing github.com/fatih/motion to folder /Users/hoge/.go/bin/
vim-go: gogetdoc not found. Installing github.com/zmb3/gogetdoc to folder /Users/hoge/.go/bin/
vim-go: impl not found. Installing github.com/josharian/impl to folder /Users/hoge/.go/bin/

4. おもむろに動作確認

go-commandsが効く事をためす

適当なディレクトリに適当なgoファイルを作って試してみます。
まずは:GoFmt(整形してくれる君)を試します。

# homeディレクトリに適当なディレクトリ適当なgoファイルを作ってみる
$ pwd
/Users/hoge/

$ mkdir sample
$ touch sample.go

# 適当なインデントで書く
$ vim sample/sample.go
  • 新規作成時のファイル
package sample

import (
           "fmt"
)

func main() {
fmt.Print("test\n")
              fmt.Print("test\n")                                                                                                                                                                                                                                  
}
  • :GoFmt実行時 or :wで保存時に自動整形される
package main                                                                                                                                                                                                                                           

import (
  "fmt"
)

func main() {
  fmt.Print("test\n")
  fmt.Print("test\n")
}                                                                                                                                                                                                                          

補完を試す

fmt.Pまで打ってから<C-x><C-o>(Ctrlを押したままx,o)と打つとこんな感じで補完されます。

  • f:id:tweeeety:20170116232602p:plain
  • f:id:tweeeety:20170116232610p:plain

実行を試す

また、:GoRunと打ってみるとこのファイルを実行できます。
ただprintしているだけですが下記のように表示されますね。

Press ENTER or type command to continue
[No write since last change]
test
test

Press ENTER or type command to continue

5. go-commandsメモ(help、:GoPath、:GoFmt、:GoDef、:GoDoc、:GoLint)

おまけ的にいくつかのgo-commandsを書いておきます。

help

基本的にgo-commandsは以下の2つで探せばいろいろでてきます。 * vim-goリポジトリのREADMEを見る * vim開いてる状態で:help vim-goと打つ

README

https://github.com/fatih/vim-go

:help vim-go

こんな素敵な画面でhelpを見れます

f:id:tweeeety:20170116232649p:plain

以下のgo-commandは、簡単な説明との結果も合わせて貼っておきます。

:GoPath

説明

名前からもわかる通り、vimを開いたままGoPathを表示してくれます。
direnvなどでプロジェクトごとにGOPATHを切り替えてる場合は役立ちます。

:help vim-go 引用
:GoPath [path]
    
    GoPath sets and overrides GOPATH with the given {path}. If no {path} is  
    given it shows the current GOPATH. If "" is given as path, it clears
    current GOPATH which was set with :GoPath and restores GOPATH back
    to the initial value which was sourced when Vim was started.

:GoFmt

説明

ソースをよしなにGo形式にフォーマットしてくれます。

:help vim-go 引用
:GoFmt

    Filter the current Go buffer through gofmt.  It tries to preserve cursor
    position and avoids replacing the buffer with stderr output.

:GoDef

説明

ソース中の任意のwordにカーソルがある状態で:GoDefと打つと定義元のファイルに飛んでくれます。
vim側のコマンドの<C-o>で、元いたファイルに戻れます。便利!

また、:help vim-go引用にも記載されてる通り、
デフォルトでショートカットが割り当てられているのでgdと打つだけでも使えます。

:help vim-go 引用
:GoDef [identifier]
gd
CTRL-]

    Goto declaration/definition for the given [identifier]. If no argument is
    given, it will jump to the declaration under the cursor. By default the
    CTRL-] key and the mapping gd are enabled to invoke :GoDef for the
    identifier under the cursor. See 'g:go_def_mapping_enabled' to disable
    them.

    vim-go also keeps a per-window location stack, roughly analogous to how
    Vim's internal tags functionality works. This is pushed to every time a
    jump is made using the GoDef functionality. In essence, this is a LIFO
    list of file locations you have visited with :GoDef that is retained to
    help you navigate software.

:GoDoc

説明

ソース中の任意のwordにカーソルがある状態で:GoDefと打つと定義元のファイルに飛んでくれます。
vim側のコマンドの<C-o>でもといたファイルに戻れます。便利!

また、:help vim-go引用にデフォルトでショートカットも割り当てられているのでgdと打つだけでも使えます。

:help vim-go 引用
:GoDoc [word]

    Open the relevant GoDoc in split window for either the word[s] passed to
    the command or by default, the word under the cursor.

:GoLint

説明

vimで開いているファイルに対してlint(構文チェック)を通してくれます。
PASSと出ればOK、エラーの場合は表示してくれます。

:help vim-go 引用
:GoLint [packages]

    Run golint for the current Go file, or for given packages.

参考

以下のサイトを参考にさせて頂きました!thx! * VimでGoの開発環境を設定する方法のまとめ * vim-goをインストールしてみた(所要時間:15分) * MACで Go言語の開発環境(Go+Vundle+Vimgo+gocode)セットアップ

おわり

GoDocなんかはローカルサーバ立ち上げてみるのも良いですし、goはいろいろ用意されてて便利ですね!\(^o^)/

【vim】macにvimプラグインマネージャvundleをサクっと入れるメモ

はじめに

新しいPCになったタイミングなので改めてvimにvundle入れるメモです。
と、同時に他の記事に引用したかったので自分記事スニペット用。

ながれ

  1. NeoBundleは?
  2. Vundle.vimのインストール
  3. Vundle.vimの初期設定&反映
  4. pluginインストール
  5. インストールするpluginの指定方法
  6. vundleのコマンド

1. NeoBundleは?

NeoBundleも良かったのですが、しばらくSublimeAtomも使っていて少し経つうちにNeoBundle開発終わっちゃったんですね。。。。><

NeoBundle を利用する前に
NeoBundle を使い始めようとしている方は、VimとNeoVimのプラグインマネージャDein.vim を利用しましょう。NeoBundle の開発は終了しました。

ということで、NeoBundleはVundleベースですして基本に立ち返ってVundleに。

2. Vundle.vimのインストール

~/.vim あたりを指定してcloneしてくればインストールは終わりです。

$ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

インストールすると~/.vimディレクトリ配下に
bundleディレクトリが作成されます。入れたpluginたちもそこに入ります。
vundle自体もpluginなので確認するとVundle.vimというディレクトリが作成されてます。

$ tree ~/.vim/bundle -L 1
/Users/tweeeety/.vim/bundle
└── Vundle.vim

1 directory, 0 files

3. Vundle.vimの初期設定&反映

初期設定

初期設定として~/.vimrcにvundle用の設定をちょこっと追加します。
一旦の最低限であれば下記で良いでしょう。

"
" Vundle.vim
"
set nocompatible              " be iMproved, required
filetype off                  " required

set rtp+=~/.vim/bundle/Vundle.vim/
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

call vundle#end()            " required
filetype plugin indent on    " required

call vundle#begin()call vundle#end()の間に追加したいpluginを記述していく感じです。

反映

vimを開いている状態で設定ファイルを反映させます。

:source ~/.vimrc

一度閉じて開き直しても反映されるので閉じた場合は不要です。

4. pluginインストール

こちらも簡単です。vimを開いた状態でこれを打ってみましょう。

:PluginInstall

他のpluginも入れてみる

ただし、ここまでの状態だとすでにインストール済みのVundleVim/Vundle.vimが反映されるだけです。
せっかくなのでディレクトリをツリー表示できるプラグインNERDTreeを入れてみます。

.vimrcに下記を追記。:soure ~/.vimrcで設定を読み込んでから:PluginInstallでインストールします。

Plugin 'scrooloose/nerdtree'

しばらく画面が表示されてdoneとでれば終わりです。
f:id:tweeeety:20161212015528p:plain

参考

5. インストールするpluginの指定方法

インストールするプラグインはvimrcに
Plugin 'VundleVim/Vundle.vim' のように指定しましたが置かれている以下の場所によって3つの方法があります。

実際に書くとこんな感じ。

call vundle#begin()

" vim-scripts リポジトリ
Plugin "rails.vim"
 
" github の任意のリポジトリ
Plugin "tpope/vim-fugitive"
 
" github 以外のリポジトリ
Plugin "git://git.wincent.com/command-t.git"

call vundle#end()

これはまんま参考サイトを参考にさせていただきました。thx!!

参考

6. vundleのコマンド

最後はおまけ程度ですがvundleのコマンドです。:PluginInstallのたぐいですね。

コマンド 説明
PluginInstall プラグインのインストール
PluginUpdate プラグインのアップデート
PluginSearch プラグインの検索
PluginClean プラグインの削除。.vimrc上で指定を削除orコメントアウトしてから実行

終わり

しばらくAtom使ってましたがvimvimでいいですよね\(^o^)/

【vim】.vimrcの変更の読み込む - `-bash: syntax: command not found`な感じで.vimrcの読み込みで失敗するという恥ずかしいメモ

はじめに

vimの設定をぼやーといじっていて.vimrcを読み込もうとしたら
エラーが出て小一時間悩んだのですが凡ミス過ぎて恥ずかしいので思わずメモに残しました。

出るエラーと原因

エラーはこんなんです。

$ source ~/.vimrc
-bash: syntax: command not found
-bash: colorscheme: command not found
-bash: autocmd: command not found
-bash: autocmd: command not found

もう見たら一発なんですが、当たり前だけどbashじゃないからね!
. とか sourcebashコマンドに使うものですしね!
恥ずかしい...(ノД`)・゜・。

対応

ただの凡ミスなので対応というまでもないですが、vimrcの読み込みにはvimを開いているコマンドモード時にこう打ちます。

: source ~/.vimrc

おわり

あたりまえすぎて悲しす(ノД`)・゜・。

【Mac】dateコマンドでunixtime <=> 日時 文字列を相互に変換するメモ

はじめに

何らかのシステムに携わっているときって扱う日付がunixtimeな時多いですよね。

例えば下記のようなときにMacでささっと変換できたら便利だと思います。

  • unixtimeなシステムで、データ確認のために人間がわかる表示で日時を確認したい
  • unixtimeなシステムに、debugのために現在日付をunixtimeに変換して入れたい

そういうwebサイトもありますがわざわざ検索して開いて入力して変換して、、、
というのもあれですしそんな時に手元でささっと変換するメモ。

アジェンダ

  1. dateコマンドそのもの
  2. dateコマンドでunixtimeを日時文字列に変換する
  3. dateコマンドで日時文字列をunixtimeに変換する

1. dateコマンドそのもの

dateコマンドはそのまま打つとosの現在日時を表示してくれます。

$ date
2016年 11月28日 月曜日 14時04分39秒 JST

utc時刻を得たいときは-uオプションで表示できます。

# まんま表示
$ date
2016年 11月28日 月曜日 14時05分51秒 JST

# UTCで表示
$ date -u
2016年 11月28日 月曜日 05時05分51秒 UTC

また、1日前1日後もオプションで指定することで表示できます。

# 今
$ date
2016年 11月28日 月曜日 14時09分08秒 JST

# 1日後
$ date -v +1d
2016年 11月29日 火曜日 14時09分08秒 JST

# 1日前
$ date -v -1d
2016年 11月27日 日曜日 14時09分08秒 JST

dateコマンドではないですが、calと打てばカレンダーで前後の日付も確認できますね。

$ cal
     11月 2016
日 月 火 水 木 金 土
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

そしてunixtimeで表示したい場合は ``をつけます

$ date +%s
1480310097

2. dateコマンドでunixtimeを日時文字列に変換する

ということで本題です。

これは簡単で-rオプションに続けてunixtimeを指定すると人間がわかる日時の文字列に変換してくれます。

$ date +%s
1480310553

$ date -r 1480310553
2016年 11月28日 月曜日 14時22分33秒 JST

なんとなく見にくいという場合はフォーマットも指定できます。

$ date -r 1480310553 +"%Y/%m/%d %H:%M:%S"
2016/11/28 14:22:33

3. dateコマンドで日時文字列をunixtimeに変換する

日時文字列からunixtimeへの変換はプログラムなんかでもよくある形を使います。
日付文字列を指定しますが、合わせてマシンがその文字列を理解できるようにフォーマット文字列も添えてあげます。

# 日時文字列をunixtimeに変換する
$ date -j -f "%Y-%m-%d %H:%M:%S" "2016-11-28 14:22:33" "+%s"
1480310553

# 変換したunixtimeを戻してみる
$ date -r 1480310553
2016年 11月28日 月曜日 14時22分33秒 JST

-jオプションは詳細は、
PCの日付を変更してしまうので要注意と書いてあったりしますが権限がなければこんな感じでエラーになるので仮に忘れてもまぁ、、、

$ date -f "%Y-%m-%d %H:%M:%S" "2016-11-28 14:22:33" "+%s"
date: bind: Permission denied
date: settimeofday (timeval): Operation not permitted

まとめ

manを見ればわかりますがここまでで使ったオプションは下記のみです。

# `-u` : UTCで表示
$ date -u
2016年 11月28日 月曜日 05時05分51秒 UTC

# -v :-vに続けて`[+-](数値)(単位)`とすることで`n(単位)[前後]`を表示
# (例えば`n日前`とか)
$ date -v +1d
2016年 11月29日 火曜日 14時09分08秒 JST

# +%s : unixtimeを表示
$ date +%s
1480310097

# -r : -rに続けてunixitmeを指定
# フォーマットは`+"フォーマット文字列"`で
$ date -r 1480310553 +"%Y/%m/%d %H:%M:%S"
2016/11/28 14:22:33

# -j -f : -j -fに続けてフォーマット、日付文字列、+%s
$ date -j -f "%Y-%m-%d %H:%M:%S" "2016-11-28 14:22:33" "+%s"
1480310553

必要そうだったらフォーマットを毎回指定するのは面倒なのでaliasにしちゃってもよいかもしれませんね。

参考

おわり

書いたものの、コレ系は使う機会になるたびに調べてはを繰り返してるので
今後はここに来てさっと知りたい情報が得れれば自分的にはオッケーという自分めもでした