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

2015/04/11

コマンド編集

bashのコマンド編集で使えるキー

ヒストリー機能を使って以前に実行したコマンドを再利用できます。このとき、一部コマンドを打ち直したいことがあります。bashシェルでは、コマンドラインでの編集が使えます。
コマンドラインでの編集で使えるキー設定はemacsと同じものです。

キーは、メタキーが設定されています。
C- CTRLキー
M- ESCキー(私のPCの場合)

以下、manからの抜粋

  移動コマンド
       beginning-of-line (C-a)
              行の先頭に移動します。
       end-of-line (C-e)
              行の末尾に移動します。
       forward-char (C-f)
              1 文字進みます。
       backward-char (C-b)
              1 文字戻ります。
       forward-word (M-f)
              次の単語の最後に進みます。単語は英数字 (文字と数字) からなります。
       backward-word (M-b)
              現在の単語あるいは前の単語の先頭に戻ります。単語は英数字 (文字と
              数字) からなります。
       clear-screen (C-l)
              現在の行を画面の一番上の行に残したまま、画面をクリアします。引き
              数を付けると、画面をクリアせずに現在の行を再描画します。

   キルとヤンク
       kill-line (C-k)
              ポイントから行末までのテキストをキルします。
       backward-kill-line (C-x Rubout)
              現在のカーソル位置から行頭までをキルします。
       unix-line-discard (C-u)
              ポイントから行頭までをキルします。キルされたテキストはキルリング
              (kill-ring) に入ります。

2011/09/18

ファイル名メタキャラクタ

ファイル名メタキャラクタ
bashでファイル名、ディレクトリ名を展開するときに使用するメタキャラクタ(文字)

*
0文字以上の任意の文字

?
任意の1文字

[abc...]
括弧内の1文字(abc..)に一致、「-」も使用可能([a-z],[A-Z],[0-9]など)

[!abc...]
括弧内の1文字(abc..)以外、正規表現の[^abc...]との違いに注意

|
or どちらかのパターンに一致

その他、シェル変数の表現
~+
現在のディレクトリ、シェル変数「PWD」

~-
直前のディレクトリ、シェル変数「OLDPWD」

2011/09/01

bashの履歴機能、直前のコマンドを参照して実行

直前のコマンドを参照して実行
履歴機能を使えば直前のコマンドを参照して実行することが出来ます

コマンドの履歴を見たいときはhistoryコマンドを使って下さい。

コマンドを実行していて、よく直前のコマンドを参照したいことがあります。
例えばviでファイルを編集し、そのあと内容を確認する場合、以下の作業になります。

例 ファイルを編集したあと、内容を確認
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ cat tmp.txt
123

ここで、履歴機能をつかうと、このようになります。

[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ cat !!^
cat tmp.txt               # 最初にファイル名の置換機能が働いて展開されたものが表示されます
123

ここでは、ファイル名や、パスが短いので大した違いはありませんが、ファイル名やパス名が長かったり複雑な場合はタイプミスの原因になります。

履歴機能を使ったコマンドの解説
!! 直前のコマンド
^ 最初のパラメータ
!!:1 直前のコマンドの1番目のパラメータ(こちらの記述でもいい)

パラメータを引き継ぐもう一つの例(直前のコマンドの最後の引数を引き継ぐ)
[user@localhost tmp]$ ls -la tmp.txt
-rw-rw-r--   1 user user   10  8月 21 23:25 2011 tmp.txt
[user@localhost tmp]$ vi !$  
履歴機能を使ったコマンドの解説
!$ 直前のコマンドの最後の引数
!!:2 直前のコマンドの2番目のパラメータ(こちらの記述でもいい)


さらにもう一つの例として、viで編集したけど、終了してからもう一度編集をしたくなったとき,コマンドを打ち直してもいいのですが、履歴機能も使えます。
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ vi tmp.txt

上記と同じ働き
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ !!        # 直前のコマンドを実行
もちろん「↑」キーでコマンドを呼び出すこともできますが、「!」キーならキーボードのホームポジションから手を離すことなく打つことが出来ます。

2011/08/25

bash

bash
bash(Bourneアゲインシェル)は、KornシェルとCシェルの機能を取り込んでいます。
さらに、KornシェルはBourneシェルの機能が取り込まれています。

CentOSでは、標準のログインシェルはbashです。
現在のシェルを知る方法
[user@localhost ~]$ ps
  PID TTY          TIME CMD
 7197 pts/1    00:00:00 bash
 7225 pts/1    00:00:00 ps

bashのプロンプト

bashのプロンプト
bashのプロンプトについて

telnetで接続したときの端末画面では、bashのシェルによりコマンドの入力を受け付けられるようになっています。
このコマンド入力待ちの表示がプロンプトです。

[user@localhost ~]$ id 
uid=500(user) gid=500(user) 所属グループ=10(wheel),500(user) 
[user@localhost ~]$ pwd 
/home/user 

プロンプトは、一般ユーザと、rootユーザでは異なっています。

[root@localhost ~]# id 
uid=0(root) gid=0(root) 所属グループ=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) 
[root@localhost ~]# pwd
/root 

