ラベル bash の投稿を表示しています。 すべての投稿を表示
ラベル bash の投稿を表示しています。 すべての投稿を表示

2015年3月31日火曜日

Emacsとシェルのパスを共有

.zshrcなんかで設定しているパスの変数をEmacs側でインポートしてEmacsからでも通るようにするlispがあります。
これです。
purcell/exec-path-from-shell

MELPAに登録されているので簡単にダウンロードできます。
以下のように設定しておくと好みの変数を持ってきてこれます。
;; load environment variables -------------------------------
(let ((envs '("PATH" "C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH" "TEXINPUTS" "BSTINPUTS" "BIBINPUTS")))
(exec-path-from-shell-copy-envs envs))
これで.zshrcの方だけで管理しておくことができます。
以下の記事の後半の設定とかいらなくなります。
Ochiailab Tips: LaTeXのsty, bst, bibファイルなどを単一フォルダで管理する方法

便利なので使え。

参考サイト: Emacsでの環境変数の設定に exec-path-from-shellを使うようにした - Life is very short

2013年10月20日日曜日

tex✈pdfをコマンドで








全力歯ぎしりレッツゴー!

おはようございます。
texソースからpdfに変換するのには様々な研究がされていますが、
僕は無難にTerminal で、platex→dvipdfmxと入力していました。
でも、これを一回で出来たらいいなあということで、今回はshell目線からやってみました。
bashやzshに以下を追加してください。


function welovepdf () {
# 実行時に指定された引数の数が1個でなければダメです。
if [ $# -ne 1 ]; then
    echo "指定された引数は$#個です。" 1>&2
    echo "実行するには1個の引数が必要です。" 1>&2
else
platex $1
name=$(basename $1 .tex)#拡張子を除いた部分です
dvipdfmx "$name".dvi
fi
}

関数名は、好きなのにしてください。

使い方は、

$ welovepdf paper.tex

です。

楽しんでなー。



2013年6月21日金曜日

ssh << MOSH | MITやっぱすげえ





(上図は、MITでの物理の授業風景らしいです)

おはようございます。Server使う人向けの話です。

SSHをより高速に便利なや〜つをMITが開発しました。

名前をMOSH と言います。

どう便利なのかは、参考リンクを。
使い方は、sshと同じです(!!!!)。
ここでは、インストール方法だけを。


(Homebrewの人)
$brew install mobile-shell

(Mac portsの人)
$sudo port install mosh


(GUI派の人)
公式サイトのpkgファイルをダウンロード


*落合研究室の人へ
pana2にはインストールしてあるので、ぜひ家やスタバ、サイパンから使ってみてください。


参考
MITからモバイル時代のSSH代替品



2013年2月19日火曜日

bashの補完機能を強力にする


僕はzshに乗り替えようと思いつつ、まだ乗り換える理由が見つかりません。

bashでもある程度まで補完を強力にすることが可能です。



2012年12月18日火曜日

bashのファイル名補完で大文字と小文字の区別を無くす

ホームフォルダに".inputrc"というファイルを作り、その中に
set completion-ignore-case on
と書いておく。
これで、[Tab]キーの補完機能で大文字と小文字の区別が無くなります。
少しだけzshとの差が縮まりましたね。

参考URL: http://www.atmarkit.co.jp/flinux/rensai/linuxtips/306lsletter.html

2012年1月30日月曜日

bashを利用した簡単コンパイル

ヘッダやライブラリを使ってプログラムを書いていると,
徐々にgccのコマンドが伸びてきて打つのが大変になってきます.
たとえば僕の例だとプログラムフォルダの上に utility/ というフォルダを
作ってそこにヘッダファイルを入れているので,
$ gcc -O3 -o main main.c ../utility/hoge.c ../utility/hugya.c -lfftw3 -g
みたいな感じでいちいち打っていました.長くてめんどくさいですね.
こんなとき,makefileを使うのがひとつの手段としてありますが,他にスクリプトを利用する方法があるので参考程度にご紹介します.
まず適当にc.shという名前のファイルを作ってヘッダと同じフォルダに入れておきます.

#!/bin/sh
gcc -O3 -o $1 $1.c ../utility/hoge.c ../utility/hugya.c -lfftw3 -g

gccの行は自分がいつもコンパイルする時のスタイルで書きます.
$1c.shの引数をあらわしていて,
この場合ターミナル上でプログラムフォルダから,
$ ../utility/c.sh main
みたいな感じで書くとmain.cがコンパイルされて同名のプログラムができます.

これでもまだちょっとコマンドがめんどくさいので,
ここからさらに短くするためにbashの設定ファイルをいじります.
ochiailabの人は,~/emacslib/ の中に dotbashrc ってファイルがあると思うので,
それをemacsかなんかで開いて以下を追記します.

alias c="../utility/c.s"

これはエイリアスといって,ターミナルで入力される文字列(ここでは c )に
"" の中の文字列をあてがっててくれる便利なものです.
これで,ターミナル上でコンパイルしたいプログラムのあるフォルダに移動して,
$ c main
と打ち込むと,これだけでコンパイルできるようになります.

これは自分の今の方法ですが,最近ヘッダがでかくなってきたせいで,
コンパイルに時間がかかるので,分割コンパイルと併用してこうと考えています.

あと,スクリプトを工夫することでmakeっぽく使うことも出来るはずなので,
試してみてできたら書きます.

※蛇足
emacslibにはemacsやターミナル等の設定ファイルが入っているので,
Sugarsyncなんかで同期しとくとどこのPCでも同じ環境が使えて便利です.
このとき異なるPCでコンパイルしようとすると,
ファイル権限の関係で permission denied. と言われることがありますが,
$ chmod a+x c.sh
とすると使えます.