linux命令
文件处理命令
1 权限管理命令
2 文件搜索命令
3 帮助命令
3.1 man
查看命令的帮助:这个命令是干啥用的,/选项
查看配置文件的格式:
ps:1命令的帮助,5配置文件的帮助 man 5 service
3.2 whatis 命令
3.3 apropos 配置文件
3.4 –help 基本所有的命令
3.5 info 命令
3.6 help 命令
4 用户管理命令
4.1 useradd
4.2 passwd
4.3 who
4.4 w
5 压缩解压命令
.gz
5.1 gzip 只能压缩文件,不能压缩目录,不保留源文件
5.2 gunzip 解压
.tar.gz
5.3 tar -c打包目录,-v查看过程,-f 指定文件名,-z 压缩 通常zcf -cjf(bzip2)
5.4 tar -x解包目录,-v查看过程,-f 指定文件名,-z 压缩 通常zxf
5.5 zip 保留源文件 -r 压缩目录
5.6 unzip
.bzip2
5.7 bzip2 能保存源文件 -j
6 网络命令
6.1 write Ctrl+D 保存 发送信息
6.2 wall 发送给所有人,发送广播📢
6.3 ping 测试网络通信 -c 3
6.4 ifconfig
ifconfig eth0 192.168.1.1 临时更改IP
lo:回环网卡
6.5 mail
mail root Ctrl+D
6.6 last
统计登录的用户的信息
6.7 lastlog
查看用户的登录信息
-u 特定用户
6.8 traceroute
跟踪路由,查看访问了哪些IP
6.9 netstat
查询网络相关信息
-t TCP协议信息
-u UDP协议
-l 监听
-r 路由
-n IP地址
发起端口随机,接受端口一般固定
-tlun 本机监听的端口
-an 所有的网络连接
-rn 路由表
6.10 setup
6.11 mount
挂载命令 mount 设备名称 挂载点路径
umount 设备名称
7 关机重启命令
7.1 shutdown(只记这个)
-h 20:30指定时间
-c 取消上一个关机命令
-r 重启
7.2 halt
7.3 poweroff(绝对不用,这玩意直接断电)
7.4 init 0
7.5 reboot 重启
7.6 init 6 重启
7.7 系统运行级别(init)
- 0关机 1单用户 2不完全多用户,不含NFS服务 3完全多用户 4未分配 5图形界面 6重启
7.8 runlevel
查询运行级别
7.9 logout
退出登录
8 VIM
9 命令模式
vi/vim
10 插入模式
-iao
11 编辑模式
定位命令
gg 调到第一行
G 最后一行
:n到第N行
:set nu 显示行号
:set nonu 取消行号
删除命令
x 删除字符
dd 删除行,剪切
dG除光标所在行到文件末尾内容
:n1,n2 d删除指定范围的行
复制
yy 复制 nyy 复制n行
p 粘贴
替换
r 替换
u 撤销
查找
/查找内容 n
:替换范围%s(n1,n2) /old/new/g(不询问)
保存退出
:wq(快捷键ZZ)
12 VIM技巧
:r 文件名
导入
:!which ls
不退出vim 执行其他命令
两者结合
:r !date
:map Ctrl+v+p
添加自定义快捷键
:ab
/home/username/.vimrc
这里可以定义快捷键
13 软件包管理
14 软件包简介
源码包
脚本安装
rpm包
15 rpm包管理-rpm命令管理
15.1 rpm
有依赖性,及其蛋疼
rpm包中的文件
rpm -q 包名
rpm -qa | grep httpd
rpm -qi baoming
查看包的相关信息
rpm -ql
查询包的安装位置
rpm -f 文件名
根据文件名查找包
rpm -p
未安装包
rpm -qR 包名
查询包的依赖
15.2 rpm包的校验
rpm -V
查询rpm包是否修改
rpm 文件的提取
rpm2cpio 包全名 | cpio -idv .这个包下的某个文件或命令
适用场景:某个命令或配置文件被删除了,通过提取rpm包中的ls命令到当前目录下的/bin/
rpmwcpio 包名 | cpio -idv ./bin/
16 rpm包管理-yum命令管理
设置IP 子网掩码 网关 DNS
vi /etc/sysconfig/network-scripts/ifcfg-etho
cd /etc/yum.repos.d/
yum list
yum search 关键字
yum -y(yes) install 包名
一定要加包名,不然会升级所有的包,包括linux内核
yum -y remove 包名
yum grouplist
安装的功能组,方便,例如输入法组
yum grouplist install 组名
组名有空格,用“”
16.1 可以使用本地yum源
挂载->cd /etc/yum.repos.d/ 修改光盘的yum源文件cd CentOS-Media.repo中的baseurl,enable改成1,改其他yum源文件名使其失效
17 源码包管理
17.1 源码包和rpm包的区别
安装之前的区别
安装之后的区别:安装位置的区别
RPM包默认安装路径 | |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/ share/man/ | 帮助文件保存位置 |
源码包一般安装的指定位置一般是/usr/local/软件名
RPM包安装的服务可以使用系统服务管 理命令( service)来管理,例如RPM包安 装的 apache的启动方法是: /etc/re.d/init.d/httpdstart servicehttpdstart
red hat
服务管理命令
service 服务名 start
所以service不能管理源码包的安装
17.2 源码包安装过程
- 下载源码包
- 解压
- 进入解压缩目录
- INSTALL(不懂安装看这个文件)
- ./configure 软件配置与检查 ./configure –prefix=/usr/local/软件名
- Makefile 把定义好的功能选项和检测系统环境的信息 都写入 Makefile文件,用于后续的编辑。(这一步ls看下有没有对应的文件)
- make 编译
- make install
- 如果报错,清楚编译的临时数据(make clear)
- 没有报错就代表安装完了
17.3 如何选择源码包安装还是rpm包安装
如果是自己计算机使用,不对外提供服务,一般使用rpm
如果是访问量很大,需要一定的性能,一般使用源码包安装
18 脚本安装包与软件包选择
一般是硬件驱动会使用脚本安装
执行setup.sh
win中一般是软件名.exe
19 用户和用户组管理
19.1 用户配置文件
- 用户管理简介
- 信息存放的位置/etc/passwd 还有/etc/shadow
- /etc/passwd
- root : x:0(UID):0(GID):root(备注):/root(家目录):/bin/bash(登录后的shell)
- /etc/shadow
- root(用户名):$1$SAk9lsX5$rJA28ba/V.6iGY5ZHl3IJ1(加密的密码):(密码最后一次修改时间戳):0(两次修改间隔):99999(密码有效期):7(密码到期警告时间):5(密码到期宽限天数):(账号失效时间):(保留暂时没有用)
- 时间戳换算
- /etc/group
- root (组名): x(组密码标识):0(GID):(组中附加用户)
- gshadow
- root:::
19.1.1 用户管理相关文件
- 家目录
- 普通用户/home/用户名
- 超级用户/root
19.1.2 用户管理命令
- useradd
- -u(UID)d(家目录)c(用户说明)g(初始组名)G(附加组名)s shell(指定用shell解析器,默认是bash)
- vi /etc/default/useradd 缺省值配置文件
- vi /etc/login.defs 缺省值配置文件
- passwd
- passwd 选项 用户名
- -S(査询用户密码的密码状态。仅root用户 可用)l(锁定用户)u()
- ps:管道符的作用是将第一个命令的输出作为第二个命令的输入
- echo"123" | passwd–stdin lamp 将123作为lamp的密码
- usermod
- -u(UID)c(用户说明)G(附加组名)L(锁定用户)U(解锁用户)
- charge 选项 用户名
- chage -d 0 用户名 使用户的修改密码时间是0,保证用户首次登录后必须修改密码
- 其他的选项,了解就行,可以直接更改shadow
- userdel -r 用户名 删除的同时删除家目录
- id 用户名
- su - root 这个- 的意思是将连带用户的环境变量一起切换
- su- root-c"useradd user3 不切换用户,利用root的权限创建user3
19.1.3 用户组管理命令
- groupadd -g(组id) 组名
- groupmod -g(组id)n(组名) 组名
- groupdel 组名 需要先删除这个组的初始用户,才能删除这个组,附加用户不影响
- gpasswd -a(add)d(delete) user group
20 权限管理
20.1 ACL权限
- ACL权限简介
- 解决一个用户添加角色,但是所有者,所属组,其他人 这三种角色不符合我的预期,不想给他这三种默认的角色,而是想win一样给用户一个权限
- 分区ACL权限是否开启
- df -h
- dumpe2fs -h /dev/sda3
- vi /etc/fstab 查看硬盘挂载的配置文件
- 查看和设置ACL权限
- getfacle 文件名
- setfacl - m(设定权限)x(删除权限)b(删除目录所有ACL权限)d(默认)k(删除默认)R(递归设定) u(用户)g(组) 文件名
- setfacl -m u: 用户名: rx(权限) /project/(文件名)
- 最大有效权限,mask,设置的权限要与mask的权限做and的比较
- 默认ACL权限
- setfacl - m d(默认) u:用户名:rx R(递归设定) /文件 贴公告,新来的要遵守,老员工老油条依旧之前的ACL权限
- 递归的ACL权限
- setfacl - m u:用户名:rx R(递归设定) /文件
20.2 文件特殊权限
- SetUID(4)
- 只有可以执行的二进制程序才能设定SUD权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时获得该程序文件属 主的身份(在执行程序的过程中灵魂附体为文 件的属主) 举例:passwd命令
- Setuid权限只在该程序执行过程中有效,也就 是说身份改变只在程序执行过程中有效
- setUID很危险,关键目录不能谨慎设置写的权限,例如根目录,/usr
- 设定UID(4代表SUID)
- chmod4755文件名
- chmod u+s文件名
- 取消SUID
- chmod 755文件名
- chmod u-s文件名
- SetGID(2)
- SETGID针对文件的作用,基本和SUID一样 举例:mlocate
- SETGID针对目录的作用
- 普通用户必须对此目录拥有r和x权限,才 能进入此目录
- 普通用户在此目录中的有效组会变成此目 录的属组
- 若普通用户对此目录拥有w权限时,新建 的文件的默认属组是这个目录的属组
- chmod g+s 文件名
- Sticky BIT(1)
- 粘着位目前只对目录有效
- 普通用户对该目录拥有w和x权限,即普通用户 可以在此目录拥有写入权限
- 如果没有粘着位,因为普通用户拥有w权限, 所以可以删除此目录下所有文件,包括其他用 户建立的文件。一但赋予了粘着位,除了root可 以删除所有文件,普通用户就算拥有w权限, 也只能删除自己建立的文件,但是不能删除其 他用户建立的文件
- 防止别的用户对文件所有者的文件进行误删除
- chmod 1775 目录名
- chmod o+t 目录名
- 取消 chmod 777 目录名
- 取消 chmod o-t 目录名
20.3 文件系统属性chattr权限(这个比上面的UID安全)
- 简介
- chattr -change file attributeskon a Linux file system
- 对root也生效
- chattr +_= 选项 文件或目录
- i 锁住文件,不允许删除改名;对目录,不允许建立和删除
- a 锁住文件内容,不允许修改,可以新增;对目录,不允许删除
- lasttr -a 文件名
- 查看文件系统属性
20.4 系统命令sudo权限
- 简介
- root把本来只能超级用户执行的命令赋予 普通用户执行。
- sudo的操作对象是系统命令
- visudo
- IP是被管理的计算机的IP
- ALL=(ALL) ALL ALL=/sbin/Shutdown-r now 192.168.0.155/usr/bin/vim
- xiechaoxin ALL=/sbin/shutdown -r now
- sudo /sbin/shutdown -r now
- IP是被管理的计算机的IP
21 文件系统管理
22 回顾分区和文件系统
-
主分区
- /dev/sda1
-
逻辑分区
-
格式化为了写入文件系统
- ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2 文件系统。1993年发布,最大支持16TB 的分区和最大2TB的文件( 1TB=1024GB=1024*1024KB)
23 文件系统常用命令
- df 面向系统,包含系统进程占用的空间,查看剩余空间
- du 面向文件 统计目录大小 -sh eg:du -sh /etc/ 查看文件大小
- fsck 文件系统修复命令
- dumpe2fs
- 挂载光盘
- mkdir /mnt/cdrom
- mount -t /dev/cdrom(sr0) /mnt/cdrom
- 挂载U盘
- 查询设备文件名
- fdisk -l
- mount-t vfat /dev/sdbi /mnt/usb/
- Linux默认是不支持NTFS文件系统的
- 查询设备文件名
- 支持NTFS
- NTFS-3G插件
24 fdisk 分区
- 分区过程
- fdisk /dev/sdb
- fdisk交互指令说明
- a设置可引导标记
- b「编辑bsd磁盘标签
- c设置DOS操作系统兼容标记
- d删除一个分区
- l显示己知的文件系统类型。82为 Linux swap分区,83为 Linux分区
- m显示帮助菜单
- n新建分区
- o建立空白DOS分区表
- p显示分区列表
- q不保存退出
- s新建空白SUN磁盘标签
- t改变一个分区的系统D
- u改变显示记录单位
- v验证分区表
- w保存退出
- x附加功能(仅专家)
- partprobe
- 重新读取分区表信息
- mkfs-t ext4/dev/sdb 1
- 格式化分区(打隔断)
- 不能格式化扩展分区
- fdisk /dev/sdb
- 分区自动挂载与fstab文件修复
- vim /etc/fstab
- 自动挂载配置文件、
- UUID=4b942e5d-819e-4cae-b4ea-d5624d6ca3d3 swap swap defaults 0 0
- 第一字段:分区设备文件名或UUID(硬盘通用唯一识别 码)
- 第二字段:挂载点 第三字段:文件系统名称
- 第四字段:挂载参数
- 第五字段:指定分区是否被dump备份,0代表不备份,1 代表每天备份,2代表不定期备份
- 第六字段:指定分区是否被fsck检测,0代表不检测,其 他数字代表检测的优先级,那么当然1的优先级比2高
- vim /etc/fstab
25 /etc/fstab 文件修复
- mount-0 remount rw/
- 修复文件写错的,而导致进不去系统的问题
26 分配swap分区
27 shell
28 Shel概述
- echo[选项] [输出内容]
- shell注释
- #!/bin/bash
29 Shel脚本的执行方式
- 执行脚本
- ./hello.sh (常用)
- bash hello.sh
- dos2unix 文件名
- 将win下的脚本转换格式为
30 Bash的基本功能
-
历史命令和命令补全
- history
- -c 清空历史命令
- -w把缓存中的历史命令写入历史命令保存文件 ~/bash history
- !n 执行第n条命令,history中的命令
- history
-
别名和快捷键
-
alias 别名=‘原命令’
-
命令的执行顺序
- 绝对路径
- 别名
- 执行bash的内部命令
- 执行$PATH的环境变量命令
-
vi /root/.bashrc
- 让别名永久生效
-
bash常用快捷键(Ctrl+)
- C 终止当前命令
- L清屏
- U删除或剪切光标钱的命令
- Y粘贴
- R历史搜索
- D退出终端
-
-
输入输出重定向
-
输入输出
-
设备 设备文件名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/sdtout 1 标准输出 显示器 /dev/sdterr 2 标准错误输出 重定向
-
30.1 输出重定向
把shell脚本命令输出结果放到文件中
- ls > abc (覆盖)
- date >> abc (追加)
保存报错信息使用
- ls 2>> abc
同事保存正确和错误的输出
- 命令 &>> 文件
- 命令 &>> /dev/null
- 把结果丢到垃圾箱
分开保存正确✅和错误❎的结果
- 命令 >>文件1 2>>文件2
30.1.1 输入重定向
wc 选项 文件名
-c 统计字节数
-w 统计字节数
-l 统计字节数
命令< 文件
-
多命令顺序执行和管道符
-
所命令执行符 格式 作用 ; 分别执行,各不影响 && 一条执行,另一条才执行 || 前一条正确,后一条错误,或者相反 dd if输入文件 of输出文件 bs=字节数 count=个数
主要用于磁盘复制
-
管道符
- 命令1的正确输出作为命令2的操作对象
- grep -i(不区分大小写)n(行号)v(反向查找) 文件
-
-
通配符和其他特殊符号
-
通配符 作用 ? 匹配一个字符 * 任意一个或多个字符 [ ] 匹配之中的一个字符 [ - ] 匹配之间范围的一个字符 [ ^ ] 逻辑非,匹配不是中括号中的一个字符 -
符号 作用 '' 符号中特殊符号无意义 "" 符号中特殊字符有意义 `` 标记这里是为命令,先执行里面的命令 $() 和``一样,表明系统命令 $ 用于调用变量的值,如需要调用变量name的值时,需要用 Sname 的方式得到变量的值 \ 转义符
-
31 Bash的变量
-
什么是变量
- 值可以变得量
- 变量名不能是数字开头
- 变量默认类型是字符串类型
- 建议环境变量是大写
-
变量的分类
-
用户自定义变量
- 变量名=变量值
- echo
- 叠加:aa=${aa}789
- set 变量查看
- unset 变量删除
- 局部变量
-
环境变量
- 写入相应配置文件后,所有shell都会生效
- export 声明变量
- bash 子shell
- pstree 查看进程树
- env 查看变量
- set
- PATH="$PATH":/root
-
位置参数变量
-
位置参数变量 作用 $n n是数字,$0代表命令本身,$n的意思是第n个参数 $* 代表命令的所有的参数,把所有参数看做一个整体,这个for循环只有一个值 $@ 代表命令的所有的参数,把每个参数区别对待,这个可以for循环 $# 代表输入所有参数的个数
-
-
预定义变量
-
预定义变量 作用 $? 最后一次执行命令的返回状态,0是上一个命令正确执行 $$ 当前进程的进程号(PID) $! 后台运行的最后一个进程的进程号(PID) 把进程放后台(最小化)ls 文件名 &
符号&的意图是把命令放入后台执行,工作管理我们在系统管理章会详细介绍
-
-
$PS1 预设符 [root@localhost ~]#
-
接收键盘输入
- read 选项-p(提示信息)t(等待时间)n(接受指定的字符数)s(隐藏输入数据) 变量名
-
32 Bash的运算符
-
数值运算与运算符
- declare声明变量类型
- declare[+/-] [选项]变量名
- p(显示变量的声明类型)i(数值类型的运算)
- expr (建议不用)
- let(建议不用)
- $((运算式))
- declare[+/-] [选项]变量名
- declare声明变量类型
-
变量测试与内容替换
-
变量置换方式 变量y没有设置变量 y为空值变量 y设置值 x={$y-新值} ![image-20210708213637158](/Users/xiechaoxin/Library/Application Support/typora-user-images/image-20210708213637158.png)
-
33 环境变量配置文件
- 简介
- /etc/profile
- 环境变量配置文件的作用
- ![image-20210708215015353](/Users/xiechaoxin/Library/Application Support/typora-user-images/image-20210708215015353.png)
- 其他配置文件
- ~/bash/history
- shell登录信息 vi /etc/issue
- 登录前的欢迎信息和登录后的欢迎信息
34 shell编程
35 基础正则表达式
-
正则和通配符的区别和应用场景
- 正则是用来匹配文件中符合条件的字符串,正则是包含匹配
- 通配符是用来匹配符合条件的文件名,通配符是完全匹配
-
基础正则表达式
-
元字符 作用 * 前一个字符匹配0次或任意多次 . 匹配除了换行符外任意一个字符。 ^ 匹配行首。例如:^hell会匹配以hell开头的行。 $ 匹配行尾。例如:hell&会匹配以hell结尾的行。 [ ] 匹配中括号中指定的任意一个字符,只匹配一个字符。 例如:[ abel ]匹配任意一个元音字母,[0-9]匹配任意一位 数字,[a-z][0-9]匹配小写字和一位数字构成的两位字符。 [ ^ ] 匹配除中括号的字符以外的任意一个字符。例如:[^0-]匹配 任意一位非数字字符,[a-]表示任意一位非小写字母 \ 转义符。用于取消讲特殊符号的含义取消。 { n} 表示其前面的字符恰好出现n次。例如:[o-9]{4}匹配4位数字,[1I3-8]10-99}匹配手机号码。 {n,} 表示其前面的字符出现不小于n次。例如:[0-9]2,}表示两 位及以上的数字。 {n,m} 表示其前面的字符至少出现n次,最多出现m次。例如:[a z](68V}匹配6到8位的小写字母。
-