目录

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 源码包安装过程

  1. 下载源码包
  2. 解压
  3. 进入解压缩目录
  4. INSTALL(不懂安装看这个文件)
  5. ./configure 软件配置与检查 ./configure –prefix=/usr/local/软件名
  6. Makefile 把定义好的功能选项和检测系统环境的信息 都写入 Makefile文件,用于后续的编辑。(这一步ls看下有没有对应的文件)
  7. make 编译
  8. make install
    1. 如果报错,清楚编译的临时数据(make clear)
    2. 没有报错就代表安装完了

17.3 如何选择源码包安装还是rpm包安装

​ 如果是自己计算机使用,不对外提供服务,一般使用rpm

​ 如果是访问量很大,需要一定的性能,一般使用源码包安装

18 脚本安装包与软件包选择

一般是硬件驱动会使用脚本安装

执行setup.sh

win中一般是软件名.exe

19 用户和用户组管理

19.1 用户配置文件

  1. 用户管理简介
    1. 信息存放的位置/etc/passwd 还有/etc/shadow
    2. /etc/passwd
      • root : x:0(UID):0(GID):root(备注):/root(家目录):/bin/bash(登录后的shell)
    3. /etc/shadow
      • root(用户名):$1$SAk9lsX5$rJA28ba/V.6iGY5ZHl3IJ1(加密的密码):(密码最后一次修改时间戳):0(两次修改间隔):99999(密码有效期):7(密码到期警告时间):5(密码到期宽限天数):(账号失效时间):(保留暂时没有用)
      • 时间戳换算
    4. /etc/group
      • roo​t​ (组名): x(组密码标识):0(GID):(组中附加用户)
    5. gshadow
      • root:::

19.1.1 用户管理相关文件

  1. 家目录
    1. 普通用户/home/用户名
    2. 超级用户/root

19.1.2 用户管理命令

  1. useradd
    • -u(UID)d(家目录)c(用户说明)g(初始组名)G(附加组名)s shell(指定用shell解析器,默认是bash)
    • vi /etc/default/useradd 缺省值配置文件
    • vi /etc/login.defs 缺省值配置文件
  2. passwd
    • passwd 选项 用户名
    • -S(査询用户密码的密码状态。仅root用户 可用)l(锁定用户)u()
    • ps:管道符的作用是将第一个命令的输出作为第二个命令的输入
    • echo"123" | passwd–stdin lamp 将123作为lamp的密码
  3. usermod
    • -u(UID)c(用户说明)G(附加组名)L(锁定用户)U(解锁用户)
  4. charge 选项 用户名
    • chage -d 0 用户名 使用户的修改密码时间是0,保证用户首次登录后必须修改密码
    • 其他的选项,了解就行,可以直接更改shadow
  5. userdel -r 用户名 删除的同时删除家目录
  6. id 用户名
  7. su - root 这个- 的意思是将连带用户的环境变量一起切换
  8. su- root-c"useradd user3 不切换用户,利用root的权限创建user3

19.1.3 用户组管理命令

  1. groupadd -g(组id) 组名
  2. groupmod -g(组id)n(组名) 组名
  3. groupdel 组名 需要先删除这个组的初始用户,才能删除这个组,附加用户不影响
  4. gpasswd -a(add)d(delete) user group

20 权限管理

20.1 ACL权限

  1. ACL权限简介
    1. 解决一个用户添加角色,但是所有者,所属组,其他人 这三种角色不符合我的预期,不想给他这三种默认的角色,而是想win一样给用户一个权限
  2. 分区ACL权限是否开启
    1. df -h
    2. dumpe2fs -h /dev/sda3
    3. vi /etc/fstab 查看硬盘挂载的配置文件
  3. 查看和设置ACL权限
    1. getfacle 文件名
    2. setfacl - m(设定权限)x(删除权限)b(删除目录所有ACL权限)d(默认)k(删除默认)R(递归设定) u(用户)g(组) 文件名
    3. setfacl -m u: 用户名: rx(权限) /project/(文件名)
  4. 最大有效权限,mask,设置的权限要与mask的权限做and的比较
  5. 默认ACL权限
    1. setfacl - m d(默认) u:用户名:rx R(递归设定) /文件 贴公告,新来的要遵守,老员工老油条依旧之前的ACL权限
  6. 递归的ACL权限
    1. setfacl - m u:用户名:rx R(递归设定) /文件

