Bash的用户交互接口


Bash的用户接口也就是我们经常说的字符界面,这是我们与系统交互的主要环境,我们可通过这个接口管理我们的系统。在系统引导时,第一个需要运行的进程是init,由init再衍生出一个getty终端进程,该进程打开一个终端窗口,提供标准输入、标准输出和标准错误。然后执行程序/bin/login,login程序提示输入密码,加密并验证密码。通过验证后系统进入登录shell,也就是bash。不同的登录shell可在passwd文件设置。bash会通过几个配置文件来初始化用户环境。首先bash会查找/etc/profile,并执行其中的命令,初始化系统级别环境。然后在用户目录下查找.bash_profile文件,并执行里d面的命令,初始化用户级别的环境。用户级别的设置可覆盖系统级别设置。最后会执行.bashrc用户环境设置文件,这时,默认提示符美元符号将显示在屏幕上。

2.1.1. 环境变量

进入bash后,系统可根据你的配置生成一系列的环境变量,这些环境变量可用export命令显示。下面是一些常的环境变量:

  • $LOGNAME,当前登录的用户名。

  • $HOME,当前用户的主目录。

  • $PATH,当前用户的命令搜索路径。

  • $LANG,当前系统的语言环境。

  • $TZ,时区

  • $MAILCHECK,检查新邮件的间隔,单位是秒。

  • $PS1,命令行提示符。

  • $PS2,二级命令行提示符,也就是当你的命令行很长,在一行写不下,转到第二行时出现的提示符。

  • $PWD,当前目录。

2.1.2. 目录操作

Linux以树状结构组织文件和目录,目录可以包含文件,也可以包含其它目录。目录的最高层是根目录"/",其它所有文件和目录都是挂在根目录下,形成一个倒挂的目录树。

使用bash shell的cd命令可在目录树中移动,当前停留的位置叫工作目录或当前目录,可用"."表示。每个用户在/home目录下都有一个与用户名相同的目录,叫用户主目录。可用"~"符号表示,".."表示上一级目录。

jims@localhost:~$ #位于jims用户的主目录 jims@localhost:~$ cd . jims@localhost:~$ #没变化 jims@localhost:~$ cd .. jims@localhost:/home$ #移动到上层目录 jims@localhost:/home$ cd ~ jims@localhost:~$ #回到用户主目录 jims@localhost:~$ pwd #显示当前目录 /home/jims

2.1.3. 通配符

在bash shell环境下,我们可用通配符来简化命令输入。

  • ?,匹配任意单个字符。

  • *,匹配任意字符串。

  • [set],匹配set中的任意字符。[!set]是取反操作,匹配不在set中的任意字符,如:

    [a-z] 匹配所有小写字符 [0-9] 匹配所有数字 [akz] 匹配a,k,z三个字符 [.,;] 匹配句点,逗号和分号 [!abc] 匹配除a,b,c之外的所有字符

下面是几个命令示例:

jims@localhost:~$ ls *.py #显示当前目录下所有以.py结尾的文件 jims@localhost:~$ ls *.[cho] #显示当前目录下所有以c,h,o结尾的文件 jims@localhost:~$ ls ??? #显示所有文件名为三个字符的文件

大括号"{}"可用于扩展任意字符串,如:

localhost:~/python# echo a{a,b,c}a aaa aba aca

我们也可用大括号做为通配符使用,如:

jims@localhost:~$ ls *.{c,h,o} #效果同ls *.[cho]

2.1.4. 输入/输出

常用数据过滤命令

  • cat,将输入复制到输出。cat是"catenate"的缩写,是连接在一起的意思。

  • grep,从输入中检索字符串。

  • sort,对输入进行排序。

  • cut,从输入中抽取列。

  • sed,对输入进行编辑。

  • tr,对输入进行转换或删除操作。

使用"<"和">"可实现I/O重定向功能,如:

$ ls > filename #输出重定向到filename文件,也就是生成一个filename文件,内容为ls命令执行的结果。 $ grep < filename #grep的命令参数从filename文件读取。

使用"|"可实现管道(pipeline)操作,管道操作可以把一个命令的输出重定向到另一个命令的输入,而不是文件,如:

$ ls -l | more #先进行ls -l操作,再对操作结果进行more操作

2.1.5. 后台作业

bash shell允许在一个会话期间同时运行多个命令,正常情况下所有命令在前台运行。只有在一个命令运行完后才能输入一个命令。但如果我们在运行命令时在命令后加一个"&"符号,则该命令将转入后台运行,我们马上获得shell终端控制权,可输入另外一条命令。这种在后台运行的命令叫后台作业。后台作业主要用在一些需花很长时间来运行的命令上,如解压一个大的压缩文档。

$ tar zxvf xen.tar.gz& [1] 2547

使用jobs命令可以查看后台作业状态。

2.1.6. 特殊字符

在bash中,有很多有特殊含义的特殊字符,下面是一个完整的列表:

Table 2.1. 特殊字符

字符含义
~ 主目录
` 命令替换
# 注释
$ 变量表达式
& 后台作业
* 字符通配符
( 启动子shell
) 停止子shell
  转义或续行
| 管道操作符
[] 通配符集
{} 命令块
; shell命令分隔符,作用是可在一行输入多条shell命令。
' 强引用,引号内所有内容保持字面意思。
" 弱引用,引号内某些内容保持字面意思。
< 输入重定向
> 输出重定向
/ 路径分隔符
? 通配符,匹配单个任意字符
! 取反操作

2.1.7. 控制键

通过控制键可以控制shell的行为,下面是一些常用的控制键。

Table 2.2. 控制键

控制键描述
Ctrl_C 中止当前命令
Ctrl_D 输入结束
Ctrl_ 如果Ctrl_C无效,则中止当前命令
Ctrl_S 禁止屏幕输出
Ctrl_Q 开启屏幕输出
DEL或CTRL_? 删除最后的字符
Ctrl_U 删除整个命令行
Ctrl_Z 暂停当前命令

2.2. 常用变量

变量是随系统运行而变化的,灵活使这些变量可简化我们的操作和更好地控制bash shell的行为。

$# 脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的进程ID号 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数 $- 显示shell使用的当前选项,与set命令功能相同 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 $0 脚本名称 $1..$9 第N个参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值