Shell脚本
Alias 别名
也可以定义命令别名: 针对用户
备注:此命令可以永久定义命令别名,在里面填写
通配符
*用来匹配零个或多个字符
匹配1开头的所有字符
匹配。Txt结尾的所有字符
?用来匹配一个字符
重定向
输出重定向
追加重定向
错误重定向, 2>
错误追加重定向
输出错误日志与正确日志分开
管道符 把前边命令结果丢给后边
作业控制
Ctrl+z 暂停 fg可恢复vi窗口继续运行
Shell
!!:表示执行上一条命令
[root@ns1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
。。。
[root@ns1 ~]# !!
cat /etc/passwd //会显示上一次的命令是什么
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
!$:表示上一条命令的最后一个参数
[root@ns1 ~]# cd !$
cd /etc/passwd //显示当前执行的命令
-bash: cd: /etc/passwd: 不是目录
!*:*表示字母,寻找历史命令中,以某个字母开头的最近命令
[root@ns1 ~]# !c
cd /etc/passwd
-bash: cd: /etc/passwd: 不是目录
错误重定向:
[root@ns1 ~]# ls zyg
ls: 无法访问zyg: 没有那个文件或目录
[root@ns1 ~]# ls zyg > err.log
ls: 无法访问zyg: 没有那个文件或目录
[root@ns1 ~]# cat err.log
[root@ns1 ~]# ls zyg 2> err.log
[root@ns1 ~]# cat err.log
ls: 无法访问zyg: 没有那个文件或目录
错误追加重定向:
[root@ns1 ~]# ls zyg 2>> err.log
[root@ns1 ~]# ls zyg 2>> err.log
[root@ns1 ~]# cat err.log
ls: 无法访问zyg: 没有那个文件或目录
ls: 无法访问zyg: 没有那个文件或目录
ls: 无法访问zyg: 没有那个文件或目录
jobs:查看后台Stopped的任务
fg:将后台任务调至前台
bg:将前台任务调至后台
Shell变量
$PATH:系统的环境变量
[root@ns1 ~]# a=1 //定义变量a
[root@ns1 ~]# echo $a
1
[root@ns1 ~]# a=0 //改变a的值
[root@ns1 ~]# echo $a
0
备注:自定义变量尽量写为小写,系统变量为大写,防止用户把系统变量与用户自定义变量搞混
Env
env:查看系统变量
[root@ns1 ~]# env
HOSTNAME=ns1.zyg
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=172.16.1.65 49529 22
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
。。。
[root@ns1 ~]# echo $LANG
zh_CN.UTF-8
[root@ns1 ~]# LANG=en
[root@ns1 ~]# ls zyg
ls: cannot access zyg: No such file or directory
备注:由中文提示,变为英文
[root@ns1 ~]# LANG=zh_CN.UTF-8
[root@ns1 ~]# ls zyg
ls: 无法访问zyg: 没有那个文件或目录
定义变量的时候。变量名不加$
变量名命名原则
首个字符必须是字母
中间不可以有空格,可以有下划线
不能用标点符号
Shell字符串
单引号 :单引号里的任何字符都会原样输出,不可以有变量
双引号:可以有变量,转义符
Shell注释
#开头就是注释
set:查看所有的系统变量以及用户自定义变量,比env多
[root@ns1 ~]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
。。。
[root@ns1 ~]# com=ls /root //变量不能直接赋值
-bash: /root: is a directory
[root@ns1 ~]# com='ls /root' //使用双引号也是可以的
[root@ns1 ~]# echo $com
ls /root
[root@ns1 ~]# com2="$com: ls" //$加变量,替换出其中变量的值
[root@ns1 ~]# echo $com2
ls /root: ls
[root@ns1 ~]# b=$a:123
[root@ns1 ~]# echo $b
1:123
[root@ns1 ~]# b=$a123 //变量名后不能直接跟常量,需要加引号
[root@ns1 ~]# echo $b
[root@ns1 ~]# b=$a"123" //
[root@ns1 ~]# echo $b
1123
unset:删除变量
history -c:删除命令历史
.bash_history:清空命令历史
vim /etc/profile:定义了各种循环及变量
全局变量
[root@ns1 ~]# echo $PS1
[\u@\h \W]\$
[root@ns1 ~]# cd /etc/init.d/
[root@ns1 init.d]# PS1="[\u@\h \w]\$" //改变当前的显示路径
[root@ns1 /etc/init.d]$PS1="[\u@\h \w]\\$" //将$改为#
[root@ns1 /etc/init.d]#PS1="[\u@\h \w \t]\\$" //增加显示时间
[root@ns1 /etc/init.d 10:45:04]#PS1="[\u@\h \W \t]\\$"
[root@ns1 init.d 10:45:11]#cd
[root@ns1 ~]#cut -d: -f 3 /etc/passwd | sort
0
1
10
11
12
13
14
16
173
2
[root@ns1 ~]#cut -d: -f 3 /etc/passwd | sort -n
0
1
2
3
4
5
6
7
8
10
11
12
13
14
16
29
[root@ns1 ~]#head /etc/passwd | sort -t':' -k5,10
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
[root@ns1 ~]#head /etc/passwd | sort -t':' -k3,10
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@ns1 ~]#head /etc/passwd | sort -t':' -k3,5 -n /由小到大
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
[root@ns1 ~]#head /etc/passwd | sort -t':' -k3,5 -r //由大到小
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sort -u:可以把重复的变为一个显示
[root@ns1 ~]#head -2 /etc/passwd | tr 'a-z' 'A-Z'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN