> 文档中心 > Linux命令汇总 | vim | shell | 进阶【2022最新版本】

Linux命令汇总 | vim | shell | 进阶【2022最新版本】

Linux命令汇总 | vim | shell | 进阶【2022最新版本】

Linux大全【持续更新】

  • 一、Linux上下五千年
    • 1.1 历史长河
    • 1.2 下载安装
    • 1.3 目录介绍
    • 1.4 网络配置
      • 1.4.1 三种网络模式
      • 1.4.2 ifconfig
      • 1.4.3 ping
      • 1.4.4 修改 IP 地址
      • 1.4.5 主机名称
      • 1.4.6 远程登录
    • 1.5 系统管理
      • 1.5.1 Linux 中的进程和服务
      • 1.5.2 systemctl
      • 1.5.3 systemctl 设置后台服务的自启配置
      • 1.5.4 系统运行级别
      • 1.5.5 防火墙
      • 1.5.6 关机
    • 1.6 软件管理
      • 1.6.1 RPM
      • 1.6.2 YUM
  • 二、Linux命令大汇总
    • 2.1 帮助命令
      • 2.1.1 man 获得帮助信息
      • 2.1.2 help 获得 shell 内置命令的帮助信息
      • 2.1.3 ctrl + c 停止进程
      • 2.1.4 ctrl+l 清屏,等同于 clear
      • 2.1.5 reset 彻底清屏
      • 2.1.6 tab键 提示(更重要的是可以防止敲错)
      • 2.1.7 上下键 查找执行过的命令
    • 2.2 文件目录类
      • 2.2.1 pwd 显示当前工作目录的绝对路径
      • 2.2.2 ls 列出目录的内容
      • 2.2.3 cd 切换目录
      • 2.2.4 mkdir 创建一个新的目录
      • 2.2.5 rmdir 删除一个空的目录
      • 2.2.6 touch 创建空文件
      • 2.2.7 cp 复制文件或目录
      • 2.2.8 rm 删除文件或目录
      • 2.2.9 mv 移动文件与目录或重命名
      • 2.2.10 cat 查看文件内容
      • 2.2.11 more 文件内容分屏查看器
      • 2.2.12 less 分屏显示文件内容
      • 2.2.13 echo 输出内容到控制台
      • 2.2.14 head 显示文件头部内容
      • 2.2.15 tail 输出文件尾部内容
      • 2.2.16 > 输出重定向和 >> 追加
      • 2.2.17 ln 软链接
      • 2.2.18 history 查看已经执行过历史命令
    • 2.3 时间日期类
      • 2.3.1 date 显示当前时间
      • 2.3.2 date 显示非当前时间
      • 2.3.3 date 设置系统时间
      • 2.3.4 cal 查看日历
    • 2.4 用户管理命令
      • 2.4.1 useradd 添加新用户
      • 2.4.2 passwd 设置用户密码
      • 2.4.3 id 查看用户是否存在
      • 2.4.4 cat /etc/passwd 查看创建了哪些用户
      • 2.4.5 su 切换用户
      • 2.4.6 userdel 删除用户
      • 2.4.7 who 查看登录用户信息
      • 2.4.8 sudo 设置普通用户具有 root 权限
      • 2.4.9 usermod 修改用户
    • 2.5 用户组管理命令
      • 2.5.1 groupadd 新增组
      • 2.5.2 groupdel 删除组
      • 2.5.3 groupmod 修改组
      • 2.5.4 cat /etc/group 查看创建了哪些组
    • 2.6 文件权限类
      • 2.6.1 文件属性
      • 2.6.2 chmod 改变权限
      • 2.6.3 chown 改变所有者
      • 2.6.4 chgrp 改变所属组
    • 2.7 搜索查找类
      • 2.7.1 find 查找文件或者目录
      • 2.7.2 locate 快速定位文件路径
      • 2.7.3 grep 过滤查找及“|”管道符
    • 2.8 压缩和解压类
      • 2.8.1 gzip/gunzip 压缩
      • 2.8.2 zip/unzip 压缩
      • 2.8.3 tar 打包
    • 2.9 磁盘查看和分区类
      • 2.9.1 du 查看文件和目录占用的磁盘空间
      • 2.9.2 df 查看磁盘空间使用情况
      • 2.9.3 lsblk 查看设备挂载情况
      • 2.9.4 mount/umount 挂载/卸载
      • 2.9.5 fdisk 分区
    • 2.10 进程管理类
      • 2.10.1 ps 查看当前系统进程状态
      • 2.10.2 kill 终止进程
      • 2.10.3 pstree 查看进程树
      • 2.10.4 top 实时监控系统进程状态
      • 2.10.5 netstat 显示网络状态和端口占用信息
    • 2.11 crontab 系统定时任务
  • 三、编译器之神~vim
    • 3.1 一般模式
    • 3.2 编辑模式
    • 3.3 指令模式
  • 四、脚本之魂~shell
    • 4.1 简介
    • 4.2 脚本格式
    • 4.3 变量
      • 4.3.1 系统预定义变量
      • 4.3.2 自定义变量
      • 4.3.3 特殊变量
    • 4.4 运算符
    • 4.5 条件判断
    • 4.6 流程控制
      • 4.6.1 if 判断
      • 4.6.2 case 语句
      • 4.6.3 for 循环
      • 4.6.4 while 循环
    • 4.7 read 读取控制台输入
    • 4.8 函数
      • 4.8.1 系统函数
      • 4.8.2 自定义函数
    • 4.9 正则表达式
    • 4.10 文本处理工具
    • 4.11 归档文件
    • 4.12 发送消息

