bash shell-linux的预设shell
lovejobs 人气:01.bash 是GNU 计划中重要的工具软件之一,目前也是Linux distributions 的标准shell。其主要功能如下:
(1)命令记忆和历史功能,可以通过history查询,存储位置在~/.bash_history
(2)命令和文件补全功能,按tab键
(3)给命令取一个别名:alias
(4)工作控制、前景背景控制job control, foreground, background
(5)(程序化脚本: (shell scripts))
以前在DOS 底下需要程序语言才能写的东西,在Linux 底下使用简单的shell scripts 就
可以帮你达成
(6)通配符Wildcard,*就是其中一个
2.查询指令是否为Bash shell 的内建命令: type
type [-tpa] name
选项与参数:
:不加任何选项与参数时,type 会显示出 name 是外部指令还是 bash 内建指令
-t :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义:
file :表示为外部指令;
alias :表示该指令为命令别名所设定的名称;
builtin :表示该指令为 bash 内建的指令功能;
-p :如果后面接的 name 为外部指令时,才会显示完整文件名;
-a :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias
3.命令较长,一行写不完时,可以使用\+Enter调到下一行继续输入
4.shell的变量功能
变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据!
(1)变量的取用与设定:echo $变量名, 变量设定规则, unset
(2)给变量赋值=
(3)变量的设定
变量的设定规则
1. 变量与变量内容以一个等号 = 来连结,如下所示:
myname=hui
2. 等号两边不能直接接空格符,如下所示为错误:
myname = hui 或 myname=hui bo
3. 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:
2myname=hui
4. 变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来,但
o 双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:
『var="lang is $LANG"』则『echo $var』可得『lang is zh_TW.UTF-8』
o 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:
『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』
5. 可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符,如:
『myname=hui\ sai』
6. 在一串指令的执行中,还需要藉由其他额外的指令所提供的信息时,可以使用反单引号『`指令`』或 『$(指
令)』。特别注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号! 例如想要取得核心版本
的设定:
『version=$(uname -r)』再『echo $version』可得『3.10.0-229.el7.x86_64』
7. 若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如下所示:
『PATH="$PATH":/home/bin』或『PATH=${PATH}:/home/bin』
8. 若该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量:
『export PATH』
9. 通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断 (纯粹依照使用者兴趣与嗜好) ;
10. 取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的设定:
『unset myname』
什么是『子程序』呢?就是说,在我目前这个shell 的情况下,去启用另一个新的shell ,新的那个
shell 就是子程序啦!在一般的状态下,父程序的自定义变量是无法在子程序内使用的。但是透过
export 将变量变成环境变量后,就能够在子程序底下应用了
(4)进入到您目前核心的模块目录?cd /lib/modules/`uname -r`/kernel
(5)取消刚刚设定的 name 这个变量内容
(6)单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号
(7)查看内核版本uname -r
欢迎加入c和c++交流群:
加载全部内容