1 export 命令
export 不接参数,则把当前系统的环境变量给显示出来
export 接参数,则把此变量作为环境变量,使得父进程的变量,子进程可以沿用,而无需重复设置。
2 read变量键盘读取
参数选项:
-p: 接提示符
-s: 接等待描述,不会一直死等用户输入
[root@localhost ~]# read -p "please specify a path:" -t 5 path_link please specify a path:/opt/nicky [root@localhost ~]# echo $path_link /opt/nicky [root@localhost ~]# read -p "please specify a path:" -t 5 path_links please specify a path:[root@localhost ~]# |
3 array数组
4 declare一般用于声明变量,如果后面没有接任何参数,那么就和set命令类似,会把所有变量名称全部调出来
参数选项:
-a: 将变量定义成数组
-i: 将变量定义成整形数字
-x:将变量定义成环境变量
-r: 变量设置成readonly
[root@localhost ~]# declare -i sum=1+2+5 [root@localhost ~]# echo $sum 8 |
5 ulimit 限制对计算机资源的使用
-a: 列出限制的所有的限制
-f: 该shell可以创建最大的文件数
-t: 可以使用的最大CPU时间
-u: 单一用户可以使用的最大进程
[root@localhost ~]# ulimit -f 1024 //最大创建1024个文件 |
6 alias unalias别名
alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' |
7 history查看历史命令
参数选项:
n: 列出最近执行的n条命令
-w: 将目前的history记录写入histfile文件
8: bash 的环境配置文件
Login shell: 取得bash时需要完整的登录流程,及一般泛指需要输入账号和密码才可以登录,此时取得的bash叫做login shell
Non-Login Shell: 登录时不需要输入用户名和密码
这两种取得的配置文件不一样:
Login shell: /etc/profile 或者/~/.bash_profile or ~/.bash_login or ~/.profile。
/etc/profile: 设置一些整体的环境,现在包括一些PATH,MAILUSER,HISTSIZE 等变量。
./bash_profile: bash在读完了整体环境设置的/etc/profile,接下里会读取用户的个人配置文件,如果只要这个文件存在,其他两个存不存在都不会被读取,如果不存在才读取./bash_login,
如果/etc/profile已经有的变量,在./bash_profile也出现了,则会进行累加。
Bash 配置文件的读取是通过source命令来读取的
[root@localhost ~]# source ~/.bashrc |
我们知道. 也可以将shell 脚本
9: 正则通配符
*: 0个或多个任意字符 ?: 一定有一个任意字符 []: 一定有一个中括号内的字符 [a-z]: 代表编码顺序内所有字符,a-z任意的一个字符 [^abc]:非a b c 的任意字符 |
10: bash环境的特殊符号
#:注释
~:用户主目录
|:管道
\: 转义
/: 路径分割符号
$: 变量前导符
> >>: 数据重定向,输出导向,分别是替换和累加
< <<: 输入导向
‘’: 单引号不具备变量替换的功能,作为普通字符
“”:可以替换变量
():中间为子shell的其实和结束
{}:命令快的组合
11 数据流重定向
标准输出:命令执行完毕后,命令结果一般是显示在屏幕上
标准输入:读取键盘的输入
标准输入(stdin): 代码为0,使用 < 或者 <<
标准输出(stdout):代码为1 使用> 或者 >>
标准错误输出(stderr): 代码为2,使用2> 或者 2>>
/dev/null: 垃圾桶黑洞:将数据丢弃,一般清空文件可以用这个方法
[root@localhost nicky]# ls -al > new.txt [root@localhost nicky]# ls -lrt >> new.txt [root@localhost nicky]# cat /dev/null > new.txt #清空文件 通过cat 来输入内容 [root@localhost nicky]# cat > new.txt << "eof" > asasasa > eof [root@localhost nicky]# cat new.txt asasasa |
12: 管道命令(pipe)
管道命令仅仅是针对输出;且必须接收前一个命令
选取 命令:从一行中截取我们想要的
Cut: 处理的信息是以行为单位
格式: cut –d ‘分割字符’ –f fields
cut –c ‘字符范围’
取得第五个分割字符: [root@localhost nicky]# echo $PATH | cut -d ':' -f 5 取得第三-五个分割字符: [root@localhost nicky]# echo $PATH | cut -d ':' -f 3,5 取得第12字符以后所有字符 [root@localhost nicky]# echo $PATH | cut -c 12- qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin |
选取命令:grep 分析一行信息,如果改行有我们所需要的信息,就将该行取出来
命令格式:grep [options]‘要查找的字符串’ filename
参数选项:
-c: 计算找到字符串的次数
-i: 忽略大小写
-n: 顺便输出行号
[root@localhost nicky]# ps -ef| grep nginx |
13:sort 排序
命令格式:sort [options][文件或者输入]
参数选项:
-f: 忽略大小写
-M:按月份来排序
-n: 使用纯数字排序
-r: 反向排序
-u: 相同的数据仅出现一行
-t;分割符号,默认是tab键盘
[root@localhost nicky]# cat /etc/passwd | sort –fr |
14: 双向重定向 tee
比如我在查询的时候使用管道命令,但是我想将一部分存到文件:
命令格式: tes [-a] file
参数选项:
-a: 追加
[root@localhost nicky]# ls -l | tee -a new.txt | more |
15: 字符转换命令
tr: 可以删除一段文字信息或者进行文字信息的替换
命令格式:td [options]string
参数选项:
-d: 删除字符串中string字符串
-s: 替换掉重复的字符
[root@localhost nicky]# last | tr '[a-z]' '[A-Z]' [root@localhost nicky]# cat /etc/passwd | tr -d '\r' > /opt/nicky/new.txt |
Paste: 将两段站在一起
[root@localhost nicky]# paste /etc/passwd /etc/shadow |