hdknr’s posterous

 
Filed under

bash

 

プログラマメモ2: aliasの中に引数を入れれるか?

bashでは、
$ alias ech="echo test$1"

とすると、test 引数となる。
testと引数の間に、スペースがはいる。

観察していると、引数の展開のしかたがどうも思い通りではない。

bashではaliasを使うのではなく、関数で定義したほうがいいっぽい。

$ ech() { echo test$1; }

これだと期待した結果になる。

Filed under  //   bash  

Comments [0]

Bash Prompt HOWTO: BashとBashのプロンプト

プロンプトの形状はシェル変数 PS1 によって決まります。 コマンドが2行以上になる時の2行目以降のプロンプトは、PS2 の文字列で 決まります。これは PS1 と全く同じ書き方ですので、この文書ではほとんど PS1 についてだけ述べます。(PS3 と PS4 という変数もあります。これらは 通常のユーザーが見ることはありません。もし興味があれば、Bash の man ページを見てください。)プロンプトを変えるには、PS1 を変えます。 実験してみるには、PS1 の文字列を直接プロンプトのところで変えてみて 下さい。結果がすぐに表れるでしょう。 (この変化は現在の環境を変えるだけで、ログアウトすれば なくなってしまいます。) もしプロンプトを永久に変えたければ、 /.bashrc に PS1 の新しい定義を 置いて下さい。もし、ルート権限を持っているなら、/etc/profile ファイルの 中の"PS1="の行を変えます。Linux のディストリビューションの種類に よっては(RedHat 5.1ではそうですが)/etc/bashrc が PS1 と PS2 の設定を 変えますので、注意してください。

Filed under  //   bash   prompt  

Comments [0]

Bash Prompt HOWTO: BashとBashのプロンプト

2.5 Bashプロンプトのエスケープシーケンス

Bash には、プロンプトで使えるエスケープシーケンスが沢山あります。 Bash 2.02 の man ページをみると、

対話型で実行される時には、bash はコマンド待ちの状態で、一次
プロンプトの PS1 を表示し、コマンドを完成するのにさらに入力が
必要な時には二次プロンプトの PS2 を表示します。bash ではバック
スラッシュでエスケープした文字を挿入することにより、プロン
プトを修飾することができます。その意味は次のとおりです。
       \a     ASCII のベル文字 (07)
       \d     "曜日 月 日"のフォーマットによる日付け
              (例 "Tue May 26")
       \e     ASCII のエスケープ文字 (033)
       \h     最初の"."のところまでのホスト名
       \H     ホスト名
       \n     改行
       \r     復帰
       \s     シェル名、$0 のベース名
              (最後のスラッシュの後ろの部分)
       \t     24時間制の HH:MM:SS のフォーマットによる時間
       \T     12時間制の HH:MM:SS のフォーマットによる時間
       \@     am/pm をつけた12時間制のフォーマットによる時間
       \u     現ユーザーのユーザー名
       \v     bash のバージョン(例 2.00)
       \V     bash のリリース番号、バージョンとパッチレベル
              (例 2.00.0)
       \w     現在のディレクトリ
       \W     現在のディレクトリのベース名
       \!     現在のコマンドのヒストリー番号
       \#     現在のコマンドのコマンド番号
       \$     UIDが0なら#、そうでなければ$
       \nnn   8進数nnnに対応する文字
       \\     バックスラッシュ
       \[     表示されない文字列の開始。端末制御シーケンスを
              プロンプトに埋め込む。
       \]     表示されない文字列の終り。

Filed under  //   bash   prompt  

Comments [0]

bashのプロンプトを変更するには

 bashのプロンプトには、以下のような特殊な文字を使用できる。これらを組み合わせれば、オリジナルプロンプトも作成可能だ。

\a ASCIIのベル文字(07)を表示する(ビープ音を鳴らす)
\d 「曜 日 月 日」の形式(例:Fri Jan 5)で日付を表示する
\e ASCIIのエスケープ文字(033)を表示する
\h ホスト名のうち最初の「.」までの部分を表示する
\H ホスト名を表示する
\n 改行する
\r 復帰する
\s シェルの名前を表示する
\t 現在の時刻を24時間の「HH:MM:SS」形式で表示する
\T 現在の時刻を12時間の「HH:MM:SS」形式で表示する
\@ 現在の時刻を12時間の「am/pm」形式で表示する
\u 現在のユーザー名を表示する
\v bashのバージョンを表示する
\V bashのリリースを表示する
\w 現在の作業ディレクトリを、ユーザーのホームディレクトリからの絶対パスで表示する
\W 現在の作業ディレクトリを表示する
\! このコマンドの履歴番号を表示する
\# このコマンドのコマンド番号(現在のシェルのセッション中に実行されたコマンドのシーケンスにおける位置)を表示する
\$ 実効UIDが0の場合に#となり、それ以外の場合に$となる
\nnn 8進数nnnに対応する文字を表示する
\\ バックスラッシュを表示する
\[ 非表示文字のシーケンスを開始する。これを使って、プロンプト中に端末の制御シーケンスを埋め込むことができる
\] 非表示文字のシーケンスを終了する

普段使わないからな。。。

Filed under  //   bash   prompt  

Comments [0]