スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

eshell (Emacs のシェルモード)

Emacs には eshell というコンソールのモードがあります。
これを使えば、 Un*x 系の開発では Emacs 上で編集、コンパイル、デバッグ、実行と全部できるので、ログインして Emacs を起動した後は全部 Emacs 上で作業するということもできます。

起動

eshell の起動は特にショートカットキーは割り当てられていないので、 M-x eshell で起動します。
ショートカットキーを割り当てる場合、例えば F8 キーに割り当てるには .emacs.el に次のように記述します。
(global-set-key [f8] 'eshell)
一度、 eshell を起動した後、再度 eshell のコマンドを実行すると起動済みの eshell のバッファが表示されます。
複数の eshell を起動したい場合には C-u をつけて C-u M-x eshell (C-u [F8]) のように実行します。

使用法

基本的に他のシェルと同じように使用できます。
補完、コマンド履歴操作のキーは次のようになります。
機能 キー
補完 [TAB]
途中まで書いたものにマッチする前の履歴 M-p, <up>
途中まで書いたものにマッチする次の履歴 M-n, <down>
前の履歴 <C-up>
次の履歴 <C-down>
補完はよくある TAB ですが、履歴は他のコンソールのシェルと違って C-p, C-n はバッファの行移動になり、 Alt(Esc) と組み合わせた p, n および矢印キーの上下が履歴となります。
ただし、 eshell は途中まで書いたものにマッチしたもの中から探します。
 $ ls ~/t [↑]   # コマンド履歴のうち、先頭が "ls ~/t" で始まる
                                 # ひとつ前の履歴を表示する 
他のシェルのような単純な履歴操作をしたい場合には、 Ctrl キーと組み合わせた矢印キーで行います。

パス区切り

ディレクトリの区切り文字は Windows 環境でも \ ではなく / を使用します。
Windows 環境では \ を使用することもできますが、 \ はエスケープ文字になっているので、 使用する場合には \\ と書く必要があります。

Emacs 関数の実行

eshell ではプログラムだけでなく、 Emacs lisp の関数も実行できます。

例えば、 grep, mandiff などは eshell 上で通常のコマンドのように実行すると、直接実行するのではなく、 lisp の関数を呼び出して M-x grep を実行したような動作になります。

前記の grep などは eshell モードでの関数として書かれている関数が呼び出されているのですが、 通常の lisp 関数も実行できます。
$ find-file foo.h  # ファイルのオープン
$ setq visible-bell t  # 値の設定
$ setq visible-bell    # 値の設定 (nil を設定)
$ compile "gcc main.c" # コンパイルの実行

エイリアス

他のシェルと同様にコマンドに別名をつけるエイリアスという機能があります。
登録する場合には ~/.eshell/alias に別名と実行するコマンドを記述します。
alias q exit
alias dir ls -l $*
alias msbuild-release MSBuild /p:Configuration=Release $*
alias ldd dumpbin.exe /DEPENDENTS $*
ここでの $* はエイリアスの後のコマンド引数になります。 通常のシェルでのエイリアスと違い、引数を $* で指定していないと 引数を受け取ってくれません。

リモートコンピュータ

Emacs にはもともと ange-ftp というモジュールで、 ftp を使ってリモートのファイルを 通常ファイルのように編集することができます。
そのときの書式は以下のようになります。
/ユーザー@サーバー名:パス
/サーバー名:パス
パスの部分にはサーバーでの絶対パスかユーザーのホームディレクトリからの相対パスを記述します。
パスワードは最初に接続する際に聞かれます。ユーザーを省略すると ~/.netrc に記述されたユーザーが使用され、パスワードも記述されていると聞かれずにそれが使用されます。

eshell ではこの ange-ftp を使って、リモートのディレクトリやファイルをローカルにあるものであるかのように 扱うことができます。例えば foo サーバーから bar サーバーへのファイルのコピーなどを FTP アプリを使わずに 行うことができます。
$ cp  /yohshiy@foo.com:/var/some/error.log  /yohshiy@bar.com:work/
ただし、リモートのディレクトリではフィルターの * が使えなかったり、 ファイル数が多いと ls に失敗したりと若干の制約はあります。


入門GNU Emacs (UNIX text processing)入門GNU Emacs (UNIX text processing)
(1999/09)
デボラ キャメロン、エリック レイモンド 他

商品詳細を見る
やさしいEmacs‐Lisp講座やさしいEmacs‐Lisp講座
(2011/06)
広瀬 雄二

商品詳細を見る
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
11位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
2位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

07月 | 2017年08月 | 09月
- - 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 31 - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。