20.2 文件特殊权限

  1. SetUID(4)
    1. 只有可以执行的二进制程序才能设定SUD权限
    2. 命令执行者要对该程序拥有x(执行)权限
    3. 命令执行者在执行该程序时获得该程序文件属 主的身份(在执行程序的过程中灵魂附体为文 件的属主) 举例:passwd命令
    4. Setuid权限只在该程序执行过程中有效,也就 是说身份改变只在程序执行过程中有效
    5. setUID很危险,关键目录不能谨慎设置写的权限,例如根目录,/usr
    6. 设定UID(4代表SUID)
      1. chmod4755文件名
      2. chmod u+s文件名
    7. 取消SUID
      1. chmod 755文件名
      2. chmod u-s文件名
  2. SetGID(2)
    1. SETGID针对文件的作用,基本和SUID一样 举例:mlocate
    2. SETGID针对目录的作用
      1. 普通用户必须对此目录拥有r和x权限,才 能进入此目录
      2. 普通用户在此目录中的有效组会变成此目 录的属组
      3. 若普通用户对此目录拥有w权限时,新建 的文件的默认属组是这个目录的属组
      4. chmod g+s 文件名
  3. Sticky BIT(1)
    1. 粘着位目前只对目录有效
    2. 普通用户对该目录拥有w和x权限,即普通用户 可以在此目录拥有写入权限
    3. 如果没有粘着位,因为普通用户拥有w权限, 所以可以删除此目录下所有文件,包括其他用 户建立的文件。一但赋予了粘着位,除了root可 以删除所有文件,普通用户就算拥有w权限, 也只能删除自己建立的文件,但是不能删除其 他用户建立的文件
    4. 防止别的用户对文件所有者的文件进行误删除
    5. chmod 1775 目录名
    6. chmod o+t 目录名
    7. 取消 chmod 777 目录名
    8. 取消 chmod o-t 目录名

20.3 文件系统属性chattr权限(这个比上面的UID安全)

  1. 简介
    • chattr -change file attributeskon a Linux file system
    • 对root也生效
  2. chattr +_= 选项 文件或目录
  3. i 锁住文件,不允许删除改名;对目录,不允许建立和删除
  4. a 锁住文件内容,不允许修改,可以新增;对目录,不允许删除
  5. lasttr -a 文件名
    1. 查看文件系统属性

20.4 系统命令sudo权限

  1. 简介
    1. root把本来只能超级用户执行的命令赋予 普通用户执行。
    2. sudo的操作对象是系统命令
  2. visudo
    1. IP是被管理的计算机的IP
      • ALL=(ALL) ALL ALL=/sbin/Shutdown-r now 192.168.0.155/usr/bin/vim
      • xiechaoxin ALL=/sbin/shutdown -r now
    2. sudo /sbin/shutdown -r now

21 文件系统管理

22 回顾分区和文件系统

  1. 主分区

    1. /dev/sda1
  2. 逻辑分区

  3. 格式化为了写入文件系统

    • ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2 文件系统。1993年发布,最大支持16TB 的分区和最大2TB的文件( 1TB=1024GB=1024*1024KB)

23 文件系统常用命令

  1. df 面向系统,包含系统进程占用的空间,查看剩余空间
  2. du 面向文件 统计目录大小 -sh eg:du -sh /etc/ 查看文件大小
  3. fsck 文件系统修复命令
  4. dumpe2fs
  5. 挂载光盘
    1. mkdir /mnt/cdrom
    2. mount -t /dev/cdrom(sr0) /mnt/cdrom
  6. 挂载U盘
    1. 查询设备文件名
      1. fdisk -l
    2. mount-t vfat /dev/sdbi /mnt/usb/
    3. Linux默认是不支持NTFS文件系统的
  7. 支持NTFS
    1. NTFS-3G插件

24 fdisk 分区

  1. 分区过程
    1. fdisk /dev/sdb
      1. fdisk交互指令说明
      2. a设置可引导标记
      3. b「编辑bsd磁盘标签
      4. c设置DOS操作系统兼容标记
      5. d删除一个分区
      6. l显示己知的文件系统类型。82为 Linux swap分区,83为 Linux分区
      7. m显示帮助菜单
      8. n新建分区
      9. o建立空白DOS分区表
      10. p显示分区列表
      11. q不保存退出
      12. s新建空白SUN磁盘标签
      13. t改变一个分区的系统D
      14. u改变显示记录单位
      15. v验证分区表
      16. w保存退出
      17. x附加功能(仅专家)
    2. partprobe
      1. 重新读取分区表信息
    3. mkfs-t ext4/dev/sdb 1
      1. 格式化分区(打隔断)
      2. 不能格式化扩展分区
  2. 分区自动挂载与fstab文件修复
    1. vim /etc/fstab
      1. 自动挂载配置文件、
    2. UUID=4b942e5d-819e-4cae-b4ea-d5624d6ca3d3 swap swap defaults 0 0
    3. 第一字段:分区设备文件名或UUID(硬盘通用唯一识别 码)
    4. 第二字段:挂载点 第三字段:文件系统名称
    5. 第四字段:挂载参数
    6. 第五字段:指定分区是否被dump备份,0代表不备份,1 代表每天备份,2代表不定期备份
    7. 第六字段:指定分区是否被fsck检测,0代表不检测,其 他数字代表检测的优先级,那么当然1的优先级比2高

25 /etc/fstab 文件修复

  1. mount-0 remount rw/
    1. 修复文件写错的,而导致进不去系统的问题

26 分配swap分区

27 shell

28 Shel概述

  1. echo[选项] [输出内容]
  2. shell注释
    1. #!/bin/bash

29 Shel脚本的执行方式

  1. 执行脚本
    1. ./hello.sh (常用)
    2. bash hello.sh
  2. dos2unix 文件名
    1. 将win下的脚本转换格式为

