<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
<Vim> Unite.vimをいれた。
:reg
でレジスタregister
の内容を確認して、ヤンクyank
していたのだが、
すぐに使い方を忘れる、、あと、レジスタの番号を覚えていないとヤンクできない、、
が記憶力のないあたしとしては、いまいち感がでてきた。
Unite.vim
をいまさらながら入れてみた。
よかった。
設定は下記とした。
shift
+ u
でUnite
を呼び出すキーとした。
<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
<Anaconda> アップデートしたら、、、
この後、
アナコンダ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
の下にあるねー!
いけるね!
お世話になったところ。
その1 Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)
その2
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
中のが、承認するところでこけてるので、無視させればいいらしい。