1.Shell在Linux系统中的位置
用户请求 Shell-->Linux内核--->硬件
2.Shell命令
(1) 历史命令 history[-raw] histfiles (默认保存1000条,可以在/etc/profile中修改)
n 列出最近使用的n条命令,包括history n
-c 将所有的history内容全部清除
-a 将目前新增的history命令j加入histfiles中,默认~/.bash_history
-r 将histfiles中的内容读到目前这个shell的history记忆中
-w 将目前的history内容读到histfiles中
[root@www~]#echo $HISTSIZE
1000
(2) 历史命令的调用
上下箭头
!n 重复执行第n条历史命令
!! 重复执行上一条指令
!coment重复执行最后一条以coment开头的命令
(3) Tab键自动补全
(4) 命令别名 alias 别名=’原命令’
输入一条alias命令后,仅在当前Shell有用
永久化方法:
1> 每次登陆自动生效:
把alias语句加到/etc/profile中
把alias加到~/.bashrc中,然后 source ~/.bashrc
2> 每一位用户都生效:
把alias语句加到/etc/bashrc最后面,然后 source /etc/bashrc
(5) 删除别名 unalias [别名]
(6) 多命令顺序执行
命令1;命令2 顺序执行
命令1&&命令2 与,命令1正确才执行命令2,否则不执行
命令1||命令2 或, 命令1不正确,命令2才执行
(7) 管道命令 命令1|命令2
例:分屏显示history内容
history|more
(8) tee [-a] file 将数据流处理过程保存下来
-a 以累加的方式,将数据加入file中,不加-a会被覆盖
例:ls –l |tee –a ~homefile|more
(9) 显示输出 echo [-ne] [字符串]
-n 不要自动换行
-e 支持\转义功能
--help 显示帮助
--version 显示版本信息
显示变量:echo${name}
反斜杠:
\a 发出警告声
\b删除前一个字符
\c 最后不加上换行符号
\f 换行但光标留在原来位置
\n 换行且光标移至行首
\r 光标移至行首,但不换行
\t 插入tab
\v 与\f相同
\\ 插入\字符
\nnn插入nnn(八进制)所代表的ASCII字符
(10) 清除变量 unset [变量名]
unset name
3.环境变量
(1) 用于所有用户进程(子进程),登录进程为父进程,pstree查看
环境变量可以设置,用户注销时这些值将丢失
变量名都是大写
必须用export导出
(2) 设置:[变量名]=value
显示: env 查看所有,echo $[变量名] 显示一个
清除: unset [变量名]
(3) 常用环境变量
HOME :代表使用者的家目录。cd~ 去到使用者的家目录或者利用cd 就可以直接回到使用者家目录了。
PS1:shell的主提示符
SHELL :目前这个环境使用的SHELL 是哪个程序?如果是bash 的话,预设/bin/bash
PWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的
HISTSIZE :这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。
ENV :这个使用者所使用的个性化环境设置文件的读取文件。
MAIL :当我们使用mail 这个指令在收信时,系统会去读取的邮件信箱文(mailbox)。
PATH :就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔,由于文件的搜寻是依序由PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。
LANG :语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF8
(4)再次登录时有效,需在文件中修改
Bash的初始化文件有:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc
/etc/profile: 存放一些全局(共有)变量,不管哪个用户,登录时都会读取该文件。通常设置一些Shell变量PATH,USER,HOSTNAME和HISTSIZE等
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
4.内部变量
$0: shell程序的名称
$?: 程序执行结果,0表示正确,其他值表示有错误
$#: 传给Shell程序的位置参数的数量
$*: 调用全部参数的单字符串,“参数1”,“参数2”……形式保存参数
$@: 显示全部参数,“参数1,参数2……”形式保存参数
$n: 第n个参数
$$: pid
例:sh hello.sh [位置参数]
5.本地变量
变量名=值
1)等号两边不可以有空格
2)取值包含空格,必须用双引号括起来
3)Shell变量可以用大小写字母,区分大小写
6.特殊符号
#:注释
$:使其后的普通字符作为变量名${}
单引号:全部原样
双引号:支持$,\,倒引号
倒引号:倒引号里是可执行命令 `pwd`
反斜杠:把特殊字符转换成普通字符
7.获取字符串长度
string="abcd"
echo ${#string} #输出4
8.提取字符串
以下实例从字符串第2 个字符开始截取4 个字符
string="runoobisa great site"
echo${string:1:4} # 输出unoo
9.Shell脚本的基本元素
1> 第一行必须是#!/bin/bash
2>#注释
3>变量
4>控制
10.Shell脚本的运行方式
1> sh ./hello.sh
2> chmod +x hello.sh
./hello.sh