<Bash, zsh> シェル変数が定義されているかを判定する方法

シェルShellで変数Variableが定義されているかを判定する方法。
調査した結果、3つの方法があるっぽい。

-v 変数がセットされてるか? どうか? -n 変数の長さが0でないNonzero lengthか? どうか? -z 変数の長さが0 nzero lengthか? どうか?

チェックする。

 % HAGE="hage"; [ -v HAGE ]; echo $?
0

 % unset HAGE ; [ -v HAGE ]; echo $?
1

 % HAGE="hage"; [ -n "$HAGE" ]; echo $?
0

 % unset HAGE ; [ -n "$HAGE" ]; echo $?
1

 % HAGE="hage"; [ -z "$HAGE" ]; echo $?
1

 % unset HAGE ; [ -z "$HAGE" ]; echo $?
0

luna2-linux.blogspot.jp

d.hatena.ne.jp

<Vim> Unite.vimをいれた。

:regレジスタregisterの内容を確認して、ヤンクyankしていたのだが、
すぐに使い方を忘れる、、あと、レジスタの番号を覚えていないとヤンクできない、、
が記憶力のないあたしとしては、いまいち感がでてきた。

Unite.vimをいまさらながら入れてみた。
よかった。

github.com

設定は下記とした。
shift + uUniteを呼び出すキーとした。
<ESC>2発でUniteを閉じる。

" Unite.vim
" ----------------------------------------------
let g:unite_enable_start_insert=1                                       "Start with insert-mode
let g:unite_source_history_yank_enable =1
let g:unite_source_file_mru_limit = 200
nnoremap <silent> Uy :Unite history/yank<CR>
nnoremap <silent> Ub :Unite buffer<CR>
nnoremap <silent> Uf :UniteWithBufferDir -buffer-name=files file<CR>
nnoremap <silent> Ur :Unite -buffer-name=register register<CR>
nnoremap <silent> Um :Unite file_mru buffer<CR>
autocmd FileType unite nnoremap <silent> <buffer> <ESC><ESC> :q<CR>
autocmd FileType unite inoremap <silent> <buffer> <ESC><ESC> <ESC>:q<CR>

<Vim> オムニ補完

オムニ補完Omni completeを設定してみた。

下記を.vimrcに書き込む。
pythonは、どうもJedi-vimとぶつかるっぽいので、切る。

" Omnifunc
" ----------------------------------------------
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
" autocmd FileType python setlocal omnifunc=pythoncomplete#Complete     "Off due to conflict with jedi-vim
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

マニュアル。
http://vim-jp.org/vimdoc-ja/usr_24.html#24.3

<Anaconda> アップデートしたら、、、

nekoyukimmm.hatenablog.com

この後、
アナコンダAnacondaさんをアップデートしてみた。

[1]> conda update anaconda
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Anaconda3:

The following packages will be UPDATED:

    anaconda: 5.0.1-py36h8316230_2  --> custom-py36h363777c_0
    conda:    4.3.30-py36h7e176b0_0 --> 4.4.7-py36_0
    pycosat:  0.6.2-py36hf17546d_1  --> 0.6.3-py36h413d8a4_0

Proceed ([y]/n)?

が、Script/activateの内容がガラッと変わった。
そしたら、msys2上からは、condaがうまく動かない。
Windowsのコンソールからは、いいのだが、、

なんかうまくないので、このアップデートは見送ることに、、
パッケージのインストールは、pip使うしかないのかな、、

<Vim> Markdown + Syntax highlight

vimでマークダウンMarkdownテキストを開いた時に、シンタックスハイライトSyntax highlightが効くようにする。

次の文を.vimrcに追加。

let g:markdown_fenced_languages = [
\  'coffee',
\  'css',
\  'erb=eruby',
\  'javascript',
\  'js=javascript',
\  'json=javascript',
\  'ruby',
\  'sass',
\  'xml',
\]

グッド。
ただ、自分の環境だと、coffeeでエラーが出たので、まあ使わないから、そこは切った。

お世話になったところ。 mattn.kaoriya.net

<virtualenv, Python> virtualenvをして、setuptoolsを試す。

Anacondaで、virtualenvをして、setuptoolsをためしてみた。

まずは、virtualenv
インストールしんといけん。デフォルトでははいっちょらん。

[1]> conda install virtualenv

で、virtualenv

[2]> virtualenv hello
Using base prefix 'C:\\Anaconda3'
New python executable in C:\msys64\home\Nekoyuki\tmp\hello\hello\Scripts\python.exe
copying C:\Anaconda3\python.exe => C:\msys64\home\Nekoyuki\tmp\hello\hello\Scripts\python.exe
Installing setuptools, pip, wheel...done.

[3]> cd hello/
Include/  Lib/  pip-selfcheck.json  Scripts/  tcl/

[4]> . Scripts/activate

[5]> which pip
/C/msys64/home/Nekoyuki/tmp/hello/hello/Scripts/pip

[6]> which python
/C/msys64/home/Nekoyuki/tmp/hello/hello/Scripts/python

[7]> export PYTHONPATH=/home/Nekoyuki/tmp/hello/hello/Lib/site-packages

[8]> echo $PYTHONPATH
/home/Nekoyuki/tmp/hello/hello/Lib/site-packages

[9]> pip freeze

みそは、PYTHONPATHを手動で切り替えないと、pipが正しく動かない。

で、hello.py、他スクリプトを書いてみた。(下記のリンク参照)

[10]> ls
helloworld/  Include/  Lib/  pip-selfcheck.json  Scripts/  tcl/

>tree helloworld/
helloworld/
├── helloworld
│   ├── __init__.py
│   └── hello.py
└── setup.py

1 directory, 3 files

で、pipをかます。

[11]> pip install ./helloworld
Processing c:\msys64\home\nekoyuki\tmp\hello\hello\helloworld
Installing collected packages: helloworld
  Running setup.py install for helloworld: started
    Running setup.py install for helloworld: finished with status 'done'
Successfully installed helloworld-0.0.0

インストールされたっぽい。確認してみる。

[12]> pip freeze
helloworld==0.0.0

[13]> ls
helloworld/  Include/  Lib/  pip-selfcheck.json  Scripts/  tcl/

[14]> ls Scripts/
activate      activate_this.py   easy_install-3.6.exe*  pip.exe*     python.exe*    wheel.exe*
activate.bat  deactivate.bat     greet.exe*             pip3.6.exe*  python36.dll*
activate.ps1  easy_install.exe*  greet-script.py*       pip3.exe*    pythonw.exe*

[15]> ls Lib/site-packages/
__pycache__/     helloworld-0.0.0-py3.6.egg-info/  pkg_resources/                wheel/
easy_install.py  pip/                              setuptools/                   wheel-0.30.0.dist-info/
helloworld/      pip-9.0.1.dist-info/              setuptools-38.4.0.dist-info/

ちゃんと、greetが、Scriptsの下にあるねー!
いけるね!

pypi.python.org

お世話になったところ。

その1 Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

その2

http://momijiame.tumblr.com/post/39580970098/python-の-setuppy-を書いてみる
momijiame.tumblr.com

<ATOM> Proxy越しのアップデート

Proxy越しでATOMを使ってるとき、、
で、モジュールのアップデート時に、下記のエラーが出た時、、、

Updating to “atom-mermaid@3.2.1” failed.Hide output…

gyp info it worked if it ends with ok
gyp info using node-gyp@3.4.0
gyp info using node@6.9.5 | win32 | ia32
gyp http GET https://atom.io/download/electron/v1.6.15/iojs-v1.6.15.tar.gz
gyp WARN install got an error, rolling back install
gyp ERR! install error 
gyp ERR! stack Error: unable to get local issuer certificate
gyp ERR! stack     at Error (native)
gyp ERR! stack     at TLSSocket.<anonymous> (_tls_wrap.js:1079:38)
gyp ERR! stack     at emitNone (events.js:86:13)
gyp ERR! stack     at TLSSocket.emit (events.js:185:7)
gyp ERR! stack     at TLSSocket._finishInit (_tls_wrap.js:603:8)
gyp ERR! stack     at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:433:38)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Users\hage\\AppData\\Local\\atom\\app-1.23.3\\resources\\app\\apm\\bin\\node.exe" "C:\\Users\\hage\\AppData\\Local\\atom\\app-1.23.3\\resources\\app\\apm\\node_modules\\node-gyp\\bin\\node-gyp.js" "install" "--runtime=electron" "--target=1.6.15" "--dist-url=https://atom.io/download/electron" "--arch=ia32" "--ensure" "--proxy=http://proxy.hage.com:8080/"
gyp ERR! cwd C:\Users\hage\.atom
gyp ERR! node -v v6.9.5
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok 

次のおまじないを、ターミナル開いて叩く。

setx NODE_TLS_REJECT_UNAUTHORIZED 0

node-gyp中のが、承認するところでこけてるので、無視させればいいらしい。

github.com