1.文件目录
第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道。 后面的分三个三个来看,即 rwx 、r-x 、r-x。 read write excute //文件夹只有x权限 才可以进去 第一个: root :r 是可读,w 是可写,x 是可执行,rwx 意思是可读可写可执行。 第二个: 一般用户(用户组):r-x 是可读可执行不可写。 第三个: 其他用户,r-x 是可读可执行不可写。
2.基本命令 ls list
ls [-选项] [参数] -a // all 显示隐藏文件 -l // long 长显示 显示更多信息 -d // detail 显示文件本身信息 -h // human 以人类角度 友好显示, 比如文件大小 会以多少Kb或者多少兆的形式显示 mkdir make directories mkdir [-p] 目录名 -p // partents 递归创建目录 -m // mode=模式 创建指定权限的目录 rmdir remove empty directory 删除目录 rmdir [-r] 目录 -r //允许删除非空目录 cd change directory cd [目录] .. //回到上一级目录 cp copy cp [-rp] 源文件或目录 目标目录 -r //复制目录 -p // properties 保留文件属性连同档案的属性一起复制过去,而非使用预设属性 -a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制 -d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身; -f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制; -i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作! -l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身; -r :递归持续复制,用于目录的复制行为; -s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案; -u :若 destination 比 source 旧才更新 destination。 支持同时复制多个文件 cp /source1 /source2 /target mv 剪切 改名 mv 源文件或目录 目标目录 rm remove 目录处理命令 rm [-rf] 文件或目录 -r //删除目录 -f //强制删除
3.文件处理命令
touch 创建空文件 , 不是文件夹 touch 文件名 cat 显示文件内容 cat [-n] 文件名 -n //显示行号 tac 显示文件内容 (反向列示)
tac 文件名
more 分页显示文件内容
more 文件名
(空格)或 f //翻页
(ENTER) // 换行
q 或 Q //quite 退出
less 分页显示文件内容(可上下翻)
less 文件名
(page down) // 下翻(一页)
(page up) // 上翻(一页)
(上箭头) //上翻(一行)
head 显示文件内容前几行 默认显示前十行
head [-n Number] 文件名
-n Number //显示前多少行 -n 20 显示前二十行
tail 显示文件后面几行 默认显示前十行
tail [-nf] 文件名
-n //指定行数
-f //动态显示文件末尾内容
ln 生成链接文件 ## 软连接类似windows快捷方式 ##硬链接 可以 源文件同步更新
ln [-s] 源文件 目标文件
-s //soft 创建软链接 没有 -s 则生成硬链接
压缩和解压
gzip 压缩文件
gzip 文件 ## 只能压缩文件,并且不保留源文件
gunzip 解压文件
gunzip 压缩文件 同 gzip -d
tar 打包目录
tar [-cvfz] 压缩后的文件名 目录
-c //打包
-x //解压
-v //显示详细信息
-f //指定文件名称
-z //-zc 压缩 -zx 解压缩
## 组合 -zcvf 压缩, -zxvf 解压, -cjf 生成bz2文件和bzip2命令一样压缩 , -xjf和bunzip2一样 解压
zip [-r] 压缩后的文件名 文件或目录
-r //压缩目录
unzip 解压缩
unzip 文件或目录
bzip2 压缩文件
bzip2 [-k] 文件
-k //保留源文件, gzip不保留源文件
bunzip2 解压文件
bunzip2 压缩文件
4.权限管理
chmod 改名文件或目录的权限
chmod [{ugoa}{+-=}{rwx}] 文件或目录
chmod [mode=421] 文件或目录
-R 文件或目录 //递归修改
示例:chmod u+x aa.sh 给当前所有者赋予文件可执行权限 u+x,g-r 可以使用逗号 多个授权
{ugoa} u:所有者 g:所有组 o:其他用户 a:所有用户
{+-=} +:增加权限 -:减少权限 =:重新赋予权限
{rwx} r:可读 w:可写 x:可执行
权限同时也可以使用数字表示
4-->r 2-->w 1-->x
示例: chmod 777 aa.sh 表示所有者、所有组和其他者 都赋予 读写执行的权限, 7 为 4+2+1 ,6为4+2,5为4+1 4为4 3为2+1 ...
chown 改变文件的所有者 change file ownership
chown 用户 文件或目录
##
##umask 0022 第一个 0 特殊权限
5.文件搜索
find 文件搜索
find [搜索范围] [匹配条件]
-name 按名称搜索
-iname 按名称查找 // 不区分大小写
-size 文件大小 // +:大于 , -:小于 , 没有符号 是等于
-user [用户] // 按所有者查找
-group [组] // 按所属组查找
-amin //访问时间 access ,什么时间被访问过 -amin -5 5分钟被访问过
-cmin //文件属性 change 如 权限 ,所属者 所属组
-mmin //文件内容 modify
-type // f :文件 d:目录 i:软连接文件
-inum //i节点 ,每个文件 都有一个i节点
## 连接选项
-a //and 两个条件同时满足
-o //or 满足其中一个条件
## 查找结果执行命令
-exec 命令 {};
-ok 命令 {} ; //会多了一个确认,好比js中的confirm
#这两个命令都是对查找结果执行想要的命令,例如 ls -l 查看详细, 其中 {} 表示查找的结果,表示转义符,最后使用分号结尾;
示例 find /ect -size +2048 -a -4096 查找文件 在 1M~2M之间的文件
示例:find /etc -size +512 ## 1M = 1024k, 1k = 2数据块(linux中存储文件最小单位)
示例:find /ect -name init // 在etc下面搜索名称为init文件(精准搜索)
## * :匹配任意字符 如 *init*
## ? : 匹配单个人任意字符 如 init???
locate 在文件资料库中查找文件(速度快)
locate [-i] 文件名
-i //不区分大小写
## 可能资料库中并不存在要查找的文件, 需要使用 updatedb 命令 更新资料库
## 文件在 /tmp 中的文件 查不到,不在locate的收录范围内
grep 在文件中搜寻字符串匹配的行并输出
grep [-iv] 指定字符串 文件
-i //不区分大小写
-v //排除指定字符串
which 搜索命令所在目录及别名信息
which 命令
whereis 搜索命令 并且显示帮助文档所在位置
whereis 命令
6.帮助命令
man manual获得帮助信息
man [n] 命令
n : 1:命令的帮助 5:配置文件的帮助
## 同一个命令的结果 可能是命令 也可能是配置文件 , 默认是1, man 命令 有多个结果时默认为命令的帮助
whatis 得到命令的简短介绍
whatis 命令
命令 --help 列出常见的命令选项
示例: touch --help //列出touch 的参数
info 获取帮助信息 和 man 类似 ,只是显示方式不太一样
help 查看命令的帮助信息
help 命令
## 有些命令,是内置命令 获取不到帮助信息, 这个时候就要使用help 命令
7.用户管理命令
useradd 添加新用户
useradd 用户名
passwd 设置用户密码
passwd 用户名 ##会提示输入用户密码
who 查看当前登录用户
who ##没有参数
## 显示结果 登录用户名 登录终端(tty本地终端 pts 远程终端) 登录时间 IP地址
获取更为详细的信息 使用 w 命令
8.网络命令
write 给用户发信息 CTRL+D 保存结束(所有用户都可以使用)
write 用户名 [回车] [message] [CTRL+D]
##一定是在线用户
all //发送广播信息 ,给所有人发信息
ping 测试网络连通性
ping [-c] IP地址
-c //指定发送次数
示例: ping -c 5 192.168.1.119 测试连接5次
ifconfig 查看和设置网卡信息 interface configure
ifconfig 网卡名称 IP地址
##ifconfig eth0 192.168.1.120 注:这个是临时的,每次重启需要重新设置
mail 查看发送电子邮件
mail [用户名]
##查看自己的邮件 输入序列号即可
d 序列号 // 删除邮件
h //返回邮件列表
q //退出
last 列出目前与过去登入系统的用户信息
## 无条件参数
lastlog 列出用户最后一次登录,包括未登录的用户
lastlog -u 用户ID //指定用户 //命令 id 查出当前用户id信息
traceroute 显示数据包到主机间的路径
示例: traceroute www.baidu.com ,显示连接到baidu 所有路径
netstat 显示网络相关信息
netstat [选项]
-t //TCP协议
-u //UDP协议
-l //监听
-r //路由
-n // 显示IP地址和端口号
示例:
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机的路由表
setup 网络设置 ## 可能不存在此命令
service network restart 修改网络需要重启网络服务
mount 挂载命令 ##习惯使用/mnt 挂载点
mount [- 文件系统] 设备文件名 挂载点
示例 mount -t iso9960 /dev/sr0 /mnt/chrom/ 把设备文件名 挂到挂载点
umount 卸载
umount 设备文件名
9.关机重启命令
shutdown [-chr] 时间
-c: 取消前一个关机命令
-h: 关机
-r: 重启
示例:shutdown -h now
halt和 poweroff 和init 0 是关机命令
reboot 和 init 6 重启
init 系统运行级别
0:关机
1:单用户(启动最核心的程序)
2:不完全多用户, 不含NFS服务(网络文件服务)
3:完全多用户
4:未分配
5:图形界面
6:重启
runlevel 查询运行级别
logout 用户退出
10.文本编辑器
vim 编辑文本
vim 文件名
: //命令
set nu //设置行号
set nonu //取消行号
n //到第n行
wq //保存退出
n,nd //删除指定范围的行 例如 :10,15d ##删除10 -15 行
ic //不分大小写 (搜索时)
noic //区分大小写
r 文件名 //导入另一个文件的内容到此文件中
r !命令 //可以把一个命令 执行的结果导入文件中
ab a b //替换 输入a 在按回车或空格 会显示为 b
##插入命令
i //光标前插入
I //光标所在行 行首插入
a //光标后插入
A //光标所在行 行尾插入
o //光标下入去新行
O //光标上插入新行
##换行命令
gg //到第一行
G //到最后一行
nG //到第n行 ,例如:5G跳到第5行
$ //移至行尾
0 //移至行首
##删除命令
x //删除光标所在处的一个字符
X //删除光标所在处的前一个字符
nx //删除光标所在处的n给字符
dd //删除光标所在行,ndd 删除n行
dg //删除光标所在行到文件末尾内容
D //输出光标所在处到行尾内容
## 剪切
yy //复制当前行
nyy //复制n行
dd //删除 也表示剪切
p //粘贴到当前光标行下
P //粘贴到当前光标行上
#替换
r //替换一个字符
R //当前光标开始替换
##撤回
u //撤回执行操作
/ //搜索功能 /aa ##按回车开始搜索aa字符
##################
可以在/home/username/.vimrc 添加快捷设置
例如:
ab email xxxx@qq.com
map ^P I#<ESC> // 光标所在行首添加#号 , map定义 ^P使用P字符 调用命令 I# ,I:光标宜动到所在行的最前面,最后ESC退出
11.软件包管理
RPM包的命名规则 (未安装使用包全名,已安装使用包名)
RMP包的依赖性
rpm -ivh 安装包全名
-Uvh 包全名
-e 包名
-q 包名
-ql 包名 //查询包的文件在哪
-qf 系统文件名 //file 文件属于哪个包
-qR 包名 //requires 包的依赖性 需要哪些依赖包
-i //install
-v //安装信息
-h //安装过程
-U //upgrade 升级
-e //erase 卸载
-q //query 查询
-qa //查询所有安装包
-qi //information 查询安装包的信息
-qip //package 查询未安装包的信息(指定包全名)
## 包校验 是否被更改
rpm -V 已安装的包名(verify)
rpm2cpio 将rpm包转换为pio格式的命令
cpio 用户出昂见软件档案文件和从档案文件中提取文件
cpio [-idv] 文件或设备
i:copy-in模式, 还原
d:还原是自动新建目录
-v:显示还原过程
示例:rpm2cpioo 包全名 | cpio -idv .文件绝对路径
yum 在线安装
yum list 查询所有可用软件包列表
yum serach 关键字(包名)
yum -y install 包名
install 安装
-y 自动回答yes #表示自动安装,不需要询问
yum -y update 包名 //升级 慎重使用
yum -y remove 包名 //卸载
###软件组管理命令
## 列出所有可用的软件组列表
yum grouplist
yum groupinstall 软件组名
yum groupremove 软件组名
## 源码包 和 RPM 包 的区别
#RPM包默认安装路径
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置
12 用户 和 用户组 的管理
/etc/passwd
/ect/shadow
/etc/group
/etc/gshadow
/home/用户名
/var/spool/mail/用户名
useradd 添加用户
useradd [-udcgGs] 用户名
-u UID 手工指定用户的UID号
-d 家目录
-c 用户说明
-g 组名 //初始化组
-G 组名 //附加组
-s Shell //指定用户登录的shell
passwd 用户设置密码
passwd [-ul] 用户
-u //用户解锁
-l //用户锁定
echo "变量" | passwd --stdin 用户名
## 使用 变量 作为 当前用户的密码
## echo "123" | passwd --stdin username
usermod 修改用户信息 modify
usermod [-ucGLU] 用户名
-u UUID //修改UUID
-c 用户说明 //修改用户的说明信息
-G 组名 //修改用户附加组
-L //临时锁定用户
-U //解锁
userdel [-r] 用户名
-r 删除用户的同时删除家目录
change 修改用户密码状态
change [-ldmMWIE] 用户名
-l //list 列出用户的详细密码状态
-d 日期 //修改密码最后一次更改日期(shadow3字段)
-m 天数 //两次密码修改时间(4字段)
-M 天数 //密码有效期(5字段)
-W 天数 //密码过期前警告天数(6字段)
-I 天数 //密码或期后宽限天数(7字段)
-E 日期 //账号失效时间(8字段)
su - 用户 //切换用户 #su 用户 普通用户切换为root用户不会改变环境变量,需要加 -
su - root -c "命令" //不切换用户 ,执行命令 su - root -c "useradd user1" ## 添加用户user1
###用户组管理
groupadd [-g] 组名
-g GID //自定组GID
groupmod [-gn] 组名
-g GID //修改组ID
-n 新组名 //修改组名
groupdel 组名 //删除组
gpasswd [-ad] 用户名 组 //当前用户加入组 或者 删除组
-a //add 加入组
-d //delete 删除组
13 ACL权限管理(Access Control List 访问控制列表,一个针对文件/目录的访问控制列表)
df -h 查看分区
## 查询指定分区详细文件系统信息的命令
dumpe2fs -h /dev/sda3
-h 仅仅显示超级快中信息, 而不是显示磁盘块组的详细信息
## 临时开启分区ACL权限
mount -o remount,acl ## 重新挂载根分区,并挂载加入acl权限
## 永久开启分区ACL权限
vi /etc/fstab
mount -0 remount / ## 修改后重新挂载重新 启动
## 查看ACL命令
getfacl 文件名 //查看acl权限
## 设定ACL权限的命令
setfacle [选项] 文件名
-m u: 用户名:rx //设定ACL权限 , 给用户 设定 rx权限
-x //删除指定的ACL权限
-b //删除所有的ACL权限
-d //设定默认ACL权限
-k //删除默认ACL权限
-R //递归设定ACL权限
## setfacl -m u:用户名:权限 -R 文件名
### 最大有效权限mask
如果我给用户赋予了ACL权限,是需要和mask的权限 “相与” 才能得到用户的真正权限 ,所谓相与就是 mask有的权限,用户也要有才能真正的拥有权限
##设置最大(mask)权限
setfacl -m m:rx 文件名 //设置mask权限
## 默认ACL权限
setfacl -m d:u:用户名:权限 文件名
## 文件的特殊权限
setUID //U : user
** 只有可以执行的二进制程序才能设定SUID权限
** 命令执行者要对该程序用有 x 权限
** 命令执行者在执行该程序时获得该程序文件属主的身份(若用户拥有SUID权限,在执行命令时 就会拥有root的权限)
** SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
setGID G:Group //设置用户 获得 所属组权限
Sticky BIT // 粘着位权限 值针对目录有效 (除了root可以删除所有文件, 普通用户就算用户w权限,也只能删除自己建立的文件 )
chmod 1775 文件 // 1 赋予粘着位
### 文件系统属性chattr权限
chattr [+-=] [选项] 文件或目录名
+ //增加权限
- //删除权限
= //等于某权限
##选项
i //如果是文件,不允许对文件进行删除、改名, 添加和修改数据;
//如果是目录 只能修改目录下文件的数据, 不允许建立和删除文件
a //如果是文件,只能在文件中增加数据,不能删除和修改
//如说是目录, 只允许在目录中建立和修改文件, 不允许删除
lsattr 选项 文件名
-a //显示所有文件和目录
-d //如目标是是目录,仅列出目录本身的属性,而不是子文件
14 文件系统管理
分区类型 (主分区和扩展分区 总共最多为4个)
主分区:最多只能分4个
扩展分区:只能一个,也算主分区的一种,但不能存储数据和格式化,必须再划分为逻辑分区才能使用
逻辑分区:是在扩展分区中划分的,如果是IDE硬盘,linux最多支持59个逻辑分区,如果是SCSI硬盘,Linux最多支持11个逻辑分区
文件系统
ext2 最大支持16TB
ext3 最大支持16TB,带日志功能
ext4 最大1EB,单个文件最大16TB
##越高级的系统越先进
df 查看分区 会计算文件占用空间和命令或程序占用的空间(如文件已删除但程序没有释放空间)
-h //人性化显示 、、
-a //显示隐藏分区
du 查看目录大小,面向文件,只会计算文件或目录占用的空间
-h //人性化
-s //统计占总量 statistic
##例如 du -sh /
文件系统修复命令 一般不需要手动修复
fsck [选项] 分区设备文件名
-a //不用显示用户提示,自动修复文件系统
-y //自动修复 和 -a的作用一致,不过有些文件系统只支持 -y
显示磁盘状态命令
dumpe2fs 分区设备文件名
## 例如 dumpe2fs /dev/sda1
查询与自动挂载 //挂载点 就是一个目录
mount [-l] //显示已挂载的设备 -l会显示卷标名称
mount -a //依据配置文件/etc/fstab的内容,自动挂载
挂载命令的格式
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
-t 文件系统 :加入文件系统类型来指定挂载大的类型,可以ext3,ext4.iso9660等文件系统 //挂载是硬盘、分区 默认 ext3/ext4 ,如果是光驱 默认文件系统是iso9660
-L 卷标名 : 挂载指定卷标的分区,而不是安装设备文件名挂载 //卷标名就是别名
-o 特殊选项 :可以指定挂载的额外选项,如remount exec 等
挂载光盘 与 U盘 示例:
1.挂载光盘
1 mkdir /mnt/chrom/ //建立挂载点(盘符或目录)只要是创建一个空目录就行
2 把光盘放入光驱
3 mount -t iso9660 /dev/cdrom /mnt/cdrom/ //挂载光盘,把设备文件和挂载点连接起来
## -t 可以省略 : mount /dev/cdrom /mnt/cdrom/
2.卸载命令
unmount 设备文件名或挂载点
## unmount /mnt/cdrom/
3.挂载U盘 ## 必须使用linux本身,鼠标点进linux里,然后再插入U盘
1 fdisk -l //查看U盘设备文件名
2 mount -t vfat /dev/sdb1 /mnt/usb/
## LINUX 默认不支持NTFS文件系统的,可以使用NTFS-3G插件,支持NTFS
fdisk 分区过程
###可以使用 vmware 添加硬盘
fdisk l //查看一下新添加的硬盘
fdisk 设备文件名 回车
d //删除一个分区
n //新建分区
l //显示已知的文件系统类型
p //显示分区列表
m //显示帮助信息
w //保存
q //退出
例如: fdisk /dev/sdb //分区还不存在 只能写sdb
### 重新读取分区表信息
partprobe ## 这样新增的分区 就可以不用重启就能使用
格式化分区
mkfs -t ext4 /dev/sdb1 ##扩展分区不能格式化
挂载分区
mount /dev/sdb1 /mnt/usb
## fdisk 重启要重新挂载
分区自动挂载 与fstab文件修复
/etc/fstab文件
文件内容:
/dev/sdb1 /disk1 ext4 defualts 1 2
第一字段:分区设备文件名或UUID(不用担心分区顺序) dumpe2fs 查看UUID
第二字段:挂载点
第三字段:文件系统名称
第四字段:挂载参数
第五字段:指定分区是否被dump备份, 0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,1优先于2
#自动挂载
mount -a
### 若/etc/fstab没有修改权限 给分区 重新挂载设置权限
mount -o remount,rw / //给读写权限