一、Linux上下五千年

1.1 历史长河

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。

它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。

Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

Linux内核版本

内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。

Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环:

  1. 稳定版
    具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
  2. 开发版
    由于要试验各种解决方案,所以变化很快。
    内核源码网址:http://www.kernel.org 所有来自全世界的对Linux源码的修改最终都会汇总到这个网站,由Linus领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。

Linux发行版本

Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

Linux 和 Windows 区别

请添加图片描述

1.2 下载安装

  1. 下载VirtualBox —> 官网下载入口
  2. 下载Linux镜像(这里以centos7为例) —> 官网下载入口
  3. 打开VirtualBox,点击新建,输入名称、类型和版本

请添加图片描述

  1. 分配内存大小

请添加图片描述

  1. 创建虚拟硬盘

请添加图片描述

  1. 选择第一个

请添加图片描述
7. 选择动态分配

请添加图片描述

  1. 选择位置和大小

请添加图片描述

  1. 创建之后,选择设置 —> 存储,选择盘片

请添加图片描述

  1. 设置网络,选择桥接网络

请添加图片描述

  1. 启动linux系统,会进入安装页面,这里需要将时间设置成亚洲/上海,选择最小安装(无桌面)

踩坑秘籍

输入ifconfig没有这个指令

  • yum search ifconfig
  • yum install net-tools.x86_64

输入ifconfig发现没有分配IP

  • vi /etc/sysconfig/network-scripts/ifcfg-ens33
  • 将ONBOOT=no 改为ONBOOT=yes(是否开机启用的意思)

linux重启之后IP发生变化

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens33

  2. 将 BOOTPORTO=dhcp 改为 BOOTPORTO=static 原本是自动获取ip,现在改成固定ip

  3. ONBOOT=yes 这个是no的话就改为yes,表示修改配置后自动启用网卡

  4. 如果你是192.168.x.x网段的,就添加这几行配置, 比如这里我把ip固定为192.168.1.6 IPADDR=192.168.1.6 NETMASK=255.255.255.0 GATEWAY=192.168.1.1

  5. 如果你是10.x.x.x网段的,就添加这几行配置,比如这里我把ip固定为10.0.0.6 IPADDR=10.0.0.6 NETMASK=255.255.255.0 GATEWAY=10.0.0.1

  6. 然后重启网络配置service network restart 之后,ifconfig查看ip,这里ip就是192.168.1.6了,然后ping www.baidu.com ,可以ping通,重启Linux后ip就不会改变了。

