情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

デモ対策:プロンプトを短くするやり方メモ このエントリーを含むはてなブックマーク

プロンプト

プロンプトとは、コマンドを入力する画面でたとえば

[user1@host1 ~]$

こんなやつですこれはbashの場合

邪魔

タイトルにデモ対策と書いてあるように、 デモを行うとき、これが邪魔になります。 どういうことかというと、プロジェクターで表示した際に読みやすくなるように文字サイズを大きくすると、必然的に1行に表示できる文字数が減ってしまい、プロンプト部分が大部分を占めてしまうからです。

だいいち、コマンドの入力・実行を見せるだけなら、詳しいプロンプトは不要です。

プロンプトを短く方法

で、どうするかというと、プロンプトの表示を一時的に設定してしまいます。

[user1@host1 ~]$ PS1="$ "

のように、変数PS1に、「$ 」を設定してあげます。すると、その実行直後からプロンプトが「$ 」になります。すっきり。

ちなみに、PS1はプライマリプロンプトを設定する変数で、PS2がセカンダリプロンプト(行継続をした場合などに利用される)を設定する変数です。

逆に、長いやつはどうやってたの?

先ほど邪魔だと言っていたプロンプトはPS1にどのように設定されていたかというと、

[user1@host1 ~]$ echo $PS1
[\u@\h \W]\$

でわかるように、「[\u@\h \W]\$」のような特殊な変数を利用して構成されていることが分かります。

PS1についてはどこに?

もはやデモに一切必要ないとは思いますが、より設定にこだわりたい場合は、bashのmanページを「PS1」で検索してみるといろいろ分かります。

PS1, PS2 などプロンプトの設定に利用できる特殊文字一覧

そのbashのmanページの「プロンプト」の章から引用しておきます。

プロンプト

対話的に動作している場合、bashはコマンドを読む込み準備ができた時にプライマリプロンプトPS1を表示し、コマンドを完成させるためにまだ入力が必要な時にセカンダリプロンプト PS2 を表示します。 bash ではこれらのプロンプト文字列カスタマイズできます。この際にはバックスラッシュでエスケープされた各種特殊文字を挿入でき、これは以下のようにデコードされます:

  • \a ASCII のベル文字 (07)
  • \d "曜日 月 日" という形式の日付 (例: "Tue May 26")
  • \e ASCII のエスケープ文字 (033)
  • \h ホスト名のうち最初の`.'までの部分
  • \H ホスト名
  • \j シェルによって現在管理されているジョブの数
  • \l シェルの端末デバイスのベース名 (basename)
  • \n 改行
  • \r 復帰
  • \s シェルの名前。つまり $0 のベース名 (最後のスラッシュ以降の部分)
  • \t 24 時間の HH:MM:SS 形式の現在の時刻
  • \T 12 時間の HH:MM:SS 形式の現在の時刻
  • \@ 12 時間の HH:MM am/pm 形式の現在の時刻
  • \u 現在のユーザのユーザ名
  • \v bash のバージョン (例: 2.00)
  • \V bash のリリース。バージョンにパッチレベルを加えたもの (例 : 2.00.0)
  • \w 現在の作業ディレクトリ
  • \W 現在の作業ディレクトリのベース名
  • \! このコマンドの履歴番号
  • \# このコマンドのコマンド番号
  • \$ 実効 UID が 0 の場合に #、それ以外の場合は $
  • \nnn 8進数 nnn に対応する文字
  • \\ バックスラッシュ
  • \[ 非表示文字のシーケンスの開始。これを使うと、プロンプト中に端末の制御シーケンスを埋め込むことができます。
  • \] 非表示文字のシーケンスを終了します。

コマンド番号と履歴番号は異なるのが普通です: コマンドの履歴番号とは履歴リスト内での位置です。履歴リストは履歴ファイルから読み込めます。 (後述の 履歴を参照) 一方コマンド番号は、現在のシェルのセッション中に実行された一連のコマンドの列における位置です。この文字列がデコードされた後、さらにパラメータ展開、コマンド置換、算術式展開、クォート削除が適用されます。展開はシェルオプション promptvars (後述の シェルの組み込みコマンドの項にある shopt コマンドの説明を参照) の値に基づいて行われます。

スポンサーサイト
Linux | コメント:0 | トラックバック:0 | 編集

Shell変更メモ(確認&変更&一覧) このエントリーを含むはてなブックマーク

いつもとちがうShell

FreeBSDにリモートでログインすると、違和感が。それは、シェルが普段使っていない「tcsh」だったからです。

今回は、tcshをbashにとりあえず変えさせてもらったときのメモtcshはとっても高性能らしいんですけどねごめんなさい。

Shellが違うと

Shellが違うと、ログインした直後に表示される文字(プロンプト)の雰囲気が違います。たとえば、bashだと

[user@host ~]$

こんな感じです。先ほど言った「tcsh」だと

>

こんだけです。とはいえ、プロンプトは設定で変えられるので確実というわけでもないです。

現在のshellの確認方法

以下のようなコマンドで確認できます。以下は、tcshの場合。

> echo $SHELL
/bin/tcsh
> echo $shell
/bin/tcsh
> echo $version
tcsh 6.17.00 (Astron) 2009-07-10 (i386-interl-FreeBSD) options
wide,nls,dl,al,kan,sm,rh,color,filec
> echo $0
-tcsh
> ps $$
  PID  TT  STAT      TIME COMMAND
44998   7  Ss     0:00.05 -tcsh (tcsh)

現在まさに使っているシェルを確認するためには、一番下の「ps $$」がおすすめ。

シェルの変え方

肝心のshellの変え方メモ。tcshからbashに変更する手順です。まず、

> which bash
/usr/local/bin/bash

で、bashの場所が分かります。そうしたら、次のようにします。

> chsh -s /usr/local/bin/bash
Password:
chsh: user information updated

これで完了しました。あとはログインし直したりすればOK。

シェル一覧

ちなみに、使えるシェルの一覧は次のようにして取得できます。

> cat /etc/shells
# $FreeBSD: src/etc/shells,v 1.5.36.1.2.1 2009/10/25 01:10:29 kensmith Exp $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/zsh
/usr/local/bin/rzsh
/usr/local/bin/bash
/usr/local/bin/rbash

今のは、FreeBSDで、CentOSでやってみたらこんな感じ。

[user@host ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh

メモ終わり。

参考資料

入門csh & tcsh詳解 シェルスクリプト入門bashbashクックブックFrom Bash to Z Shellzsh最強シェル入門

Linux | コメント:0 | トラックバック:0 | 編集
 | HOME | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。