格式
格式:命令 [-选项] / [-- 选项全名] [参数]
。
ls
list所在目录:
bin/ls
执行权限: 所有用户
功能描述:显示目录文件
语法:
ls 选项[ald] [文件或则目录]
选项:
- -l long 详细信息显示
- -a --all 显示所有文件,包括隐藏文件
- -d --directory 查看目录属性
- -i --inode 显示文件以及文件的编号
- -h --human-readable 以人类易读的方式显示
mkdir
make directories所在目录:
/bin/mkdir
执行权限:所有用户
功能描述: 创建新的目录
语法:mkdir [选项 -p ] [目录名称]
选项:
- -p 递归创建
cd
change directory所在目录: shell 内置命令
执行权限: 所有用户
功能描述: 切换用户
语法: cd [目录]
案例:
- cd ~ 回到根目录
- cd … 回到上一级目录
- cd …/…/ 回到上两级目录
pwd
print working directory所在目录:/bin/pwd
执行权限:所有用户
功能描述:显示当前目录
语法:pwd
rmdir
remove empty directories所在目录:/bin/rmdir
执行权限:所有用户
功能描述:删除空目录
语法:rmdir [目录名称]
cp
copy所在目录:/bin/cp
执行权限:所有用户
功能描述:复制文件或者目录
语法: cp [源文件或者源目录] [目标目录]
选项:
- -r 复制目录
- -p 保留文件或者目录属性
mv
move所在目录:/bin/mv
执行权限:所有用户
功能描述:剪切目录或者文件(移动)、目录或者文件改名
语法: mv [源文件或者源目录] [目标目录或者目标文件]
rm
remove所在目录:/bin/rm
执行权限:所有用户
功能描述:删除文件或者目录
语法: rm [选项 -rf] [文件或者目录]
选项:
- -r 删除目录
- -f 强制执行
touch
所在目录:/bin/touch
执行权限:所有用户
功能描述:创建空文件
语法:touch 文件名称
注意: 文件不存在则创建文件,文件存在则更新文件的修改时间,也就是摸一下
cat
所在目录: /bin/cat
执行权限: 所有用户
功能描述:显示文件内容
语法:cat 文件名
选项:
- -n 显示行号
- -A 显示隐藏字符(包括回车等等)
tac
所在目录:/usr/bin/tac
执行权限: 所有用户
功能描述:显示文件内容(反向列示)
more
(只能往后翻页)所在目录:/bin/more
执行权限:所有文件
功能描述:分页显示文件内容
语法: more 文件名
选项:
- 空格 / f 翻页
- Enter 换行
- q / Q 退出
less
(可以向前翻页)所在目录: /usr/bin/less
执行权限: 所有用户
功能描述: 分页显示内容
语法: less 文件名
shutdown
建议使用(其他:half poweroff init 0 / reboot init 6)语法: shoutdown [选项] (时间 5:00)
选项:
- -c 取消前一个关机命令
- -h 关机
- -r 重启
补充:系统运行级别
- 0 关机
- 1 单用户(启动最少的服务进行修复,类似windows安全模式)
- 2 不完全单用户,不含NFS(Network File System)服务
- 3 完全多用户
- 4 未分配
- 5 图形界面
- 6 重启
```
//修改系统运行级别
vim /etc/inittab
// id:3:initdefault"
//查询运行级别
runlevel
```
head
所在目录: /usr/bin/head
执行权限: 所有用户
功能描述:显示前面n行数据
语法: head [-n number] 文件名
选项:
- -n 指定行数
tail
所在目录:/usr/bin/tail
执行权限: 所有用户
功能描述: 显示文件最后几行(可以动态)
语法: tail [-nf] 文件名
选项:
- -n 指定行数
- -f 动态显示文件末尾内容
ln
link所在目录:/bin/ln
执行权限: 所有用户
功能描述: 生成连接文件
语法: ln [选项] [源文件] [生成的链接文件]
选项:
- -s 创建软连接
注意:
/*
软链接:
1.类似windows里面的快捷方式
2.所有软连接的权限都是rwxrwxrwx
3.只是符号连接箭头指向源文件
硬链接:
1.cp -p + 同步更新
2.一个文件和他的硬链接文件的i节点相同,可以通过i节点识别
3.硬链接不能跨分区
4.硬链接不能针对目录使用
*/
chmod
change the permissions mode of a file所在目录: /bin/chmod
执行权限: 所有用户
功能描述: 改变目录或者文件权限
语法: chmod [{ugoa}{±=]{rwx}[文件或者目录]
chmod [-R] [文件或者目录]
r:4 w:2 x:1
选项: -R 递归修改目录下的所有文件的权限
chown
change file ownership所在目录: /bin/chown
执行权限: root
功能描述: 改变文件或者目录的所有者
语法: chown [用户] [文件或者目录]
chgrp
change file group ownership所在目录: /bin/chgrp
执行权限: 所有用户
功能描述: 改变文件或者目录的所属组
语法: chgrp [用户组] [文件或者目录]
umask
the user file-creation mask所在目录: Shell内置命令
执行权限所有用户
功能描述: 显示、设置文件的缺省权限
语法: umask [-S]
选项: -S 以rwx形式显示新建文件的缺省权限
find
所在目录: /bin/find
执行权限: 所有用户
功能描述: 文件搜索
语法:find [搜索范围] [匹配条件]
选项:
- -name 根据名称查找 *:任意字符匹配 ? 单个字符匹配
- -iname 不区分大小写根据名称查找
- -size +n -n n 根据文件大小查找
find / -size +204800 -a -size 102400
- -user 根据所有者查找
- -gorup 根据所属组查找
- -amin access 访问时间
- -cmain change 文件属性的修改时间ls -l 能看到的那些
- -mmin modify 文件内容被修改
find /ect -mmin -5
- -type 根据文件类型进行查找
- -inum 根据i节点进行查找
- -a and -o or
- -exec [命令] {};
find /home/ name *dingwen* -exec ls -l {} \;
- -ok [] {}; 会询问
注意:Linux中最小的数据单位是扇区=512字节,0.5KB。所以,100MB在Linux中表示为204800
locate
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:uopdatedb。注意/tep,临时目录里面的文件不会被收录到资料库中
所在目录: /usr/bin/locate
执行权限:所有用户
功能描述:在文件资料库中查找文件
语法: locate 文件名
手动更新资料库 updatedb
which
所在目录: /usr/bin/which
执行权限:所有用户
搜索命令所在目录以及别名信息
选项: -a 显示所有信息
语法: which 命令
whereis
所在目录: /usr/bin/wherseis
执行权限:所有用户
搜索命令所在目录以及帮助文档路径
语法: whereis 命令
grep
所在目录:/bin/grep
执行权限:所有用户
功能描述:在文件中搜素字串匹配的行并输出
语法: grep [-iv] [指定字串] [文件]
选项:
- -i 不区分大小写
- -v 排除指定字串
- -n 输出行号
- –color=auto 搜索出的关键字用颜色显示
useradd
所在目录:/usr/sbin/useradd
执行权限:root
功能描述: 添加新用户
语法: useradd 用户名
passwd
所在目录: /usr/bin/passwd
执行权限: 所有用户
功能描述: 设置用户密码
语法: passwd 用户名
who
所在目录:/usr/bin/who
执行权限:所有用户
功能描述: 查看登录用户信息
语法: who
w
所在目录:/usr/bin/w
执行权限:所有用户
功能描述: 查看登录用户的详细信息
语法: w
man
manual所在目录: /usr/bin/man
执行权限: 所有用户
功能描述:获得帮助信息
语法: man [命令或者配置文件]
help
所在目录: shell内置命令
执行权限: 所有用户
功能描述:获得Sell内置命令的帮助信息
语法: help 命令
gzip & gunzip
gun zip(,不能保留源文件,不能压缩目录)所在目录:/bin/gzip /bin/gunzip
执行权限: 所有用户
功能描述:gzip:压缩文件,不能保留源文件,不能压缩目录。压缩后文件格式 .gz. gunzip:解压.gz文件
语法: gzip [文件]
选项: 解压.gz文件:gzip -d [*.gz]
bzip2 & bunzip2
*.bzip2 (不支持目录)所在目录: /usr/bin/bzip2 /usr/bin/bunzip2
执行权限: 所有用户
语法: bzip2 / bunzip2 [-k] [文件]
选项:
- -k 产生压缩文件后保留原文件 / 解压缩文件后保存原文件
tar
打包所在目录: /bin/tar
执行权限: 所有用户
功能描述: 打包目录
语法: tar [选项 [压缩后文件名] [需要压缩的目录]
选项:
- 通用选项:
-c 打包
-v 显示详细信息
-f 指定文件名称
-x 解压
- 其他选项:
-z 压缩:.tar.gz
-j 压缩:.tar.bzip2
常用:
//*.tar.gz
tar -czvf test.tar.gz test/
tar -xzvf test.tar.gz
# 解压到指定目录
tar -xcvf xxx.tar.gz -C /test
//*.tar.bz2
tar -cjvf test.tar.bz2 test/
tar /xjvf test.tar.bz2
zip & unzip
(可以保留原文件)所在目录: /usr/bin/zip /usr/bin/unzip
执行权限: 所有用户
语法: zip [-r] [压缩后文件名] [压缩文件或者目录]
选项: -r 压缩目录
write
(只能给在线的用户发消息)所在目录: /usr/bin/write
执行权限: 所有用户
功能描述:给在线的用户发信息
Ctrl + D
结束并发送
语法:write 用户名
wall
write all所在目录:/usr/bin/wall
执行权限: 所有用户
功能描述: 给所有在线的用户发广播消息
语法:wall [message]
ping
所在目录: /bin/ping
执行权限: 所有用户
功能描述: 测试网络连通性
语法: ping [选项] ip地址
选项: -c 3 指定发送三个数据包测试
ifconfig
interface configure所在目录: /sbin/ifconfig
执行权限: root
功能描述: 查看和临时设置网卡信息
语法: ifconfig
ifconfig etho 192.168.0.117
mail
所在目录: /bin/mail
执行权限: 所有用户
功能描述: 查看发送电子邮件,q 退出。
语法: 发送:mail [用户名] 查看: mail 数字
last
所在目录: /usr/bin/last
执行权限: 所有用户
功能描述: 列出目前与过去登入系统的用户信息
语法: last
lastlog
所在目录: /usr/bin/lastlog
执行权限: 所有用户
功能描述:检查某特定用户上次登录的时间
语法: lastlog -u 505 / lastlog
traceroute
所在目录:/bin/traceroute
执行权限: 所有用户
功能描述: 显示数据包到主机之间的路径
语法: traceroute www.baidu.com
netstat
所在目录: /bin/netstat
执行权限: 所有用户
功能描述: 显示网络相关信息
语法: netstat [选项]
选项:
- -t TCP协议
- -d UDP协议
- -l 监听
- -r 路由
- -n 显示IP地址和端口号
常用:
```
netstat -tlun //查看本机监听的端口
netstat -an //查看本机所有网络连接
netstat -rn //查看本机路由表
```
setup
所在目录:/usr/bin/setup
执行权限: root
功能描述: 配置网络(Red Head 系列都有)
语法: setup
mount & umount
所在目录: /bin/mount
执行权限:所有用户
语法:mount -t [文件系统] 设备文件名 挂载
//挂载
mount -t iso9660 /dev/sr0 /media/[创建目录]
//取消挂载
umount /dev/sr0
# 或者
umount /media/[目录]
logout
退出登录命令vim / vi
插入命令:
- i 在光标所在字符前插入
- I 在光标所在行行首插入
- a 在光标所在字符后插入
- A 在光标所在行行尾插入
- o 在光标所在字符下一行插入
- O 在光标所在行上一行插入
定位命令:
- :set nu / set number 设置行号
- :set nonu /set nonumber 取消行号
- gg 到第一行
- G 到最后一行
- nG 到底n行
- :n 到第n行
- $ 移至行尾
- 0 移至行首
删除命令
- x 删除光标所在处字符
- nx 删除光标所在处n个字符
- dd 删除光标所在行
- ndd 删除n行(从当前行往下计算)
- dG 删除光标所在行到文件末尾内容
- D 删除光标所在处到行尾内容
- :n1,n2d 删除指定范围的行
复制和剪切命令
- yy 复制当前航
- n 复制当前行以下n行
- dd 剪切当前行
- ndd 剪切当前行以下n行
- p 粘贴在当前光标所在行下一行
- P 粘贴在当前光标所在行上一行
替换和取消命令
- r 取消光标所在处字符
- R 从光标所在处开始替换字符,
Esc
结束- u 取消上一步操作
搜素和搜索替换命令
- /string 搜索指定字符串 //搜索时忽略大小写 :set ic
- n 搜索指定字符串的下一个出现位置
- :%s/old/new/g 全文替换指定字符串 /c 会提示
- :n1,n2/old/new/g 指定范围内替换
保存和退出命令
- :w 保存修改
- :w new_filename 另存为指定文件
- :wq 保存修改并退出
- ZZ 快捷键,保存修改并退出
- :q! 不保存,强制退出
- :wq! 强制保存修改并退出(文件所有者及root可用)
使用技巧:
- 导入命令执行结果: : r ! 命令
:r ! date
- 定义快捷键: :map 快捷键 触发命令
//连续注释行
:n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^/\/\//g
//快捷键定义
: map ^P I#
: map ^B 0x
//替换
ab email [email protected]
rpm
rpm模块依赖查询网址
rpm
包命名规范:httpd-2.2.15-15.el6.centos.1.i686.rpm(包全名)
- httpd 软件包名
- 2.2.15 软件版本
- 15 软件发布的次数
- el6.centos 适合的linux平台
- i686 适合的硬件平台
- rpm rpm包扩展名
//rpm安装
rpm -ivh 包全名
# -i install 安装
# -v verbose 显示详细信息
# -h hasj 显示进度
# --nodeps 不检测依赖性(就算软件能够正常安装,也有可能不能正常使用)
//rpm 升级
rpm -Uvh 包全名
# -U upgrade 升级
//rpm 卸载
rpm -e 包名
# e erase 卸载
# --nodeps 不检测依赖性(就算软件能够正常安装,也有可能不能正常使用)
//查询是否安装
rpm -q 包名
# -q query
# -a all
//查询软件包的详细信息
rpm -qi 包名
# -i information
# -p 查询未安装包的详细信息
//查询软件包文件安装位置
rpm -ql 包名
# -l list
# -p 查询未安装包信息
//查询系统文件属于哪一个rpm包
rpm -qf 系统文件名
# -f 查询系统文件属于哪一个rpm包
//查询软件包的依赖性
rpm -qR 包名
# -R 查询软件包的依赖性 requires
# -p 查询未安装包信息
//rpm校验
rpm -V 已安装的包名
# -v verify 校验指定RPM包中的文件
//校验信息:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验和是否改变(可以看成文件内容是否改变)
D 设备的中,从代码是否改变
L 文件路径是否改变文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变
c 配置文件(config file)
d 普通文档(documentation)
g “鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含
l 授权文件(license file)
r 描述文件(read me)
//rpm包中文件提取
# rpm2cpio 将rpm包转换为cpio格式的命令
# cpio 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
# cpio 选项 < [文件|设备]
# -i:copy-in模式,还原
# -d:还原时自动新建目录
# -v:显示还原过程
#查询ls命令属于哪个软件包
rpm -qf /bin/ls
#造成ls命令误删除假象
mv /bin/ls /tmp/
#需要先进行光盘挂载
#提取RPM包中ls命令到当前目录的/bin/ls下
rpm2cpio /mnt/cdrom/Packages/coreutils8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
#把ls命令复制会/bin/目录,修复文件丢失
cp /root/bin/ls /bin/
源码包安装位置可以自定义,一般
/usr/local/
。
安装位置的不同,导致源码包的启动不能通过service只能通过绝对路径的方式
/etc/rc.d/init.d/httpd start
#
service httpd start
#
/usr/local/apache2/bin/apachectl start
源码包的安装
- 安装gcc yum -y install gcc \ yum -y install gcc-c++
- 下载源码包
- 解压缩并进入目录
- ./configure 软件配置与检查
- 定义需要的功能选项
- 检测系统环境是否符合安装要求
- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
- make 编译
- make clean
- manke install 编译安装
源码包的卸载直接删除目录,不会有遗留文件
脚本安装包安装,直接执行脚本
yum
ip地址配置
- 使用setup
- vim /etc/sysconfig/network-scripts/ifcfg-ens33 ONBOOT=“no” 改为 yes
- 重启网络服务 service network restart
网络yum源
- vi /etc/yum.repos.d/CentOS-Base.repo
# [base] 容器名称,一定要放在[]中
# name 容器说明,可以自己随便写
# mirrorlist 镜像站点,这个可以注释掉
# baseurl 我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址
# enabled 此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效
# gpgcheck 如果是1是指RPM的数字证书生效,如果是0则不生效
# gpgkey 数字证书的公钥文件保存位置。不用修改
光盘yum源配置
- 挂载光盘
mount /dev/cdrom /mnt/cdrom/
- 让网络yum源文件失效(改名)
[root@localhost yum.repos.d]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
#地址为你自己的光盘挂载地址
# file:///media/cdrom/
# file:///media/cdrecorder/
#注释这两个不存在的地址
gpgcheck=1
enabled=1
#把enabled=0改为enabled=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
useradd
语法: useradd [选项] [用户名]
选项:
- -u 手工指定用户的UID号
- -d 手动指定用户家目录
- -c 指定用户说明
- -g 指定初始组
- -G 指定用户的附加组
- -s 登录shell,默认是/bin/bash
添加用户操作的文件和目录
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/home/用户名/
/val/spool/mail/用户名/
# 手动案例
groupadd lamp1
useradd -u 550 -g lamp1 -G root -d /home/lamp1 -c "test user" -s /bin/bash lamp1
用户默认值文件
# etc/default/useradd
GROUP=100 #用户默认组
HOME=/home #用户家目录
NACTIVE=-1 #密码过期宽限天数(7)
EXPIRE= #密码失效时间(8)
SHELL=/bin/bash #默认shell
KEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
# /etc/login.defs
PASS_MAX_DAYS 99999 #密码有效期(5)
PASS_MIN_DAYS 0 #密码修改间隔(4)
ASS_MIN_LEN 5 #密码最小5位(PAM)
PASS_WARN_AGE7 #密码到期警告(6)
UID_MIN 500 #最小和最大UID范围
GID_MAX 60000
NCRYPT_METHOD SHA512 #加密模式
passwd
语法: passwd [选项] 用户名
选项:
- -S 查询用户密码状态,只有root用户可用
- -l 暂时锁定用户,只有root可用
- -u 解锁用户,只有root可用
- –stdin 可以通过管道符输出的数据作为用户的密码
注意:root 用户可以修改其他用户的密码,普通用户修改密码直接
passwd
即可
usermod
修改用户信息语法:usermod [选项] 用户名
选项:
- -u UID: 修改用户的UID号
- -c 用户说明: 修改用户的说明信息
- -G 组名: 修改用户的附加组
- -L: 临时锁定用户(Lock)
- -U: 解锁用户锁定(Unlock)
chage
修改用户密码状态语法: chage [选项] 用户名
选项:
- -l: 列出用户的详细密码状态
- -d 日期: 修改密码最后一次更改日期(shadow3字段)
- -m 天数: 两次密码修改间隔(4字段)
- -M 天数: 密码有效期(5字段)
- -W 天数: 密码过期前警告天数(6字段)
- -I 天数: 密码过后宽限天数(7字段)
- -E 日期: 账号失效时间(8字段)
userdel
执行权限: root
语法: userdel [-r] 用户名
选项:
- -r 删除用户的同时删除用户的家目录
id
功能描述: 查询用户ID
语法:id [用户名] (不加查询当前用户)
su
功能描述:切换用户身份
语法:su [选项] 用户名 (什么也不加默认切换到root)
选项:
- 连带用户的环境变量一起切换(注意一定加)
- -c 借用身份执行命令
su - root -c 'useradd zhangcongbo'
groupadd
功能描述: 添加组
执行权限: root
语法: groupadd 组名
chgrp
功能描述:修改文件所在组
执行权限: root
语法:chgrp 组名 文件名
groupdel
功能描述: 删除组
执行权限: root
语法: groupdel [选项] 组名
groupmod
功能描述: 修改名信息
语法: groupmod [选项] 组
选项:
- -n 修改组名称
groupmod -n newname oldname
gpasswd
功能描述: 不加选项表示给组设置密码
语法: gpasswd [选项] 组名
选项:
- -a 向组中添加用户
- -d 删除组中用户
whoami
查看当前用户名
fdisk
功能描述: 使用分区工具查看分区信息
语法:fdisk [选项]
选项: -l
du
功能描述: 统计文件大小
ACL
相关查看ACL权限
getfacl 文件名
设置ACL权限
setfacl [选项] 文件名
- -m 设定ACL权限
- -x 删除指定的ACL权限
- -b 删除所有的ACL权限
- -d 设定默认ACL权限。
- -k 删除默认ACL权限
- -R 递归设定ACL权限
案例
// 给用户设定ACL权限
useradd zhangcongbo
passwd zhangcongbo
useradd duanqihui
passwd duanqihui
useradd shiting
passwd shiting
groupadd stuGroup
usermod -G stuGroup zhangcongbo
usermod -G stuGroup duanqihui
mkdir /testProject
chown root:stuGroup /testProject/
chmod 770 /testProject/
setfacl -m u:shiting:rx /testProject/
// 给组设定ACL权限
setfacl -m g:stuGroup:rwx /testProject/
mask
最大有效权限mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限(相同为真)
# 修改最大有效权限
setfacl -m m:rx 文件名
删除ACL权限
# 删除指定用户的ACL权限
setfacl -x u:用户名 文件名
# 删除指定组的ACL权限
setfacl -x g:组名 文件名
# 删除我文件的所有ACL权限
setfacl -b 文件名
递归ACL权限
- 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限 -R 文件名
默认ACL权限
- 默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
setfacl -m d:u:用户名:权限 文件名
whereis
功能描述: 查看命令所在目录
语法: whereis 命令
SetUID
要求: (1)命令执行者必须对改程序有X(执行的权限),否则设定为S(大写)表示不能生效(2)该命令只针对二进制文件
# 设置
chmod 4755 文件名
# 或者
chmod u+s 文件名
# 取消
chmod 755 文件名
# 或者
chmod u-s 文件名
SetGID
# 设置
chmod 2755 [目录或者文件]
# 或者
chmod g+s [目录或者文件]
# 取消
chmod 755 [目录或者文件]
# 或者
chmod g-s [目录或者文件]
Sticky BIT
# 设置
chmod 1755 目录
# 或者
chmod o+t 目录
# 取消
chmod 755 目录
chmod o-t 目录
chattr
对root也生效,为了避免误操作功能描述: 文件系统属性chattr权限
选项:
i
文件: 不允许删除、改名、添加或者修改文件数据
目录: 只允许修改目录下文件的数据,在该目录下不能新建和删除文件
a
文件: 只能在文件中添加数据,不能删除和修改
目录: 在目录下允许建立、修改文件,不能删除文件
语法:
# 设置chattr权限
chattr [+-=] [选项] [文件或者目录]
lsattr
功能描述: 查看文件系统属性
语法: lsattr 选项 文件名
选项:
echo 'talk is cheap show me the code' >> 文件
sudo
vi sudo
# 修改的是/etc/sudoers
root ALL=(ALL) ALL
# 用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
# %wheel ALL=(ALL) ALL
# %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
# 授权sc用户可以重启服务器
sc ALL= /sbin/shutdown –r now
//执行
su – sc
# 查看可用的sudo命令
sudo -l
# 普通用户执行sudo赋予的命令
sudo /sbin/shutdown -r now
df
功能描述: 文件系统查看命令
语法: df [选项] [挂载点]
选项:
du
功能描述: 统计目录或者文件大小
语法:du 选项 目录或者文件
选项:
df和du的区别
df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)du命令是面向文件的,只会计算文件或目录占用的空间
fsck
功能描述:文件系统修复命令
语法: fsck [选项] 分区设备文件名
选项:
dumpe2fs
功能描述:显示磁盘状态
语法: dumpe2fs 分区设备文件名
mount & umount
功能描述: 挂载
语法: mount [-t(文件系统)] [-L(卷标名称)] [-o(特殊选项)] 设备文件名 挂载点
选项:
特殊选项:
> 注意: Linux默认是不支持NTFS文件系统的
# 查询系统中已经挂载的设备,-l会显示卷标名称
mount [-l]
# 依据配置文件/etc/fstab的内容,自动挂载
mount -a
# 案例
# 重新挂载/boot分区,并使用noexec权限
mount -o remount,noexec /home
cd /hom
vi hello.sh
chmod 755 hello.sh
./hello.s
# 恢复
mount -o remount,exec /home
# 挂载u盘
# 查看u盘设备文件名
fdisk -l
mount -t vfat /dev/sdb1 /mnt/usb/
# 挂载光盘
# 建立挂载点
mkdir /mnt/cdrom/
# 挂载
mount -t iso9660 /dev/cdrom /mnt/cdrom/
# 或者
mount /dev/sr0 /mnt/cdrom/
# 卸载
umount 设备文件名或挂载点
free
功能描述: 查看内存与swap分区使用状况
cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程
buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程.
语法: free [-b|-k|-m|-g]
选项:
history
功能描述: 查看历史命令。tab键补齐,两次tab键列出先关内容
语法: history [选项] [历史名保存文件]
选项:
其他:历史命令默认会保存1000条数据,可以在环境变量配置文件/etc/profile中进行修改
HISTSIZE=1000
使用技巧:
alias & unalias
命令执行时顺序
# 查询别名命令
alias
# 设定命令别名
alias 别名='原命令'
# 永久配置生效
vim /root/.bashrc
# 删除别名
unalias 别名
wc
功能描述: 统计字节单词行数
语法: wc [选项] [文件名]
选项:
案例:
df -h | wc
wc
pstree
功能描述: 查看当前进程树
语法: pstree [选项]
选项:
read
功能描述: 接收键盘输入
语法: read [选项] [变量名]
选项:
- -p “提示信息”:在等待read输入时,输出提示信息
- -t 秒数: read命令会在指定的时间内一直等待用户的输入
- -n 字符数: read命令只接收指定的字符数,就会执行,不用回车
- -s 隐藏输入的数据
案例
#!/bin/bash
# read 案例
# Author:dingwen
read -t 30 -p "请输入姓名:" name
echo $name
read -t 30 -s -p "请输入年龄:" age
echo $age
read -n 1 -p "请输入性别:[M/F]" gender
echo -e "\n" $gender
declare
功能描述: 声明变量类型
语法: declare [+ - ] [选项] [变量名]
选项:
# 数值运算
x=1200
y=2300
declare total=$x+$y
echo $total
# expr或者let数值运算工具
aa=11
bb=22
# 加号两侧必须有空格
dd=$(expr $aa + $bb)
# $((运算式))
# $[运算式]
echo $(((11+3)*3/2))
echo $((14%3))
source
功能描述:在不用退出,或者重启的情况下,让配置文件生效
source 配置文件 或者 . 配置文件 (. 相当于source)
date
显示当前系统时间
格式化输出:
date "+%Y-%m-%d %H:%M:%S"
cut
功能描述: 截取列
语法: cut [选项] 文件名
选项:
案例:
cut -f 2 score.txt
cut -f 2,3 score.txt
cut -d ":" -f 2,3 /etc/passwd
# cut命令的局限:无法处理空格
df -h | cut -d " " -f 1,3
printf
功能描述:输出内容
语法: printf ‘输出类型输出格式’ 输出内容
输出类型:
输出格式:
案例:
printf %s 1 2 3 4 5 6
printf '6%s \a' ab cd ef
printf %s %s %s 1 2 3 4 5 6
printf '%s %s %s' 1 2 3 4 5 6
printf '%s %s %s\n' 1 2 3 4 5 6
printf '%s\t %s\t %s\t %s\n' $(cat score.txt)
# 不调整输出格式
printf '%s' $(cat student.txt)
# 调整格式输出
printf '%s\t %s\t %s\t %s\t %s\t %s\t \n' $(cat student.txt)
在awk命令的输出中支持print和printf命令,Linux没有printf命令:
awk
功能描述:支持复杂的列截取(支持空格处理)
语法:awk '条件1{动作1}'条件2{动作2}…'文件名
条件:一般使用关系表达式作为条件(如:x > 10)
动作:格式化输出、流程控制语句
案例:
awk '{printf $2 "\t" $3 "\n"}' score.txt
df -h | awk '{print $5}'
df -h | grep '/$' | awk '{printf $5}' | cut -d '%' -f
# BEGIN
awk 'BEGIN{printf "this is test script\n"}{printf $2 "\t" $3 "\n"}' score.txt
# END
awk 'END{printf "this is test script\n"}{printf $2 "\t" %4 "\n"}' score.txt
# FS内置变量,用于指定分隔符
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1 "\t\t" $3 "\n"}'
# 关系运算符
cat score.txt | grep -v name | awk '$2 >= 22{printf $1 "\n"}'
echo $?
功能描述:上一次命令的结果,执行正确返回0,其他都是非0
sed
sed 是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
语法: sed [选项] ‘[动作]’ 文件名
选项:
动作:
案例:
# 查看文件第二行
sed '2p'score.txt # 文件全部输出重复第二行
sed '2p' score.txt -n # 只输出第二行
# 删除第二行到第四行的数据,但是不修改文件本身数据
sed '2,4d' score.txt
# 在第二行后面追加hello
sed '2a hello' score.txt
# 在第二行前面插入两条数据
sed '2i hello \ world' score.txt
# 数据替换
sed '2c talk is cheap show me the code' score.txt
# 字符串替换
# sed 's/旧字串/新字串/g' 文件名
# 第二行中,把99换成100
sed '2s/99/100/g' score.txt
# 操作的数据直接写入w文件
sed -i '2s/99/100/g' score.txt
# 多条件替换
sed -e 's/dingwen/丁文/g;s/maorui/毛蕊/g' score.txt
sort
功能描述: 排序
语法: sort [选项] 文件名
选项:
案例:
# 排序用户信息文件
sort /etc/passwd
# 反向排序
sort -r /etc/passwd
# 指定分隔符是“:”,用第三字段开头,第三字段结尾排序,就是只用第三字段排序
sort -n -t ":" -k 3,3 /etc/passwd # -n # 以数字方式进行排序
ps aux & ps -le
功能描述:查看系统中所有进程
top
功能描述: 查看系统的健康状态
语法:top [选项]
选项:
- ? \ h : 显示交互模式的帮助
- P: 以CPU使用率排序,默认就是此项
- M: 以内存的使用率排序
- N: 以PID排序
- q: 退出top
kill
功能描述: 杀死进程
语法: kill [选项] PID
案例:
# 查看可用的进程信号
kill -l
选项:
killall
以进程名杀死进程
语法: killall [选项][信号] 进程名
选项:
pkil
语法: pkill [选项][信号] 进程名
选项:
vmstat
功能描述:监控系统资源
语法: vmstat [刷新延时 刷新次数]
vmstat 1 3
dmesg
功能描述: 查看开机时的内核检测信息
dmesg
cat /proc/cpuinfo
uptime
功能描述: 显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据
uptime
uname
查看系统与内核相关信息
语法: uname [选项]
选项:
file /bin/ls
判断当前系统位数
lsb_release -a
查看当前Linux发行版本,需要安装
yum -y install redhat-lsb
lsof
功能描述: 列出进程打开或使用的文件信息
语法: lsof [选项]
选项:
crontab
功能描述: 系统定时任务管理
语法:crontab [选项]
选项:
注意:需要删除当个crontab定时任务只需要在vim中编辑删除即可
logrotate
功能描述: 日志轮替配置
语法:logrotate [选项] 配置文件名
选项:
注意:如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
dump
功能描述: 备份
语法: dump [选项] 备份之后的文件名 原文件或者目录
选项:
案例:
# 安装 dump
yum -y install dump
# 备份分区
# 备份命令。先执行一次完全备份,并压缩和更新备份时间
dump -0uj -f /root/boot.bak.bz2 /boot/
# 查看备份时间文件
cat /etc/dumpdates
# 复制日志文件到/boot分区
cp install.log /boot/
# 增量备份/boot分区,并压缩
dump -1uj -f /root/boot.bak1.bz2 /boot/
# 查询分区的备份时间及备份级别的
dump –W
# 备份文件或目录
# 完全备份/etc/目录,只能使用0级别进行完全备份,而不再支持增量备份
dump -0j -f /root/etc.dump.bz2 /etc/
restore
功能描述: 备份
语法: restore [模式选项] [选项]
选项:
注意: restore命令常用的模式有以下四种,这四个模式不能混用
案例:
mv /boot/vmlinuz-2.6.32-279.el6.i686 /boot/vmlinuz-2.6.32-279.el6.i686.bak
# 把/boot目录中内核镜像文件改个名字
restore -C -f /root/boot.bak.bz2
# restore发现内核镜像文件丢失
# 查看模式
restore -t -f boot.bak.bz2
# 还原模式
# 还原boot.bak.bz2分区备份
# 先还原完全备份的数据
mkdir boot.test
cd boot.test/
restore -r -f /root/boot.bak.bz2
# 解压缩
restore -r -f /root/boot.bak1.bz2
# 恢复增量备份数据
# 还原/etc/目录的备份etc.dump.bz2
# 还原etc.dump.bz2备份
restore -r -f etc.dump.bz2
rpm
# 查询已安装的软件
rpm -qa 软件名
# 文件名绝对路径 文件名的绝对路径
rpm -qf 文件名称
# 查询已安装的软件包都安装到何处
rpm -ql 软件名
# 查询一个已安装软件包的信息
rpm -qi 软件名
# 查看已安装软件的配置文件
rpm -qc 软件名
# 查看已安装软件的文档安装位置
rpm -qd 软件名
# 查看已安装软件依赖包和文件
rpm -qR 软件名
# 对未安装软件信息的查询
rpm -qpi rpm文件 查看一个软件包的用途和版本信息
rpm -qpl rpm文件 查看一个软件包所包含的文件
rpm -qpd rpm文件 查看软件包的文档所在位置
rpm -qpc rpm文件 查看软件包的配置文件
rpm -qpR rpm文件 查看软件包的依赖关
# 软件包的安装、升级、删除
rpm -ivh rpm文件 安装rpm包
rpm -Uvh rpm文件 更新rpm包
rpm -e 软件名 删除rpm包
rpm -e 软件名 –nodeps 不管依赖关系,强制删除软件
rpm –import 签名文件 导入签名
yum
语法: yum [选项] [参数]
选项:
参数:
常用:
>> 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
>> 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
>> 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
>> 删除程序
yum remove package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
>> 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
案例:
# 查找包
yum search 包名称
# 列出所有可安装的软件包
yum list
# 列出所有可以更新的软件包
yum list updates
# 列出所有已安装的软件包
yum list installed
# 不询问安装
yum -y install 软件包名称
ps
查看进程信息
ps -ef | grep 80
firewalld
防火墙
# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld