Skip to content

blacknon/dotfiles

Repository files navigation

dotfiles

About

自分(Blacknon)のクライアント環境用dotfiles。

基本方針

ローカルではzshを、リモートではbashを用いる。

リモート先でもlsshを使ってローカルの設定(shell function含む)を転送、利用するため、実行コマンドは可能な限りシェル関数として実装する。

ディレクトリ・ファイル構成

PATH 概要
.zshrc zsh用のrcファイル。小分けにしたファイル郡をsourceするだけ。
.bashrc bash用のrcファイル。小分けにしたファイル郡をsourceするだけ。
.vimrc vimrcファイル。ssh先に持っていきやすくするため1ファイルにすべて設定を記述する。
.tmux.conf vimrcファイル。ssh先に持っていきやすくするため1ファイルにすべて設定を記述する。
sh bash/zshで共通の設定・関数を格納するディレクトリ。
sh/alias.sh aliasの設定ファイル
sh/exportsh export周りの処理を記述しているファイル
sh/other.sh その他
sh/functions/command_not_found_hundle aliasの設定ファイル
sh/functions/common.sh shell関数内で利用している関数を記述しているファイル
sh/functions/exec_1.sh インタラクティブシェルから実行する関数1(ssh先に持っていくもの)
sh/functions/exec_2.sh インタラクティブシェルから実行する関数2(ssh先に持っていかない・利用頻度の低いもの)
sh/functions/exec_ddig.sh インタラクティブシェルから実行する関数(ddigのみ)
sh/functions/exec_pping.sh インタラクティブシェルから実行する関数(ppingのみ)
sh/functions/exec_local.sh インタラクティブシェルから実行する関数(ローカルマシンでしか実行しないであろうもののみ)
sh/functions/exec_docker.sh インタラクティブシェルから実行する関数(docker関係のみ)
sh/functions/iterm2.sh iTerm2で利用する関数
sh/functions/keybind.sh Keybindで使用する関数
sh/functions/replace.sh 既存のコマンドからaliasで置き換える関数

実行コマンド・関数

AppleScript

File 概要
AppleScripts/music_rename.applescript iTunesの選択中のタイトル名を、~/Work/YYYYmm/YYYYmmdd/itunes.txtのタイトルに変換していくスクリプト(~/Work/YYYYmm/YYYYmmdd/itunes.txtはShift-JISで記述する必要があるので注意)
AppleScripts/music_settracknum.applescript iTunesの選択中の曲にtrack numberを連番でセットしていくapple script.

実行ファイル

File 概要
bin/cidr2iplist.py 標準入力で受け付けたcidr(192.168.0.0/24)を展開してipアドレスのリストとして出力するスクリプト.
bin/get_proxy pubproxy.comのapiからランダムにSocks5 proxyを取得するスクリプト
bin/get_proxylist www.proxy-list.downloadからフリーのプロキシリストを取得してURI形式でリスト取得するスクリプト
bin/get_shellfunction_table.sh シェル関数とその説明をsh_function*ファイルから取得してtableにするスクリプト
bin/hwatch_logviewer.py hwatchのlogをパースして出力するスクリプト
bin/json2urlparam.py json文字列をPOSTできるURL EncodeしたQuery stringに変換するスクリプト
bin/mkworkbackup.sh ~/Today/backupに、雑にバックアップを作成するスクリプト. mkworkln.shから該当箇所だけ抜き出して動くようにしたもの.
bin/mkworkln.sh ~/Work整備のcron用スクリプト
bin/my-pj 期間の決まっているプロジェクト用のディレクトリ生成スクリプト(~/Workとセット)
bin/myconky.sh dotfiles配下のconkyrcを利用したconkyの管理用スクリプト(Desktop Linux用)
bin/mydocker-setup ローカルで使うDockerの取得用スクリプト
bin/outexec_vimdiff.sh lsshのpshell(parallel shell)で実装されている"%outexec"コマンドで使用するためのスクリプト。 "${LSSH_PSHELL_OUT_{SERVER_NAME}}"に過去の実行結果が保存されているため、それらをvimdiffに食わせて差分を確認する。
bin/rot.py 文字列のROT対応用スクリプト(未作成)
bin/subdomain2domain.py 標準入力で受け付けたサブドメインからドメインを返すスクリプト.
bin/update_ltmux ssh先に持っていくtmux設定付きfunctionの作成スクリプト
bin/update_lvim ssh先に持っていくvim設定付きfunction(lvim)の作成スクリプト
bin/url2domain.py 標準入力で受け付けたURLからドメインを返すスクリプト.

シェル関数

File 関数名 概要
./sh/functions/common.sh ____get_envdata() 現在使っているfunctionや環境変数、aliasをbase64にして返す関数
setでfunction/envを、aliasでエイリアスを取得させる
./sh/functions/common.sh ____get_rcdata() ローカルマシンで使用しているbashrcやvimrcのfunctionを読み込んで
base64にして返す関数
./sh/functions/common.sh ____toggle_surround_format() 入力中の内容を引数で指定された文字列で囲む(カーソル位置〜行末)
./sh/functions/common.sh ____get_escape() エスケープした文字を返す
./sh/functions/common.sh ____1char2dotchar() 各文字を1文字だけドット(.)にした文字列の一覧を出力する(agrepで使用)
./sh/functions/common.sh ____shift1chars() 各文字を1文字ずつずらした文字列を出力する(agrepで使用)
./sh/functions/exec_1.sh ttmux() tmux内で実行すると、ウィンドウを分割してスタートさせる
./sh/functions/exec_1.sh check_cert() OpenSSLでの、リモートの証明書の期限をチェックするための関数
./sh/functions/exec_1.sh get_open_ports() 開いてるポートとそれに対応するプロセスのコマンドを一覧で表示する
./sh/functions/exec_1.sh get_globalip() httpbin.orgに接続してグローバルIPを取得する
./sh/functions/exec_1.sh get_ip() ipアドレスとinterfaceの組み合わせをシンプルなリストにして出力する
./sh/functions/exec_1.sh rarls() rarファイル内のデータをlist表示するfunction。
./sh/functions/exec_1.sh zipcat() zipファイル内のファイルを指定して標準出力に書き出すfunction。
./sh/functions/exec_1.sh zipls() zipファイル内のデータをlist表示するfunction。
./sh/functions/exec_1.sh targrep() tarファイル内のファイルに対してgrep(相当の処理)を行うfunction。
awkを利用する。 ※ GNU tarでないと動作しないので注意
./sh/functions/exec_1.sh tarcat() tarファイル内のファイルを指定して標準出lflg_l力に書き出すfunction。
./sh/functions/exec_1.sh tarls() tarファイル内のデータをlist表示するfunction。
./sh/functions/exec_1.sh todaydir() make today dir
./sh/functions/exec_1.sh find_bigfile() サイズの大きいファイルをサーチする
./sh/functions/exec_1.sh sw() ファイルの入れ替え(スイッチ)
./sh/functions/exec_1.sh dec_jwt() 標準入力から受け付けたjwtトークンをDecodeする
./sh/functions/exec_1.sh enc_unicode() 標準入力から取得した値をUnicode Escape Sequence形式に変換する
※ nkfが必要
./sh/functions/exec_1.sh enc_hex() 標準入力から取得した値をHex形式(\xXX)にして返す
./sh/functions/exec_1.sh dec_html() 標準入力から受付たhtmlエンティティ形式のデータをもとに戻す
./sh/functions/exec_1.sh enc_html() 標準入力から取得した値をhtmlエンティティ形式に変換する
./sh/functions/exec_1.sh dec_url() 標準入力から取得したパーセントエンコーディングを戻す
./sh/functions/exec_1.sh enc_url() 標準入力から取得した値をパーセントエンコーディングする
-n ... nkfを使用してパーセントエンコーディングする(-a,-zは無効化)
-a ... ascii文字含め全部をパーセントエンコーディングする(-nのときは無効)
-z ... Null区切りにして改行もパーセントエンコーディング対象とする
./sh/functions/exec_1.sh snake2camel() 標準入力で受けたsnake_case => CamelCaseの変換を行う
./sh/functions/exec_1.sh camel2snake() 標準入力で受けたCamelCase => snake_caseの変換を行う
./sh/functions/exec_1.sh aigrep() あいまいgrepをするfunction
(1文字違う文字列(abc=>{.bc,a.c,ab.})と、1文字ずつずらした文字列(abc=>{abc,bac,acb})でgrepをする(typoも発見できる))
./sh/functions/exec_1.sh ts() 標準入力で受け付けた行頭にタイムスタンプ(YYYY-MM-DD HH:MM:SS: )を付与する
./sh/functions/exec_2.sh scx() 完全にlocalで実行する用のscのラッパーfunction。
bashrcをsourceした状態で引数のコマンドを実行させるので、functionも実行できるようにする。
./sh/functions/exec_2.sh sc() ## ==========
ターミナルログ関係
## ==========
scriptコマンドで/Work配下にターミナルログを記録する
./sh/functions/exec_2.sh sortsave() sortしてその内容をそのまま保存する
※ moreutils必須
./sh/functions/exec_2.sh gscd() gitリポジトリ内のディレクトリを選択して移動する
./sh/functions/exec_2.sh gcd() gitリポジトリのルートディレクトリに移動する
./sh/functions/exec_2.sh ud() 上のディレクトリに移動するfunction.
cd(Change Directory) → ud(Up Directory)
...という命名方式
./sh/functions/exec_2.sh url2json() パイプから受け付けたurl encodeされたパラメータをjsonにして出力するfunction(要php)
./sh/functions/exec_2.sh json2url() ## ==========
エンコード/デコード関係
## ==========
パイプから受け付けたjsonをurlencodeして出力するfunction(要php)
./sh/functions/exec_2.sh joinby() Join array
./sh/functions/exec_ddig.sh ddig() #
スペース区切りでリストを引数として与えると、その名前解決の結果をカンマ区切りで出力するdigのwrapper関数
ex.)
ddig abc{1..10}.com @{8.8.8.8,1.1.1.1}
ddig MX TXT A abc{1..10}.com @{8.8.8.8,1.1.1.1}
./sh/functions/exec_docker.sh docker_login() 起動中のdockerコンテナにログインするためのfunction。
usage:
docker_login コンテナ名
docker_login -e コンテナ名 # 現在のfunctionを利用してログイン
docker_login -r コンテナ名 # rcファイルを利用してログイン
./sh/functions/exec_docker.sh docker_runin() dockerコンテナを起動してログインするためのfunction。
usage:
docker_runin コンテナ名
docker_runin -e コンテナ名 # 現在のfunctionを利用して起動・ログイン
docker_runin -r コンテナ名 # rcファイルを利用して起動・ログイン
docker_runin -v ローカルPATH:コンテナPATH コンテナ名 # マウント指定(-r/-eオプション併用可)
NOTE: docker-machine環境下でvolume mountがうまくいかなくなった場合、とりあえずアップグレードすることで直る場合がある。まずはそれをやってみること。
./sh/functions/exec_local.sh mkinst() make install を一気に行うためのfunction
./sh/functions/exec_local.sh battery() バッテリー残量を取得
./sh/functions/exec_local.sh pe() petからsnippetを実行する(実行後はhistoryに登録)
./sh/functions/exec_local.sh prev() 直前に実行したコマンドをpetに登録する
./sh/functions/exec_local.sh tw() 現在いるWorkディレクトリを識別し、その翌日のディレクトリへ移動する
./sh/functions/exec_local.sh yw() 現在いるWorkディレクトリを識別し、その前日のディレクトリへ移動する
./sh/functions/exec_local.sh wd() 本日のDownloadディレクトリへの遷移用function
./sh/functions/exec_local.sh ww() Workディレクトリの作成・移動
./sh/functions/exec_pping.sh pping() ex.)
pping target1 target2...
parallel port ping
./sh/functions/iterm2.sh imgls() imgls():
about:
iTerm2上で画像ファイルをls状に表示するfunction
origin:
https://www.iterm2.com/utilities/imgls
require:
- php
./sh/functions/iterm2.sh imgview() imgview():
about:
iTerm2上で画像ファイルを表示するfunction
origin:
https://www.iterm2.com/utilities/imgcat
./sh/functions/iterm2.sh ____show_imgls_list_file() ____show_imgls_list_file():
about:
imglsの結果を出力するfunction
./sh/functions/iterm2.sh ____show_imgview_help() ____show_imgview_help():
about:
imgview用のhelpを出力するためのfunction
./sh/functions/iterm2.sh ____show_error() ____show_error():
about:
エラーメッセージを出力するfunction
./sh/functions/iterm2.sh ____print_image() ____print_image():
about:
iTerm2にイメージを出力するimgview用のfunction
./sh/functions/iterm2.sh ____check_dependency() ____check_dependency():
about:
コマンドの有無を確認するfunction。
./sh/functions/iterm2.sh ____print_st() ____print_st():
about:
More of the tmux workaround described above.
./sh/functions/iterm2.sh ____print_osc() ____print_osc():
about:
tmuxなどの場合にOSCエスケープシーケンスを出力するためのfunction。
./sh/functions/keybind.sh __tw() twをkeybindで実行する
./sh/functions/keybind.sh __yw() ywをkeybindで実行する
./sh/functions/keybind.sh __ww() wwをkeybindで実行する
./sh/functions/keybind.sh __toggle_doublequote_format() 入力中の内容をダブルクオーテーションで囲む
./sh/functions/keybind.sh __toggle_singlequote_format() 入力中の内容をシングルクオーテーションで囲む
./sh/functions/keybind.sh __toggle_substitution_format() コマンド置換形式に変換する
./sh/functions/keybind.sh __pet_set() pet searchをしてコマンドラインを置き換えるkeybind用のfunction
./sh/functions/keybind.sh __history_selection_insert() Ctrl + R でhistory検索をして現在カーソルに差し込みをするfunction
./sh/functions/keybind.sh __history_selection() Ctrl + R でhistory検索をする(peco,bocoを使用)
./sh/functions/keybind.sh __copy_current_command() Ctrl + X, Cで、現在のプロンプトのコマンドをコピーする(ssh先でも使えるように、OSCエスケープシーケンスを使用)
NOTE: 【前提】 Macの場合、iTerm2を使ってることが前提
NOTE: 【前提】 iTerm2の場合、PerferencesApplications in terminal may access clipboardにチェックが入ってる必要がある
./sh/functions/keybind.sh __cd_selection() Ctrl + X, Ctrl + Dでcdを行うためのfunction(bash/zsh共通)
./sh/functions/keybind.sh __cd_record() cdのhistoryを記録するためのfunction
./sh/functions/replace.sh __pingfunc() pingでタイムスタンプを頭につけるためのfunction
./sh/functions/replace.sh __mkdirfunc() mkdirで、単体のディレクトリが指定された場合はそこにそのまま移動させるためのfunction
./sh/functions/replace.sh __sudofunc() sudoでfunctionで定義した内容が使えるようにするためのfunction

Note

実行ファイル・関数テーブル作成用コマンド

# AppleScript
echo "|File|概要|\n|---|---|";grep -H -a '^-- Description' AppleScripts/* | nkf -w | sed -r 's/:-- Description:/\t/;s/(.+)\t/[\1](\1)\t/'| tb -s $'\t' -t

# 実行ファイル
(echo "File\t概要\n---\t---";grep -H -a '^# Description' bin/* | nkf -w | sed -r 's/:# Description:/\t/;s/(.+)\t/[\1](\1)\t/')| tb -s $'\t' -t

# シェル関数
get_shellfunction_table.sh