1.3 目录介绍

  1. /
    根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
  2. /bin:
    /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
  3. /boot
    放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
  4. /dev
    存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
  5. /etc
    系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
  6. /home
    系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
  7. /lib:
    /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
  8. /lost+fount
    系统异常产生错误时,会将一些遗失的片段放置于此目录下。
  9. /mnt: /media
    光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
  10. /opt
    给主机额外安装软件所摆放的目录。
  11. /proc
    此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
  12. /root
    系统管理员root的家目录。
  13. /sbin:
    /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
  14. /tmp
    一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
  15. /srv
    服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
  16. /usr
    应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
  17. /var
    放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

1.4 网络配置

1.4.1 三种网络模式

  1. 桥接
    在网络网卡上安装了一个桥接协议,让这块网卡处于混杂模式,可以同时连接多个网络的做法。 桥接下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样查在这个交换机当中,所以所有桥接下网卡与网卡都是交换模式的,相互可以访问而不干扰。

  2. NAT
    虚拟机使用VMnet8网卡与主机单独组网,主机对于虚拟机相当于路由器,VMnet8网卡通过NAT地址转换协议与物理机网卡通信

  3. Host-only(仅与主机通信)【不常用】
    虚拟机使用VMnet1网卡与主机单独组网,主机对于虚拟机相当于路由器

1.4.2 ifconfig

功能描述:显示所有网络接口的配置信息
在这里插入图片描述

1.4.3 ping

功能描述:测试当前服务器是否可以连接目的主机

在这里插入图片描述

1.4.4 修改 IP 地址

  1. 查看 IP 配置文件
    vim /etc/sysconfig/network-scripts/${ifcfg-ens33}
  2. 以下标红的项必须修改,有值的按照下面的值修改,没有该项的要增加
TYPE="Ethernet" #网络类型(通常是 Ethemet) PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" #IP 的配置方法[none|static|bootp|dhcp](引导 时不 使用协议|静态分配 IP|BOOTP 协议|DHCP 协议) DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="e83804c1-3257-4584-81bb-660665ac22f6" #随机 id DEVICE="ens33" #接口名(设备,网卡) ONBOOT="yes" #系统启动的时候网络接口是否有效(yes/no) #IP 地址 IPADDR=192.168.1.100 #网关 GATEWAY=192.168.1.2 #域名解析器 DNS1=192.168.1.2
  1. 编辑完后,按键盘 esc ,然后输入 :wq 回车即可
  2. 执行 service network restart 重启网络

修改 IP 地址后可能会遇到的问题:

  1. 物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的 防火墙问题,把防火墙关闭就行
  2. 虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有问题
  3. 虚拟机 Ping www.baidu.com 显示域名未知等信息,一般查看 GATEWAY 和 DNS 设 置是否正确
  4. 如果以上全部设置完还是不行,需要关闭 NetworkManager 服务
    • systemctl stop NetworkManager 关闭
    • systemctl disable NetworkManager 禁用
  5. 如果检查发现 systemctl status network 有问题 需要检查 ifcfg-ens33

1.4.5 主机名称

修改主机名称

  1. 查看当前服务器主机名称
    hostname
  2. 如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/hostname 文件
    vi /etc/hostname
  3. 修改完成后重启生效

修改 hosts 映射文件
3. vim /etc/hosts
4. 192.168.2.101 localhost

1.4.6 远程登录

通常在工作过程中,公司中使用的真实服务器或者是云服务器,都不允许除运维人员之外的员工直接接触,因此就需要通过远程登录的方式来操作。

所以,远程登录工具就是必不可缺的,目前,比较主流的有 Xshell, SSH Secure Shell, SecureCRT,FinalShell 等,可以根据自己的习惯自行选择。【我用的是FinalShell】

1.5 系统管理

1.5.1 Linux 中的进程和服务

  1. 计算机中,一个正在执行的程序或命令,被叫做“进程”(process)
  2. 启动之后一直存在、常驻内存的进程,一般被称作“服务”(service)

1.5.2 systemctl

systemctl start | stop | restart | status 服务名

  1. 查看防火墙服务的状态
    systemctl status firewalld
  2. 停止防火墙服务
    systemctl stop firewalld
  3. 启动防火墙服务
    systemctl start firewalld
  4. 重启防火墙服务
    systemctl restart firewalld

1.5.3 systemctl 设置后台服务的自启配置

  1. 查看服务开机启动状态
    systemctl list-unit-files
  2. 关掉指定服务的自动启动
    systemctl disable service_name
  3. 开启指定服务的自动启动
    systemctl enable service_name

在这里插入图片描述

查看服务的方法:

  1. /usr/lib/systemd/system
  2. ls -al

在这里插入图片描述

1.5.4 系统运行级别

  1. CentOS7 的运行级别为:
    1. multi-user.target(多用户有网,无图形界面)
    2. graphical.target (多用户有网,有图形界面)
  2. 查看当前运行级别:
    systemctl get-default
  3. 修改当前运行级别
    systemctl set-default TARGET.target (这里 TARGET 取 multi-user 或者 graphical)

1.5.5 防火墙

临时关闭防火墙

  1. 查看防火墙状态
    systemctl status firewalld
  2. 临时关闭防火墙
    systemctl stop firewalld

开机启动时关闭防火墙
3. 查看防火墙开机启动状态
systemctl enable firewalld.service
4. 2. 设置开机时关闭防火墙
systemctl disable firewalld.service

1.5.6 关机

在 linux 领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

Linux 系统中为了提高磁盘的读写效率,对磁盘采取了 “预读迟写”操作方式。当用户 保存文件时,Linux 核心并不一定立即将保存数据写入物理磁盘中,而是将数据保存在缓冲区中,等缓冲区满时再写入磁盘,这种方式可以极大的提高磁盘写入数据的效率。

但是, 也带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导 致数据丢失。使用 sync 指令可以立即将缓冲区的数据写入磁盘。

  1. sync(功能描述:将数据由内存同步到硬盘中)
  2. halt (功能描述:停机,关闭系统,但不断电)
  3. poweroff (功能描述:关机,断电)
  4. reboot(功能描述:就是重启,等同于 shutdown -r now)
  5. shutdown [选项] 时间
选项 功能
-H 相当于–halt,停机
-f -r=reboot 重启
参数 功能
now 立刻关机
时间 等待多久后关机(时间单位是分钟)
(1)将数据由内存同步到硬盘中 [root@]#sync (2)重启 [root@]# reboot (3)停机(不断电) [root@]#halt (4)计算机将在 1 分钟后关机,并且会显示在登录用户的当前屏幕中 [root@]#shutdown -h 1 ‘This server will shutdown after 1 mins’ (5)立马关机(等同于 poweroff) [root@]# shutdown -h now (6)系统立马重启(等同于 reboot) [root@]# shutdown -r now

1.6 软件管理

1.6.1 RPM

RPM(RedHat Package Manager),RedHat软件包管理工具,是Linux这系列操作系统里面的打包安装工具。

RPM包的名称格式
Apache-1.3.23-11.i386.rpm - “apache” 软件名称

  • “1.3.23-11”软件的版本号,主版本和此版本
  • “i386”是软件所运行的硬件平台,Intel 32位处理器的统称
  • “rpm”文件扩展名,代表RPM包