一般ユーザでは「#」、rootユーザでは「#」が使われます。
linuxでは、どのユーザで作業しているか常に意識しましょう。

また、bashのプロンプトは環境変数PS1に設定されています。
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
特殊記号の意味は、以下の通りです。
\u ユーザ名
\h ホスト名
\W カレントディレクトリ
\$ rootユーザなら「#」一般ユーザなら「$」

その他有用なもの
\w カレントディレクトリ(フルパス)
\d 日付
\t 時刻
\! ヒストリ番号

2011/08/21

bashのhelp

bashのhelp
bashのhelpコマンド

一般ユーザがtelnet接続でログインしているとき、ユーザからのコマンド入力を処理しているものはシェルと呼ばれています。
ここで使用しているのはbashシェルですが、centosに限らずbashには、helpコマンドがありbashの組み込みコマンドが表示できます。
manコマンドでもいいのですが、簡単なことの確認ならhelpコマンドで確認可能です。
日本語にはなっていませんが簡単なので理解できるのではないでしょうか。

[user@localhost ~]$ help
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 JOB_SPEC [&]                       (( expression ))
 . filename [arguments]             :
 [ arg... ]                         [[ expression ]]
 alias [-p] [name[=value] ... ]     bg [job_spec ...]
 bind [-lpvsPVS] [-m keymap] [-f fi break [n]
 builtin [shell-builtin [arg ...]]  caller [EXPR]
 case WORD in [PATTERN [| PATTERN]. cd [-L|-P] [dir]
 command [-pVv] command [arg ...]   compgen [-abcdefgjksuv] [-o option
 complete [-abcdefgjksuv] [-pr] [-o continue [n]
 declare [-afFirtx] [-p] [name[=val dirs [-clpv] [+N] [-N]
 disown [-h] [-ar] [jobspec ...]    echo [-neE] [arg ...]
 enable [-pnds] [-a] [-f filename]  eval [arg ...]
 exec [-cl] [-a name] file [redirec exit [n]
 export [-nf] [name[=value] ...] or false
 fc [-e ename] [-nlr] [first] [last fg [job_spec]
 for NAME [in WORDS ... ;] do COMMA for (( exp1; exp2; exp3 )); do COM
 function NAME { COMMANDS ; } or NA getopts optstring name [arg]
 hash [-lr] [-p pathname] [-dt] [na help [-s] [pattern ...]
 history [-c] [-d offset] [n] or hi if COMMANDS; then COMMANDS; [ elif
 jobs [-lnprs] [jobspec ...] or job kill [-s sigspec | -n signum | -si
 let arg [arg ...]                  local name[=value] ...
 logout                             popd [+N | -N] [-n]
 printf [-v var] format [arguments] pushd [dir | +N | -N] [-n]
 pwd [-LP]                          read [-ers] [-u fd] [-t timeout] [
 readonly [-af] [name[=value] ...]  return [n]
 select NAME [in WORDS ... ;] do CO set [--abefhkmnptuvxBCHP] [-o opti
 shift [n]                          shopt [-pqsu] [-o long-option] opt
 source filename [arguments]        suspend [-f]
 test [expr]                        time [-p] PIPELINE
 times                              trap [-lp] [arg signal_spec ...]
 true                               type [-afptP] name [name ...]
 typeset [-afFirtx] [-p] name[=valu ulimit [-SHacdfilmnpqstuvx] [limit
 umask [-p] [-S] [mode]             unalias [-a] name [name ...]
 unset [-f] [-v] [name ...]         until COMMANDS; do COMMANDS; done
 variables - Some variable names an wait [n]
 while COMMANDS; do COMMANDS; done  { COMMANDS ; }

また、オプションの問い合わせも可能です。
例えば、aliasについてhelpコマンドは以下の通りです。

[user@localhost ~]$ help alias
alias: alias [-p] [name[=value] ... ]
    `alias' with no arguments or with the -p option prints the list
    of aliases in the form alias NAME=VALUE on standard output.
    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.  Alias returns
    true unless a NAME is given for which no alias has been defined.