bashやzshでsudoを使う際、aliasは-Eでsudoに渡せるがfunctionは渡すことができない。 sudo自体にはfunctionを引き継がせるようなオプションは無く、そのままでは定義しているfunctionはsudoで実行させることができない。 じゃあどうするかというと、基本的には別途そのためのfunctionを別に設定してやり、それをsudoのaliasとして定義してやる。 以下、設定のサンプル。

function SudoFunc() {
    local CMD=${1} # 実行コマンドを取得する

    # 実行コマンドのタイプを取得する
    case $...

ターミナルでCUIを操作してたりすると、たまーにスピナー(棒がくるくる回ってるやつ)が表示されるコマンドがあったりする。その他にも、zshのtab補完のようなプロンプトの下でアニメーションする処理もある。 こういった、ターミナル上で文字を使って動く処理は、果たしてどうやって作ってるのだろう?と思ったので、簡単に作り方をまとめてみることにした。

1. 「\r(復帰コード)」を使う

1行のアニメーションであれば、一番手軽な方法。 bashやzshでは、\rキャリッジリターン(復帰コード) という制御コードを指定できる。この制御コードがあった場合、カーソルを行頭に戻すという処理が...


先日、ちょろっと調べ物をしていたところこんなページを見かけた。 某掲示板から生まれたキャラクタの「やる夫」が煽ってくるcommand_not_found_handleを作ってみるよ、という内容のもの。

あー、これはうざいなぁ、と思いつつ、できればターミナルの画面をまるごと使用するのではなく、プロンプトのすぐ下で煽ってくるようにしたほうが面白そうだなーと思ったので、ちょっとやってみることにした。 オリジナルのはAAをechoで表示後にclearしてやることで処理しているのだけど、そうではなくプロンプトを表示させつつAA等を動かす場合、ANSI Escapeで処理してやる必要がある。

で...


bashで、現在読み込まれているfunctionの一覧とその内容(コード)を、ターミナルからbashrc等を読まないで確認したい時がある。 調べたところ、以下のような方法で確認できるようだ。

1. setで調べる

単純に、全部のfunctionとその内容を見るだけであれば、setコマンドをオプションなしで実行してやればいい。 function以外も出力されてしまうが、読み込まれているfunctionとそのコードが出力される。

blacknon@test-ubuntu18:~$ set
BASH=/bin/bash
...
quote ()
{
    local quoted=${...

普段はzshを使っているのだが、先日 ローカルのbashrcを利用してssh接続する方法 を知ったので、bashrcについても多少手を入れてみることにした。 で、zshでは右プロンプトにタイムスタンプを表示させたりしているのだが、今回はこれをbashでやる方法についてを残しておく。

zshでは右プロンプトは「RPROMPT」という設定項目で右プロンプトを指定できるのだけど、残念ながらbashにはそういったものは存在していない。 なので、PS1よりも先に実行されて、多少いろいろと自由がきく PROMPT_COMMAND にfunctionを指定することで、擬似的に右プロンプトを出...


先日、 ssh接続先でローカルのbashrcを使うシェル芸 というのを書いたのだが、同じような方法を使えばvimrcやtmuxの設定ファイルも持っていけることに気づいた。 bashの--rcfileオプションのように、vimでも-uオプションで使用するvimrcファイルを指定できるので、bashと同じようにプロセス置換を利用してやればいい。

ただ、vimrcやtmux.confの場合、bashrcのように1回だけ読み込ませればそれでおしまいにはならない。 コマンドを実行するたびに設定ファイルを読み込むことになるので、起動してつなげっぱなしのbashとはすこしやり方が異なる。 vim...