RPM 查询命令(rpm -qa
查询所安装的所有 rpm 软件包rpm -qa
由于软件包比较多,一般都会采取过滤rpm -qa | grep rpm软件包
在这里插入图片描述
RPM 卸载命令(rpm -e

  1. rpm -e RPM软件包
  2. rpm -e --nodeps 软件包
  • -e:卸载软件包
  • --nodeeps:卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了

RPM 安装命令(rpm -ivh
rpm -ivh RPM 包全名

  • -i:install,安装
  • -v:–verbose,显示详细信息
  • -h:–hash,进度条
  • --nodeps:安装前不检查依赖

1.6.2 YUM

YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器,基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包 并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

我的理解:yum类似maven,可以从镜像网站下载应用程序,并直接安装。

  1. 语法
    yum [选项] [参数]
  2. 选项说明
    -y:对所有提问都回答yes
  3. 参数说明
    在这里插入图片描述

修改网络 YUM 源
默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等。

  1. 安装 wget, wget 用来从指定的 URL 下载文件
    yum install wget
    在这里插入图片描述

  2. /etc/yum.repos.d/目录下,备份默认的 repos 文件
    cp CentOS-Base.repo CentOS-Base.repo.bak
    在这里插入图片描述

  3. 下载网易 163 或者是 aliyun 的 repos 文件,任选其一
    wget http://mirrors.aliyun.com/repo/Centos-7.repo //阿里云
    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo //网易 163

  4. 使用下载好的 repos 文件替换默认的 repos 文件
    例如:用 CentOS7-Base-163.repo 替换 CentOS-Base.repo
    mv CentOS7-Base-163.repo CentOS-Base.repo
    在这里插入图片描述

  5. 清理旧缓存数据,缓存新数据
    yum clean all
    yum makecache

二、Linux命令大汇总

先把这些记下来,面试通常会考的,嘻嘻,开心吧!!!

  1. 查看内存:top
  2. 查看磁盘存储情况:df -h
  3. 查 看磁盘 IO 读写情况:iotop(需要安装一下:yum install iotop)、 iotop -o(直接查看输出比较高的磁盘读写程序)
  4. 查看端口占用情况:netstat -tunlp | grep 端口号
  5. 查看进程:ps -aux

2.1 帮助命令

2.1.1 man 获得帮助信息

man [命令或配置文件]
man ls

2.1.2 help 获得 shell 内置命令的帮助信息

一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令 被称为“外部命令”。

help cd

2.1.3 ctrl + c 停止进程

ctrl + c

2.1.4 ctrl+l 清屏,等同于 clear

ctrl+l

2.1.5 reset 彻底清屏

reset

2.1.6 tab键 提示(更重要的是可以防止敲错)

tab

2.1.7 上下键 查找执行过的命令

👆👇

2.2 文件目录类

2.2.1 pwd 显示当前工作目录的绝对路径

pwd

2.2.2 ls 列出目录的内容

每行列出的信息依次是:

  1. 文件类型与权限
  2. 链接数
  3. 文件属主
  4. 文件属组
  5. 文件大小用byte 来表示
  6. 建立或最近修改的时间
  7. 名字
  • -a:全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
  • -l:长数据串列出,包含文件的属性与权限等等数据;等价于“ll”

2.2.3 cd 切换目录

在这里插入图片描述

2.2.4 mkdir 创建一个新的目录

-p:创建多层目录

2.2.5 rmdir 删除一个空的目录

rmdir

2.2.6 touch 创建空文件

touch

2.2.7 cp 复制文件或目录

cp [选项] source dest (功能描述:复制source文件到dest)

  • -r 递归复制整个文件夹

2.2.8 rm 删除文件或目录

rm [选项] deleteFile (功能描述:递归删除目录中所有内容)

  • -r 递归删除目录中所有内容
  • -f 强制执行删除操作,而不提示用于进行确认。
  • -v 显示指令的详细执行过程

2.2.9 mv 移动文件与目录或重命名

  1. mv oldNameFile newNameFile (功能描述:重命名)
  2. mv /temp/movefile /targetFolder (功能描述:移动文件)

2.2.10 cat 查看文件内容

cat [选项] 要查看的文件

  • -n 显示所有行的行号,包括空行

2.2.11 more 文件内容分屏查看器

more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件 的内容。more 指令中内置了若干快捷键,详见操作说明。

more 要查看的文件

  • 空白键 (space) 代表向下翻一页
  • Enter 代表向下翻『一行』
  • q 代表立刻离开 more ,不再显示该文件内容
  • Ctrl+F 向下滚动一屏
  • Ctrl+B 返回上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号

2.2.12 less 分屏显示文件内容

less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加 强大,支持各种显示终端。

less 指令在显示文件内容时,并不是一次将整个文件加载之后 才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

less 要查看的文件

  • 空白键 向下翻动一页;
  • [pagedown] 向下翻动一页
  • [pageup] 向上翻动一页;
  • /字串 向下搜寻『字串』的功能;n:向下查找;N:向上查找;
  • ?字串 向上搜寻『字串』的功能;n:向上查找;N:向下查找;
  • q 离开 less 这个程序;

2.2.13 echo 输出内容到控制台

echo [选项] [输出内容]

  • \\ 输出\本身
  • \n 换行符
  • \t 制表符,也就是 Tab 键

2.2.14 head 显示文件头部内容

head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。

  • head 文件(功能描述:查看文件头10行内容)
  • head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)

2.2.15 tail 输出文件尾部内容

tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。

  • tail 文件 (功能描述:查看文件尾部10行内容)
  • tail -n 5 文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)
  • tail -f 文件 (功能描述:实时追踪该文档的所有更新)

2.2.16 > 输出重定向和 >> 追加

  • ls -l > 文件 (功能描述:列表的内容写入文件 a.txt 中(覆盖写))
  • ls -al >> 文件 (功能描述:列表的内容追加到文件 aa.txt 的末尾)
  • cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
  • echo “内容” >> 文件

2.2.17 ln 软链接

软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放 了链接其他文件的路径。
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)

  • 删除软链接: rm -rf 软链接名,而不是 rm -rf 软链接名/
  • 如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
  • 查询:通过 ll 就可以查看,列表属性第 1 位是 l,尾部会有位置指向。

2.2.18 history 查看已经执行过历史命令

2.3 时间日期类

2.3.1 date 显示当前时间

  • date (功能描述:显示当前时间)
  • date +%Y (功能描述:显示当前年份)
  • date +%m(功能描述:显示当前月份)
  • date +%d (功能描述:显示当前是哪一天)
  • date "+%Y-%m-%d %H:%M:%S" (功能描述:显示年月日时分秒)

2.3.2 date 显示非当前时间

  • date -d '1 days ago' (功能描述:显示前一天时间)
  • date -d '-1 days ago' (功能描述:显示明天时间)

2.3.3 date 设置系统时间

date -s "2023-06-19 20:52:18"

2.3.4 cal 查看日历

cal 2023

2.4 用户管理命令

2.4.1 useradd 添加新用户

  • useradd 用户名 (功能描述:添加新用户)
  • useradd -g 组名 用户名 (功能描述:添加新用户到某个组)

2.4.2 passwd 设置用户密码

passwd 用户名

2.4.3 id 查看用户是否存在

id username

2.4.4 cat /etc/passwd 查看创建了哪些用户

cat /etc/passwd

2.4.5 su 切换用户

  • su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
  • su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)

2.4.6 userdel 删除用户

  • userdel 用户名 (功能描述:删除用户但保存用户主目录)
  • userdel -r 用户名 (功能描述:用户和用户主目录,都删除)

2.4.7 who 查看登录用户信息

  • whoami (功能描述:显示自身用户名称)
  • who am i (功能描述:显示登录用户的用户名以及登陆时间)

2.4.8 sudo 设置普通用户具有 root 权限

  • useradd issavior
  • passwd issavior
  • vim /etc/sudoers
  • 修改 /etc/sudoers 文件,找到下面一行(91 行),在 root 下面添加一行,如下所示:
## Allow root to run any commands anywhere root ALL=(ALL) ALLissavior ALL=(ALL) ALL
  • 或者配置成采用 sudo 命令时,不需要输入密码
root ALL=(ALL) ALL issavior ALL=(ALL) NOPASSWD:ALL
  • 修改完毕,现在可以用 issavior 帐号登录,然后用命令 sudo ,即可获得 root 权限进行 操作。

2.4.9 usermod 修改用户

将用户加入到用户组
usermod -g 用户组 用户名

2.5 用户组管理命令

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。

不同 Linux 系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。

2.5.1 groupadd 新增组

groupadd 组名

2.5.2 groupdel 删除组

groupdel 组名

2.5.3 groupmod 修改组

groupmod -n 新组名 老组名

2.5.4 cat /etc/group 查看创建了哪些组

cat /etc/group

2.6 文件权限类

2.6.1 文件属性

2.6.2 chmod 改变权限

2.6.3 chown 改变所有者

2.6.4 chgrp 改变所属组

2.7 搜索查找类

2.7.1 find 查找文件或者目录

