没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
《计算机软件基础》多媒体教程
第五讲
第一章 UNIX 操作系统
1.7 Bash shell
Bash shell 简称 Bash。由于所有 B shell 的规范和程序都可以在 Bash 中使用,因此本
节主要介绍 Bash 中增加的一部分常用的功能。
凡是在 B shell 或者 C shell 中也能适用的地方,将用“【注】”的形式给予说明。Bash 扩
展或者新增的内容包括:
※ 命令行扩展功能
※ 工作目录栈
※ 标准输入输出定向
※ Bash变量
※ Bash命令语句
※ Bash控制结构
※ 函数
1.7.1 命令行扩展功能
※ 命令行编辑
在 bash 中,可以用上下箭头键(↓和↑)来查看过去的命令,以便再次执行命令,或者
修改命令行的内容后执行新的命令。例如:
$ find□/usr□-name□csh 在/usr 目录中查找 csh
$ 没有找到,无显示。
此时可以使用向上箭头键↑,以显示上一条命令,即:
$ ↑ 将显示
$ find□/usr□-name□csh
然后再用左右箭头键(→ 和←)在命令行中移动,用回退键<BS> (Backspace)删除字符,
键入新的字符,改为:
$ find□/bin□-name□csh<CR> usr 被改为 bin,执行
/bin/csh 在/bin/csh 下找到 csh
可以在执行了若干条命令后再向上查看过去的命令,而不局限于查看刚刚执行过的命
令,只是需要多按几次向上箭头键↑,如果过头了,则再按向下箭头键↓直到找到为止。
※ 命令行自动完成
Bash 提供命令行自动完成(command-line completion)功能,即在键入命令时,可以使
用制表符<TAB>帮助用户自动完成命令或者自动完成文件名,或者称为命令或目录/文件名
的自动补齐。
⊙ 命令的补齐
当键入命令的前几个字符时,按<TAB>键,Bash 会根据系统中确实存在的命令给予补
齐。例如,命令 switchdesk 的功能是切换面板(panel),但是字符数较多,可利用这一功能
来补齐命令:
$ swi<TAB> <TAB>是一个键符,不显示
当键入字符 swi 后按<TAB>键,Bash 会自动将命令补齐,立即显示:
$ switchdesk 后续字符 tchdesk 是自动补齐的
⊙ 命令行刷新
有时候因为误按了某些功能键(例如小键盘上的键) ,造成在命令行出现一些乱码。例
如,出现以下的命令行:
$ cp shell/check?□?>□/□□.c??/
可按^C 中止命令,然后重新键入命令。如果已经键入的字符较多,而且又不愿意重新
键入的话,可使用^R 来刷新当前键入的字符。例如此时按^R,则显示:
$ cp shell/checkproj/a
将刷新显示实际有效的输入,因为原来的 proj/a 被乱码盖住了。
【注】在B shell、C shell和Bash中都可以使用命令行刷新的功能,用^R来刷新当前键入的
字符。
⊙ 目录/文件名的补齐
echo、ls、cd、cp 和 mv 等命令的参数是目录或者文件,当键入目录/文件名的前几个
字符时,按<TAB>键,Bash 会根据系统中确实存在的目录/文件名给予补齐。
【例1-21】目录/文件名补齐示例
$ ls
a.out c shell 假设 c 和 shell 是目录
$ ls shell
proj1 proj2 proj.c projtest.c shell 下有四个文件
$ ls s<TAB> 在 ls s 后按<TAB>, 将补齐为 shell
$ ls shell<CR> 按回车键<CR>后执行命令
proj1 proj2 proj.c projtest.c
$ vi s<TAB> 在 vi s 后按<TAB>, 将补齐为 shell
$ vi shell/p<TAB> 继续键入/p,再按<TAB>
$ vi shell/proj 可匹配到 proj
$ vi shell/projt<TAB> 继续键入 t,再按<TAB>
$ vi shell/projtest.c<CR>
可匹配到 projtest.c,再按回车,将执行命令 vi src/projtest.c。
1.7.2 工作目录栈
※ 什么是工作目录栈
cd 命令的功能是改变当前的工作目录,但是如果需要在数个目录中频繁地来回切换,
仅用 cd 命令就显得不很方便。Bash 设置了一个工作目录栈,允许引用栈中的目录,以便
方便地切换目录。
※ 工作目录栈
工作目录栈的作用是从栈底向栈顶依次存入目录,从栈顶向栈底依次取出目录。而且
总是将栈顶目录作为当前目录。
工作目录栈命令:
pushd [
目录
] 将当前目录或者
目录
放入工作目录栈
popd 从工作目录栈中取出栈顶目录
为了简便使用,设定假名为:
$ alias pd pushd 用 pd 代替 pushd
$ alias po popd 用 po 代替 popd
【例1-22】工作目录栈应用示例
假定注册目录和当前工作目录分别为
/mnt/eejm/a01 以及/mnt/eejm/a01/shell,即有:
$ pwd 显示当前目录
/mnt/eejm/a01/shell
操作示例如下:
(1) $ pd 由于初始栈为空栈,将显示出错信息
(2) $ pd /usr/man
/usr/man /mnt/eejm/a01/shell
$ pwd 显示当前目录
/usr/man 当前目录为栈顶目录
首次使用 pd,栈中将存入两个目录:
栈底为执行 pd 命令之前的当前目录/mnt/eejm/a01/shell,栈顶为现行当前目录/usr/man。
(3) $ pd man1 再将 man1 放入栈中,则栈顶为/usr/man/man1
/usr/man/man1 /usr/man /mnt/eejm/a01/shell
$ pwd
/usr/man/man1
(4) $ pd ~ 再将~放入栈中,则栈顶为/mnt/eejm/a01
/mnt/eejm/a01 /usr/man/man1 /usr/man /mnt/eejm/a01/shell
$ pwd
/mnt/eejm/a01
(5) $ pd 没有参数,则把栈顶的两个目录互换
/usr/man/man1 /mnt/eejm/a01 /usr/man /mnt/eejm/a01/shell
$ pwd
/usr/man/man1
(6) $ po 删去栈顶目录,将栈顶下一目录作为栈顶目录
/mnt/eejm/a01 /usr/man /mnt/eejm/a01/shell
(7) $ cd /etc 栈 顶 目 录 /mnt/eejm/a01 将 改
为/etc
(8) $ pd没有参数,则把栈顶的两个目录互换
/usr/man /etc /mnt/eejm/a01/shell
(9) $ pd没有参数,则把栈顶的两个目录互换
/etc /usr/man /mnt/eejm/a01/shell
1.7.3 标准输入输出定向
※ Here Document
在许多需要标准输入的命令中,可以使用“<<”改变标准输入定向(Here Document)。
格式为:
$ command [option ...] [variable ...] << InputFromHere
input
InputsFromHere
其中,input 是用户输入的若干行文字,InputFromHere 称为分界符,是用户定义的任
何一个字符串,位于<<之后,并且必须在 input 之后再出现。其功能是该命令将把分界符
包含的 input 视为标准输入。
【注】在 B shell、C shell 和 Bash 中都可以使用“<<”的这个功能。
剩余11页未读,继续阅读
资源评论
wxg520cxl
- 粉丝: 24
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功