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) に入ります。
2015/04/11
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.
登録:
投稿 (Atom)