30 Bash的基本功能

  1. 历史命令和命令补全

    1. history
      1. -c 清空历史命令
      2. -w把缓存中的历史命令写入历史命令保存文件 ~/bash history
    2. !n 执行第n条命令,history中的命令
  2. 别名和快捷键

    1. alias 别名=‘原命令’

    2. 命令的执行顺序

      1. 绝对路径
      2. 别名
      3. 执行bash的内部命令
      4. 执行$PATH的环境变量命令
    3. vi /root/.bashrc

      1. 让别名永久生效
    4. bash常用快捷键(Ctrl+)

      1. C 终止当前命令
      2. L清屏
      3. U删除或剪切光标钱的命令
      4. Y粘贴
      5. R历史搜索
      6. D退出终端
  3. 输入输出重定向

    1. 输入输出

    2. 设备 设备文件名 文件描述符 类型
      键盘 /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 统计字节数

     命令< 文件
  1. 多命令顺序执行和管道符

    1. 所命令执行符 格式 作用
      分别执行,各不影响
      && 一条执行,另一条才执行
      || 前一条正确,后一条错误,或者相反

      dd if输入文件 of输出文件 bs=字节数 count=个数

      ​ 主要用于磁盘复制

    2. 管道符

      1. 命令1的正确输出作为命令2的操作对象
      2. grep -i(不区分大小写)n(行号)v(反向查找) 文件
  2. 通配符和其他特殊符号

    1. 通配符 作用
      匹配一个字符
      * 任意一个或多个字符
      [ ] 匹配之中的一个字符
      [ - ] 匹配之间范围的一个字符
      [ ^ ] 逻辑非,匹配不是中括号中的一个字符
    2. 符号 作用
      '' 符号中特殊符号无意义
      "" 符号中特殊字符有意义
      `` 标记这里是为命令,先执行里面的命令
      $() 和``一样,表明系统命令
      $ 用于调用变量的值,如需要调用变量name的值时,需要用 Sname 的方式得到变量的值
      \ 转义符

31 Bash的变量

  1. 什么是变量

    • 值可以变得量
    • 变量名不能是数字开头
    • 变量默认类型是字符串类型
    • 建议环境变量是大写
  2. 变量的分类

    1. 用户自定义变量

      1. 变量名=变量值
      2. echo
      3. 叠加:aa=${aa}789
      4. set 变量查看
      5. unset 变量删除
      6. 局部变量
    2. 环境变量

      1. 写入相应配置文件后,所有shell都会生效
      2. export 声明变量
      3. bash 子shell
      4. pstree 查看进程树
      5. env 查看变量
      6. set
      7. PATH="$PATH":/root
    3. 位置参数变量

      1. 位置参数变量 作用
        $n n是数字,$0代表命令本身,$n的意思是第n个参数
        $* 代表命令的所有的参数,把所有参数看做一个整体,这个for循环只有一个值
        $@ 代表命令的所有的参数,把每个参数区别对待,这个可以for循环
        $# 代表输入所有参数的个数
    4. 预定义变量

      1. 预定义变量 作用
        $? 最后一次执行命令的返回状态,0是上一个命令正确执行
        $$ 当前进程的进程号(PID)
        $! 后台运行的最后一个进程的进程号(PID)

        把进程放后台(最小化)ls 文件名 &

        ​ 符号&的意图是把命令放入后台执行,工作管理我们在系统管理章会详细介绍

    5. $PS1 预设符 [root@localhost ~]#

    6. 接收键盘输入

      1. read 选项-p(提示信息)t(等待时间)n(接受指定的字符数)s(隐藏输入数据) 变量名

32 Bash的运算符

  1. 数值运算与运算符

    1. declare声明变量类型
      • declare[+/-] [选项]变量名
        • p(显示变量的声明类型)i(数值类型的运算)
      • expr (建议不用)
      • let(建议不用)
      • $((运算式))
  2. 变量测试与内容替换

    1. 变量置换方式 变量y没有设置变量 y为空值变量 y设置值
      x={$y-新值}

      ![image-20210708213637158](/Users/xiechaoxin/Library/Application Support/typora-user-images/image-20210708213637158.png)

33 环境变量配置文件

  1. 简介
    1. /etc/profile
  2. 环境变量配置文件的作用
    1. ![image-20210708215015353](/Users/xiechaoxin/Library/Application Support/typora-user-images/image-20210708215015353.png)
  3. 其他配置文件
    1. ~/bash/history
    2. shell登录信息 vi /etc/issue
    3. 登录前的欢迎信息和登录后的欢迎信息

34 shell编程

35 基础正则表达式

  1. 正则和通配符的区别和应用场景

    1. 正则是用来匹配文件中符合条件的字符串,正则是包含匹配
    2. 通配符是用来匹配符合条件的文件名,通配符是完全匹配
  2. 基础正则表达式

    1. 元字符 作用
      * 前一个字符匹配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位的小写字母。

36 字符截取命令

37 字符处理命令

38 条件判断

39 流程控制