2.7.2 locate 快速定位文件路径

2.7.3 grep 过滤查找及“|”管道符

2.8 压缩和解压类

2.8.1 gzip/gunzip 压缩

2.8.2 zip/unzip 压缩

2.8.3 tar 打包

2.9 磁盘查看和分区类

2.9.1 du 查看文件和目录占用的磁盘空间

2.9.2 df 查看磁盘空间使用情况

2.9.3 lsblk 查看设备挂载情况

2.9.4 mount/umount 挂载/卸载

2.9.5 fdisk 分区

2.10 进程管理类

2.10.1 ps 查看当前系统进程状态

2.10.2 kill 终止进程

2.10.3 pstree 查看进程树

2.10.4 top 实时监控系统进程状态

2.10.5 netstat 显示网络状态和端口占用信息

2.11 crontab 系统定时任务

三、编译器之神~vim

VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。

VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜 色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。

在这里插入图片描述

3.1 一般模式

以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。

在这个模式中, 你可 以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档 案内容, 也可以使用『复制、粘贴』来处理你的文件数据。

语法 功能描述
yy 复制光标当前一行
y 数字 y 复制一段(从第几行到第几行)
p 箭头移动到目的行粘贴
u 撤销上一步
dd 删除光标当前行
d 数字 d 删除光标(含)后多少行
x 剪切一个字母,相当于 del
X 剪切一个字母,相当于 Backspace
yw 复制一个词
dw 删除一个词
shift+6(^) 移动到行头
shift+4 ($) 移动到行尾
1+shift+g 移动到页头,数字
shift+g 移动到页尾
数字+shift+g 移动到目标行

3.2 编辑模式

在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!

要等到你按下『i, I, o, O, a, A』等任何一个字母之后才会进入编辑模式。

注意了!通常在Linux中,按下这些按键时,在画面的左下方会出现『INSERT或 REPLACE』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下 『Esc』这个按键即可退出编辑模式。

进入编辑模式

按键 功能
i 当前光标前
a 当前光标后
o 当前光标行的下一行 I
A 光标所在行最后
O 当前光标行的上一行

按『Esc』键 退出编辑模式,之后所在的模式为一般模式。

3.3 指令模式

强制保存退出 wq!
在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那 一行。

在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、 离开 vi 、显示行号等动作是在此模式中达成的!

命令 功能
:w 保存
:q 退出
:! 强制执行
/ 要查找的词
n 查找下一个,N 往上查找
:noh 取消高亮显示
:set nu 显示行号
:set nonu 关闭行号
:%s/old/new/g 替换内容 /g 替换匹配到的所有内容

四、脚本之魂~shell

4.1 简介

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

4.2 脚本格式

脚本以#!/bin/bash 开头(指定解析器)

4.3 变量

4.3.1 系统预定义变量

常用系统变量 $HOME$PWD$SHELL$USER

4.3.2 自定义变量

  • 基本语法
    • 定义变量:变量名=变量值,注意,=号前后不能有空格
    • 撤销变量:unset 变量名
    • 声明静态变量:readonly 变量,注意:不能 unset
  • 变量定义规则
    • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建 议大写。
    • 等号两侧不能有空格
    • 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
    • 变量的值如果有空格,需要使用双引号或单引号括起来。

4.3.3 特殊变量

  1. $n (功能描述:n 为数字,$0 代表该脚本名称,$1-9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9 代表第一到第九个参数,十以 上的参数,十以上的参数需要用大括号包含,如 9{10})
  2. $# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及 加强脚本的健壮性)。
  3. $*(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
  4. $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
  5. $? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。)

4.4 运算符

“$((运算式))” 或 “$[运算式]”

4.5 条件判断

  1. test condition
  2. [ condition ](注意 condition 前后要有空格)

注意:条件非空即为 true

4.6 流程控制

4.6.1 if 判断

4.6.2 case 语句

4.6.3 for 循环

4.6.4 while 循环

4.7 read 读取控制台输入

4.8 函数

4.8.1 系统函数

4.8.2 自定义函数

4.9 正则表达式

4.10 文本处理工具

4.11 归档文件

4.12 发送消息