目录
[TOC]
文件处理命令-目录处理命令
ls 显示目录/文件
- 英文原意:list
- 存放路径:/bin/list
- 执行权限:所有用户
- 选项
- -a:显示所有文件,包括隐藏文件
- -l 详细目录下文件信息显示
- -lh 显示的内容和-l是相同的,不过第5列的字节变成了相应的k或者Mb这种更符合日常习惯的
- -ld 查看目录属性
- -i 查看目录下文件以及文件的id号
mkdir 创建新目录
- 英文原意:make directories
- 存放路径:/bin/mkdir
- 执行权限:所有用户
- 选项
- -p 递归创建
touch 创建新文件
- 英文原意:touch
- 存放路径:/bin/touch
- 执行权限:所有用户
CP 复制文件或目录
- 英文原意:copy
- 存放路径:/bin/cp
- 执行权限:所有用户
- 语法:cp -rp [原文件或者目录] [目标目录] ps:直接cp [原文件或者目录] [目标目录] 只能复制文件,不能复制目录
- 选项
- -r 复制目录
- -p保留文件属性
mv 剪切文件、改名
- 英文原意:move
- 存放路径:/bin/mv
- 执行权限:所有用户
- 语法:mv [原文件或者目录] [目标目录]
rm 删除文件或目录
- 英文原意:remove
- 存放路径:/bin/rm
- 执行权限:所有用户
- 语法:rm [原文件或者目录]
- 选项
- -r 删除目录
- -f 强制执行
cat 显示短文件内容(正向列示)
- 英文原意:cat
- 存放路径:/bin/cat
- 执行权限:所有用户
- 语法:cat [文件名]
- 选项
- -n 显示行号
tac 显示短文件内容(反向列示)
- 英文原意:tac
- 存放路径:/usr/bin/tac
- 执行权限:所有用户
- 语法:tac [文件名]
more 分页显示长文件内容
- 英文原意:more
- 存放路径:/bin/more
- 执行权限:所有用户
- 语法:more [文件名]
- 空格或f : 翻页
- Enter: 换行
- q或Q: 退出
less 与more类似,可向上翻页
- 英文原意:less
- 存放路径:/usr/bin/less
- 执行权限:所有用户
- 语法:less [文件名]
- 补充
- pgup:一页一页向上翻
- 上箭头:一行一行向上翻
- /[搜索词]: 可以看到搜索的词高亮,类似网页的关键词检索。按n即可需找下一个
head 显示文件的前几行
- 英文原意:head
- 存放路径:/usr/bin/head
- 执行权限:所有用户
- 语法:head [文件名] (不主动指定会默认显示前10行)
- 选项
- -n 指定行数 例:
head -n 7 [文件名或绝对路径]
表示查看目标文件的前7行
- -n 指定行数 例:
tail 显示文件的后几行
和head类似
- 补充:
- -f:文件内容动态显示,例如当一个log文件在不断更新时打开,所看到的打开的文件也会更新
pwd 显示当前目录
- 英文原意:
- 存放路径:/bin/pwd
- 执行权限:所有用户
rmdir 删除空目录
- 英文原意:remove empty directories
- 存放路径:/bin/rmdir
- 执行权限:所有用户
搜索命令
grep 搜索指定字符串
- 语法:
grep [选项] "搜索内容" 文件名
- 选项
- -i:忽略大小写
- -n:输出行号
- -v:反向查找,即查找不包含指 定字符串的行
- –color=aoto:搜索出的关键字用颜色显示
文件处理命令-链接命令
ln 生成链接文件
- 英文原意:link
- 存放路径:/bin/ln
- 执行权限:所有用户
- 语法:ln -s [原文件] [目标文件]
- 选项:
- -s :创建软链接 例:
ln -s /etc/issue /tmp/issue.soft
。不添加本参数,则是创建的硬链接,如:ln /etc/issue /tmp/issue.hard
- -s :创建软链接 例:
- 补充:
- 软链接:类似于Windows的快捷方式 。但是删除了原文件,打开软链接,无法成功。
- 硬链接:两个文件一模一样,会自动同步更新。删除了原文件,可以成功打开。两个文件的文件号都是一样的
- 硬链接不能针对目录使用,不能跨分区
权限管理命令
文件权限
对rwx的解析
r 读权限 可以查看文件内容 可以列出目录中的内容 w 写权限 可以修改文件内容 可以在目录中创建、删除文件 x 执行权限 可以执行文件 可以进入目录 对一个文件的权限很多时候要拥有对目录的权限
chmod 改变文件或目录权限
英文原意:change the permission mode of a file
存放路径:/bin/chmod
执行权限:所有用户
语法:
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
- u: 拥有者
- g:所属组
- o:其他
- a:全部
- +:增加权限
- -:减少权限 你
- =:不管以前是什么权限,直接等于后面的权限
- ps:可以同时对ugo同时进行权限修改,只要用逗号隔开即可,例:
chmod g+w,o-x [文件或目录]
chmod [mode=421] [文件或目录]
例:chmod 777 [文件名或绝对路径]
表示 对文件进行rwxrwxrwx权限修改- r: 4
- w:2
- x: 1
- ugo的权限为相应的数值相加
选项:
- -R: 递归修改
chown 改变文件或目录的所有者
- 英文原意:change file ownership
- 存放路径:/bin/chown
- 执行权限:所有用户
- 语法: chown [用户] [文件或目录]
chgrp 改变文件或目录的所属组
- 英文原意:change file group ownership
- 存放路径:/bin/chagrp
- 执行权限:所有用户
- 语法: chogrp [用户组] [文件见或目录 ]
umask 显示、设置文件的缺省权限
英文原意:the user file-creation mask
存放路径:Shell内置命令
执行权限:所有用户
语法: umask [-S]
添加-S参数表示以rwx表示显示新建文件的缺省权限
文件处理命令-文件搜索命令
find 文件搜索
英文原意:find
存放路径:/bin/find
执行权限:所有用户
语法: find [搜索范围] [匹配条件]
一些常见用法
find /etc -name init
:在目录/etc中查找文件init(精准搜索,只有名称为init的才会被搜索到)使用
-iname
替代-name
则表示不区分大小写查找find /etc -name *init*
:使用了通配符,与一类似,但是只要是名称中含有init的文件都会被搜索到find /etc -name init*
:搜索以init开头的文件,以init结尾的文件搜索命令与此类似find /etc -name init???
:搜索以init开头,init后面还有三位的文件
find /etc ze +204800
:在/etc目录下查找大于100MB的文件。+n 大于,-n 小于, n 等于
find /home -user ×××
: 在/home目录下查找所有者为×××的文件-group:根据所属组查找
find /etc -cmin -5
:在/etc目录下查找5分钟内被修改过属性的文件和目录- -amin :访问时间 access
- -cmin : 文件属性change
- -mmin : 文件内容modify
find /etc -size +163840 -a -size -204800
: 在/etc目录下查找大于80MB小于100MB的文件- -a:两个条件同时满足
- -o:两个条件满足任意一个即可
find /etc -size +204800 -a -type [{f,d,l}]
:在/etc目录下查找大于100MB的{文件/目录/链接文件}- f:文件
- d:目录
- l:链接文件
find /etc -name inittab -exec ls -l {} \;
:在/etc目录下查找inittab文件并显示其详细信息-exec/-ok [命令] {} \;
:对搜索结果执行操作,如果使用-ok会需要用户确认
find . -inum [×××]
:在当前目录(.表示当前目录)下查找节点号为×××的目录。可以用来找硬链接
locate 快速在文件资料库中查找文件
在系统中建立了一个数据库,查找起来速度就很快,但是一些新建的文件和/tmp文件夹下的文件无法查找到,使用uodatedb
可以手动更新这个数据库
- 英文原意:locate
- 存放路径:/usr/bin/locate
- 执行权限:所有用户
- 语法: locate [文件名]
- 选项 -i:忽略大小写查找
grep 在文件中搜寻字串匹配的行并输出
- 英文原意:grep
- 存放路径:/bin/grep
- 执行权限:所有用户
- 语法: grep [-iv] [指定字串] [文件]
- 选项:
- -i:不区分大小写
- -v:排除指定字串所在的整行
which 搜索命令所在目录及别名信息
- 英文原意:which
- 存放路径:/usr/bin/which
- 执行权限:所有用户
- 语法: which [命令]
whereis 搜索命令所在目录及帮助文档路径
- 英文原意:whereis
- 存放路径:/usr/bin/whereis
- 执行权限:所有用户
- 语法: whereis [命令]
帮助命令
man 获得帮助信息
- 英文原意:manual
- 存放路径:/usr/bin/man
- 执行权限:所有用户
- 语法: man [命令或配置文件] (如果是查配置文件帮助,不能用绝对路径,直接用名称就可以了)
- 例:
- man ls:查看ls命令的帮助信息
- man services:查看配置文件services的帮助信息
- 补充:
- 用/加上想要查找的可以直接索引,n表示下一个
- 有可能会出现配置文件和命令重名的情况(例如passwd),这个时候可以加上标识符来区别
man 5 passwd
和man 1 passwd
- 1表示命令的帮助。
- 5表示配置文件的帮助
- whatis命令 获取命令的简洁帮助信息
- 语法:whatis [命令]
- apropos命令 获取配置文件的帮助信息
- 语法:apropos [配置文件名] (不可以用绝对路径)
用户管理命令
useradd 添加新用户
- 英文原意:useradd
- 存放路径:/usr/sbin/useradd
- 执行权限:root
- 语法: useradd [用户名]
passwd 设置用户密码
root 可以修改所有用户的密码,非root只能修改自己的密码
- 英文原意:password
- 存放路径:/usr/bin/passwd
- 执行权限:所有用户
- 语法: passwd [用户名]
who 查看登录用户信息
- 英文原意:who
- 存放路径:/usr/bin/who
- 执行权限:所有用户
- 语法: who
who 查看登录用户信息
- 英文原意:who
- 存放路径:/usr/bin/who
- 执行权限:所有用户
- 语法: who
w 查看登录用户详细信息
- 存放路径:/usr/bin/w
- 执行权限:所有用户
- 语法: w
压缩解压命令
gzip 压缩.gz文件
只能压缩文件,不能压缩目录,且压缩完成后就没有原文件了
压缩比较高
- 英文原意:GUN zip
- 存放路径:/usr/bin/gzip
- 执行权限:所有用户
- 语法: gzip [文件]
gunzip 解压缩.gz文件
- 英文原意:GUN zip
- 存放路径:/usr/bin/gunzip
- 执行权限:所有用户
- 语法: gunzip [文件]
bzip2 压缩文件(.bz2) (gzip升级版)
压缩比很大,当压缩大文件时,推荐使用这个
解压使用bunzip2 [文件名]
命令
- 存放路径:/usr/bin/bzip2
- 执行权限:所有用户
- 语法: bzip2 [选项 -k] [文件]
- 选项:
- -k: 产生压缩文件后保留原文件
tar 打包和解包目录(.tar/.tar.gz)
- 存放路径:/bin/tar
- 执行权限:所有用户
打包/压缩
语法: tar [选项 -zcf] [压缩后文件名] [目录]
选项:
- -z: 打包同时压缩(.tar.gz)
- -c: 打包(.tar)
- -v: 显示详细信息(打包完成后会显示打包了那些目录)
- -f: 指定文件
- -g:打包同时压缩(.tar.bz2),本选项与-z只能选一个
解包/压缩
- 语法:tar [选项 -zxvf] [待解包/压缩]
- 选项:
- -x: 解包
- -v: 显示详细信息
- -f: 指定解压文件
- -z: 解.tar.gz压缩
- -j: 解.tar.bz2压缩
zip 压缩文件或目录(.zip)
压缩后会保留原文件
压缩比并不高
unzip命令用来解压
- 存放路径:/usr/bin/zip
- 执行权限:所有用户
- 语法: zip [选项 -r] [压缩后文件名] [文件或目录]
- 选项:
- -r: 压缩目录
网络命令
ifconfig 查看和设置网卡信息
可以直接使用ifconfig
查询例如IP等网络状态信息
英文原意:interface configure
存放路径:/sbin/ifconfig
执行权限:root
语法: ifconfig 网卡名称 IP地址
例:ifconfig eth0 192.168.8.250
traceroute 显示数据包到主机间的路径
- 存放路径:/bin/traceroute
- 执行权限:所有用户
- 语法: traceroute [网址]
netstat 显示网络相关信息
- 存放路径:/bin/netstat
- 执行权限:所有用户
- 语法: netstat [选项]
- 常用选项:
- -t: TCP协议
- -u: UDP协议
- -l: 监听
- -r: 路由
- -n: 显示ip地址和查看端口号
- 例:
netstat -tlun
: 查看本机监听的端口netstat -an
: 查看本机所有的网络连接netstat -rn
: 查看本机路由表
last 列出目前与过去登入系统的用户信息
- 存放路径:/usr/bin/last
- 执行权限:所有用户
- 语法: last
write 给用户发送文件
Ctrl+D保存结束
用户不在线发不出去
- 存放路径:/usr/bin/write
- 执行权限:所有用户
- 语法: write <用户名>
挂载命令
mount 挂载
有图形界面的一般会自动挂载
在弹出光盘前,一定要先卸载,否则物理按键无用
挂载好了以后去到挂载点可以查看相应的内容(例如光盘上的内容)
- 存放路径:/bin/mount
- 执行权限:所有用户
- 语法: mount [-t 文件系统( 可省略)] [设备名称] [挂载点]
- 例:
mount -t iso9660 /dev/sr0 /mnt/cdrom
:这里是挂载相应的光盘(iso9660是光盘的文件系统)到创建好的文件夹(不同硬件的挂载地方一般也有约定)
umount 卸载
要先退出挂载目录才可以卸载
语法:umount [设备文件地址或者挂载点地址]
关机和重启命令
shutdown 关机(推荐)
会保存数据和服务,再关机。
语法:shutdown [选项] 时间
选项:
- -c: 取消前一个关机命令
- -h: 关机
- -r: 重启
例子:
shutdown -h now/20:30
:立刻/8:30关机shutdown -r now/20:30
:立刻/8:30重启shutdown -c
:取消前一个关机命令
其他关机命令
halt
poweroff
init 0
重启命令
reboot
init 6
Vim
基础插入命令
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符,按Esc结束 |
u | 取消上一步操作 |
定位命令
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G | 到最后一行 |
:n | 到第n行 |
nG | 到第n行 |
搜索和搜索替换命令
命令 | 作用 |
---|---|
/String | 搜索指定字符串,搜索是忽略大小写要先执行命令:set ic |
n | 搜索指定字符串的下一个出现位置 |
:%s/old/new/g(c) | 全文替换指定支付传(结尾用c,会有替换询问) |
:n1,n2s/old/new/g(c) | 在n1到n2行范围内替换指定字符串(结尾用c,会有替换询问) |
保存和退出命令
命令 | 作用 |
---|---|
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并推出 |
ZZ | 快捷键,保存修改并退出 |
:q | 不保存修改退出 |
:wq | 保存修改并推出(文件所有者及root可使用) |
删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处到行尾的内容 |
:n1,n2d | 删除指定n1到n2行 |
复制和剪切命令
命令 | 作用 |
---|---|
yy | 复制当前行 |
nyy | 复制当前以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前以下n行 |
p、P | 粘贴在当前光标所在行下或行上 |
一些有趣的命令
:r [文件路径]
:将文件中的内容导入到光标所在位置![命令]
:在不退出编辑的情况下,执行系统命令,例如::r !date
就可以直接导入时间:map 快捷键 触发命令
:可以用户自定义快捷键
shell基础
基本常识
shell执行方法
- 赋予执行权限,直接运行
- chmod 755 ×××.sh
- ./×××.sh
- 通过Bash调用脚本执行
- bash ×××.sh
脚本转换(win 与 linux)
因为在windows和linux写下的shell脚本可能会有一些细微的差别导致直接从windows考过来的脚本在linux中不能运行,所以需要转换以下
dos2unix [文件名]
:就可以完成转换windows -> linux- unix2dos [文件名]:就可以完成转换linux -> windows
history 历史命令
- 语法:
history [选项] [历史命令保存文件]
,直接敲history
命令则是看到全部的历史命令 - 选项:
- -c:清空历史命令
- -w:在不指定保存位置时,把缓存的历史命令写入默认历史命令保存文件~./bash_history(默认一千条 )
Bash快捷键
快捷键(不区分大小写) | 作用 |
---|---|
ctrl+A | 叭光标移动到命令行开头 |
ctrl+E | 把光标移动到命令行结尾 |
ctrl+R | 在历史命令搜索,按下这个快捷键后,会出现搜索界面 |
ctrl+D | 退出当前终端 |
命令执行顺序
- 第一顺位执行用绝对路径或相对路径执行的命令
- 第二顺位执行别名
- 第三顺位执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
管道符
- 命令格式:
命令1 | 命令2
:命令1的正确输出作为命令2的操作对象 - 例:
ll -a | more
:本来more命令只能显示文件,但是这样操作的话,也可以用来查看目录
通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或多个任意字符,也就是匹配任何内容 |
[] | 匹配中括号中的任意一个字符,例如:[abc]代表一定要匹配一个字符,必定是abc中的一个 |
[-] | 匹配中括号中的任意一个字符,-代表一个范围。例如:[a-z]代表配匹配一个消协字母 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如:[(尖括号)0-9],代表匹配一个不是数字的字符 |
shell变量
变量规则
- 变量名称可由字母、数字、下划线组成,但是不能以数字开头
- 在Bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为数值型
- 变量用等号连接,等号两侧不能有空格
- 变量的值如果有空格,需要使用但因号或双引号包括
- 在变量的值中,可以使用”\“转义符
- 如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要用双引号包含
"$变量名"
或用${变量名}
包含 - 如果要把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令
- 环境变量名建议大写,便于区分
变量分类
- 用户自定义变量
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据
- 设值:
export 变量名=变量值
- 查询:
env
(专用于环境变量查询) - 删除:
unset 变量名
- PS1:定义系统提示符的变量(就是命令开头那些东西)
- \d:以”星期 月 日“格式显示日期
- \h:显示简写主机名。默认”localhost“
- \t:以”HH:MM:SS“格式显示24小时制时间
- \T:以”HH:MM:SS“格式显示12小时制时间
- \A:以”HH:MM“格式显示24小时制时间
- \u:显示当前用户名
- \w:显示当前所在目录的完整名称
- \W:显示当前所在目录的最后一个目录
- \#:执行的第几个命令
- \$:提示符。如果是root用户则会显示”#“,普通用户显示”$“
- 设值:
- 位置参数变量:这种变量主要是同来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
- $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用打括号包含,如${10}
- $*:这个变量代表命令行中所有的参数,$×把所有的参数看成一个整体
- $@:这个变量也代表命令行中所有的参数,不过$@叭每个参数区别对待,使用时,用双引号引起来
- $#:这个变量代表命令行中所有参数的个数
- 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用是固定的
- $?:最后一次执行的命令的返回状态。如果这个变量的值是0,证明上一个命令执行正确,如果为非0(具体为那个数,由命令自己决定),则说明上一个命令执行不正确
- $$:当前进程的进程号(PID)
- $!:后台运行的最后一个进程的进程号(PID)
变量查看与删除
set
:查看所有变量unset 变量名
:删除变量
接收键盘输入
- 语法:
read [选项] [变量名]
- 选项:
- -p ”提示信息“:在等待输入的时候,输出提示信息
- -t 秒数:read命令会一直在等待用户输入,使用此选项可以指定等待时间
- -n 字符数:read命令只接收指定的字符数,就会执行(不用回车)
- -s:隐藏输入的数据,适用于机密信息的输入
声明变量类型
如果不声明,默认是字符串
- 语法:
declare [+-][选项] 变量名
- 选项:
- -:给变量设定类型属性
- +:取消变量的类型属性
- i:将变量声明为整数型(integer)
- x:将变量声明为环境变量
- p:显示指定变量的被声明类型
- 例:
declare -i cc=00
declare
数值运算
aa=11
bb=22
- ”$((运算式))“或”$[运算式]“:
cc=$(($aa+$bb))
或cc=$[$aa+$bb]
- 使用declare声明为整形便可正常加减:
declare -i cc=$aa+$bb
- 使用expr或let数值运算工具:
cc=$(expr $aa + $bb)
(ps:这里加号两边的空格不能少
变量测试与内容替换
变量置换方式 | 变量y没有设置(不存在) | 变量y为空值 | 变量y设置值 |
---|---|---|---|
x=${y-新值} | x=新值 | x为空 | x=$y |
x=${y:-新值} | x=新值 | x=新值 | x=$y |
x=${y+新值} | x为空 | x=新值 | x=新值 |
x=${y:+新值} | x为空 | x为空 | x=新值 |
x=${y=新值} | x=新值,y=新值 | x为空,y不变 | x=$y,y值不变 |
x=${:新值} | x=新值,y=新值 | x=新值,y=新值 | x=$y,y值不变 |
x=${y?新值} | 新值输出到标准错误输出(即屏幕输出) | x为空 | x=$y |
x=${y:?新值} | 新值输出到标准错误输出 | 新值输出到标准错误输出 | x=$y |
shell 编程
基础的正则表达式
正则表达式与通配符
- 正则表达式用来在文件中匹配符号条件的 字符串,正则是包含匹配。grep、awk、sed等命令都可以支持正则表达式
- 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配
基础字符及作用
元字符 作用 * 前一个字符匹配0次或多次 . 匹配除了换行符以外的任意一个字符 ^ 匹配行首。例如^hello会匹配以hello开头的行 $ 匹配行尾。hello$会匹配以hello结尾的行 [] 匹配中括号中指定的任意一个字符,只匹配一个字符。例如:[aeiou]匹配一个元音字母 [^] 匹配除括号中的任意一个字符 \ 转移符。用于将特殊符号的含义取消 \{n\} 表示其前面的字符恰好出现n次。例如[0-9]\{4\}匹配4位数字 \{n,\} 表示其前面的字符出现不小于n次。例如:[0-9]\{2,\}表示两位数以上的数字 \{n,m\} 表示其前面的字符至少出现n次。最多出现m次。例如[a-z]\{6,8\}匹配6到8位的小写字母
字符截取命令
cut 字段提取命令(列),简单提取
- 语法:
cut [选项] 文件名
- 选项:
- -f 列号:提取第几列
- -d 分隔符:按照指定分隔符分割列
printf 格式化打印命令
- 语法:
printf “输出类型输出格式” 输出内容
- 输出类型:
- %ns:输出字符串。n是数字,指代输出几个字符串。不加n,则会导致把后面的全部当作一个字符串一次性输出
- %ni:输出整数。n是数字,指代输出几个数字
- %m.nf:输出浮点数。m和n是数字,指代输出的整数位和小数位。如:%8.2f代表共输出8位数,其中,2位是小数,6位是整数
- 输出格式:
- \a:输出警告声音
- \b:输出退格键,也就是Backspace键
- \f:清楚屏幕
- \n:换行
- \r:回车,也就是Enter键
- \t:水平输出退格键,也就是Tab键
- \v:垂直输出退格键,也就是Tab键
awk命令,复杂升级版cut
语法:
awk ‘条件1{动作1} 条件2{动作2}...’ 文件名
awk ‘{动作}’ 文件名
:表示所有的都按照这个动作执行条件(Pattern):一般使用关系表达式作为条件
例:
- x > 10:判断变量x是否大于10
- x>=10:大于等于10
- x<=10:小于等于10
动作(Action):
- 格式化输出(printf)
- 流程控制语句
BEGIN:
awk ‘BEGIN{printf“this is a test\n”}’ {命令1} 文件名
:这个BEGIN是然后面那条命令在其他所有的执行之前先执行,这个命令就是前面写的第二条差不多,只不过在最开始执行了一个打印的动作FS内置变量:用来指定分隔符,例:
awk ‘BEGIN{FS=××}’ ‘{动作}’ 文件名
表示以××为分隔符END:和BEGIN类似,在其他命令执行结束以后,再执行这个动作
sed命令,轻量的流编辑器
主要作用:用来将数据进行选取、替换、删除、新增
语法:
sed [选项] '[动作]' 文件名
选项:
- -n:一般sed命令会把所有数据都是输出到屏幕,如果加入此选择,则只会叭经过sed命令处理的允许的行输出到屏幕
- -e:允许对输入数据应用多条sed命令编辑
- -i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
a:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾都需要用‘\+按下回车’代表数据未完结,
sed '2a hello' ×××
表示在第二行后追加helloc:行替换,用c后面的字符替换原行数据,替换多行时,除最后一行外,每行末尾都需要用‘\+按下回车’代表数据未完结
i:插入,在当前行前插入一行或多行。插入多行时,除最后一行外,每行末尾都需要用‘\+按下回车’代表数据未完结,
sed '2i hello \(回车) world'
表示在第二行前插入两行数据d:删除,删除指定行,
sed '2,4d' ×××
表示删除×××文件的2到4行p:打印,输出指定行,
sed -n '2p' ×××
表示打印×××文件的第二行在屏幕上s:字符串替换。格式类似于”行范围s/旧字符串/新字符串/g”(和vim中的替换格式类似)
sed '3s/111/222/g' ×××
:在×××文件中第三行中,把111换成222(文件本身并未改写sed -e 's/111//g;s/222//g' ×××
:在×××文件中,把111和222同时替换为空(文件本身并未改写
字符处理命令
sort 排序命令
- 语法:
sort [选项] 文件名
- 选项:
- -f:忽略大小写
- -n:以数值型排序,默认使用字符串型排序
- -r:反向排序
- -t:指定分隔符,默认是制表符
- -k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束,默认到行尾
wc 统计命令
- 语法:
wc [选项] 文件名
:不加选项则显示行数 单词数 字符数 - 选项:
- -l:只统计行数
- -w:只统计单词数
- -m:只统计字符数
条件判断
语法
test 选项 文件
[ 选项 文件 ]
:这种方法中括号后、前的空格不能少 (常用格式)
按照文件类型进行判断
选项 | 作用 |
---|---|
-d 文件 | 判断文件是否存在,并且是否为目录文件(是目录为真) |
-e 文件 | 判断文件是否存在(存在为真) |
-f 文件 | 判断文件是否存在,并且是否位普通文件(是普通文件则为真) |
-b 文件 | 判断文件是否存在,并且是否为块设备文件(是块设备文件则为真) |
-c 文件 | 判断文件是否存在,并且是否为字符设备文件(是字符设备文件为真) |
-L 文件 | 判断文件是否存在,并且是否为符号链接文件(是符号链接文件为真) |
-p 文件 | 判断文件是否存在,并且是否为管道文件(是管道文件为真) |
-s 文件 | 判断文件是否存在,并且是否为非空(非空为真) |
-S 文件 | 判断文件是否存在,并且是否为套接字文件(是套接字文件为真) |
按照文件权限进行判断
选项 | 作用 |
---|---|
-r 文件 | 判断文件是否存在,并且是否文件拥有读权限(有读权限为真) |
-w 文件 | 判断文件是否存在,并且是否文件拥有写权限(有写权限为真) |
-x 文件 | 判断文件是否存在,并且是否文件拥有执行权限(有执行权限为真) |
-u 文件 | |
-g 文件 | |
-k 文件 |
两个文件之间进行比较
选项 | 作用 |
---|---|
文件1 -nt 文件2 | 判断文件1的修改时间是否比文件2的新(如果新则为真) |
文件1 -ot 文件2 | 判断文件1的修改时间是否比文件2的旧(如果旧则为真) |
文件1 -ef 文件2 | 判断文件1和文件2的Inode号一致,可以理解为两个文件是否为同一个文件。这个也可用于判断硬链接 |
两个整数之间比较
选项 | 作用 |
---|---|
整数1 -ep 整数2 | 判断整数1和整数2是否相等(相等为真) |
整数1 -np 整数2 | 判断整数1和整数2是否不相等(不相等为真) |
整数1 -gt 整数2 | 判断整数1是否大于整数2(大于为真) |
整数1 -lt 整数2 | 判断整数1是否小于整数2(小于为真) |
整数1 -ge 整数2 | 判断整数1是否大于等于整数2(大于等于为真) |
整数1 -le 整数2 | 判断整数1是否小于等于整数2(小于等于为真) |
字符串的判断
选项 | 作用 |
---|---|
-z 字符串 | 判断字符串是否为空(为空为真) |
-n 字符串 | 判断字符串是否非空(非空为真) |
字符串1==字符串2 | 判断事都相等(相等为真) |
字符串1 != 字符串2 | 判断是否不相等(相等为真) |
多重条件判断
选项 | 作用 |
---|---|
判断1 -a 判断2 | 逻辑与,判断1和判断2都成立才为真 |
判断1 -o 判断2 | 逻辑或,判断1和判断2,其中一个成立则为真 |
!判断 | 逻辑非,与原判断结果相反 |
流程控制
if语句
单分支
1
2
3
4
5
6
7
8if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi双分支
1
2
3
4
5
6if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi多分支
1
2
3
4
5
6
7
8
9
10if [ 条件判断式1 ]
then
判断式1成立时,执行的程序
elif [ 条件判断式2 ]
then
判断式2成立时,执行的程序
...
else
当所有条件都不成立时,最后执行此程序
fi
case语句
1 | case $变量名 in |
for循环
1
2
3
4for 变量 in 值1 值2 值3...
do
程序
done1
2
3
4
5
6
7
8
9
10
11for((初始值;循环控制条件(可以是定值也可以是变量);变量变化))
do
程序
done
例:
s=0
for(( i=1;i<=100;i=i+1))
do
s=$(($s+$i))
done
while循环与until循环
while
1
2
3
4while [ 条件判断式 ]
do
程序
doneuntil循环:与while相反,条件一旦成立则推出循环
1
2
3
4until [ 条件判断式 ]
do
程序
done
Linux系统管理
工作管理
把进程放入后台
命令 &
:这种方法放入后台以后会继续运行- 在执行某个命令时,ctrl+z快捷键。这种方法放入后台以后会暂停
查看后台工作
- 语法:jobs [-l]
- 选项:
- -l:显示工作的PID
- ps:“+”号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作
恢复后台暂停的工作到前台执行
- 语法:
fg %工作号
:这里的%可以省略,但是请注意工作号和PID的区别
把后台暂停的工作恢复到后台执行
- 语法:
bg %工作号
- ps:后台恢复执行的命令,不能和前台有交互,否则不能恢复到后台执行
系统定时任务
定时任务中,date=$( date +%y%m%d)
这条命令是无法成功的,因为在里面%有特殊含义,必须用转移符才可以,即date=$( date +\%y\%m\%d)
crond服务管理与访问控制
service crond restart
:重启 动,这个本身是在开机的时候就自启动了chkconfig crond on
用户的crontab设置
语法:
crontab [选项]
选项:
-e:编辑crontab定时任务
进入编辑界面后有一定的格式规范
1
*****你的任务
项目 含义 范围 第一个“*” 一个小时当中的第几分钟 0-59 第二个“*” 一天当中的第几个小时 0-23 第三个“*” 一个月当中的第几天 1-31 第四个“*” 一年当中的第几个月 1-12 第五个“*” 一星期当中的星期几 0-7(0和7都代表星期日) 例子:
(星期几和几号最好不要同时出现,因为都是定义的哪一天,容易让管理员混乱)
时间 作用 45 22 * * * 命令 在每天的 22:45执行任务 0 17 * * 1 命令 在每周一的17:00执行命令 0 5 1,15 * * 命令 在每月1号和15号的5:00执行命令 40 4 * * 1-5 命令 每周一到周五的4:40执行命令 */10 4 * * * 命令 每天凌晨4点,每隔10分钟执行一次命令 0 0 1,15 * 1 命令 每月1号和15号,每周1的00:00都会执行命令
需要备份的数据
- /root/目录
- /home/目录
- /etc/目录
- 其他目录:如/var/log/目录,/bin/目录
- apache需要备份的数据
- 配置文件
- 网页主目录
- 日志文件
dump和restore命令
- dump
- 语法:
dump [选项] 备份之后的文件名 原文件或目录
- 选项
- -level:就是我们说的0-9共10个备份级别,这里的level要写成数字。如果备份的是目录或文件,只能使用0级别进行完全备份。增量备份只适用于分区
- -f 文件名:指定备份之后的文件名
- -u:备份成功后,叭备份时间记录在/etc/dumpdates文件
- -v:显示备份过程中更多的输出信息
- -j:调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式
- -W:显示允许被dump的分区的备份等级及备份时间
- 语法:
- restore
- 语法:
restore [模式选项] [选项]
- 模式选项(不能混用,只能任选其一)
- -C:比较备份数据和实际数据的变化
- -i:进入交互模式,手工选择需要恢复的文件
- -t:查看模式,用于查看备份文件中拥有哪些数据
- -r:还原模式,用于数据还原
- 选项
- -f 指定备份文件的文件名
- 语法:
其他命令
echo 输出命令
这仅仅是echo最基本的功能,它还有很多强大的功能,如覆盖文本,追加文本等
echo [选项] [输出内容]
选项
- -e: 支持反斜线控制的字符转化
例:
这里的第一行很重要,并不是注释,而是表示这是一个shell脚本
1
2
3
4!/bin/Bash
第一个shell脚本
echo -e "hello world"
date 日期命令
date
:输出当前日期date +%y%m%d
:按年月日格式输出日期