admin 管理员组

文章数量: 887006

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

文章目录

  • 🚀前言
  • 🚀一、操作系统概述
    • 🔎1.操作系统(Operation System, OS)
    • 🔎2.不同应用利于的主流操作系统
      • 🦋2.1 桌面操作系统
      • 🦋2.2 服务器操作系统
      • 🦋2.3 嵌入式操作系统
      • 🦋2.4 移动设备操作系统
    • 🔎3.Linux系统发展史
    • 🔎4.Linux内核
    • 🔎5.Linux系统发行版
  • 🚀二、系统安装
    • 🔎1.VM虚拟机
      • 🦋1.1 概述
      • 🦋1.2 安装虚拟机
      • 🦋1.3 配置网卡
        • ☀️1.3.1 网络原理
        • ☀️1.3.2 确保 `虚拟网络VMnet8` 已经启动
        • ☀️1.3.3 设置VMnet8的ip地址
        • ☀️1.3.4 确保所有关于VMWare的服务都开启
        • ☀️1.3.5 配置虚拟机的网卡
    • 🔎2.centos安装
      • 🦋2.1 理解安装步骤
      • 🦋2.2 配置网卡信息
      • 🦋2.3 理解centos的文件和目录
    • 🔎3.远程连接工具
      • 🦋3.1 secureCRT软件
      • 🦋3.2 winSCP
    • 🔎4.快照(备份)
      • 🦋4.1 备份系统
      • 🦋4.2 恢复到快照状态
  • 🚀三、命令概述
    • 🔎1.学习Linux终端命令的原因
    • 🔎2.Linux终端命令格式
      • 🦋2.1 终端命令格式
      • 🦋2.2 查阅命令帮助信息
        • ☀️2.2.1 --help 帮助信息
        • ☀️2.2.2 man 手册
  • 🚀四、文件和目录常用命令
    • 🔎1.查看目录内容
      • 🦋1.1 终端使用技巧
        • ☀️1.1.1 自动补全
        • ☀️1.1.2 曾经使用过的命令
      • 🦋1.2 ls命令说明
      • 🦋1.3 ls常用选项
      • 🦋1.4 ls 和通配符的使用
    • 🔎2.切换目录
      • 🦋2.1 cd
      • 🦋2.2 相对路径和绝对路径
    • 🔎3.创建和删除操作
      • 🦋3.1 touch
      • 🦋3.2 mkdir
      • 🦋3.3 rm
    • 🔎4.拷贝和移动文件
      • 🦋4.1 tree (扩展)
      • 🦋4.2 cp
      • 🦋4.3 mv (move)
    • 🔎5.查看文件内容
      • 🦋5.1 cat
      • 🦋5.2 less
      • 🦋5.3 head
      • 🦋5.4 tail
      • 🦋5.5 grep(重点)
    • 🔎6.其他
      • 🦋6.1 管道 | (入门)
      • 🦋6.2 echo 文字内容
      • 🦋6.3 重定向 `>`(覆盖) 和 `>>` (追加)
      • 🦋6.4 && 和 ||
      • 🦋6.5 软链接(类似与 快捷方式)
  • 🚀感谢:给读者的一封信


🚀前言

Linux是一种开放源代码的操作系统,它基于Unix操作系统设计,具有良好的稳定性和安全性,被广泛应用于服务器、移动设备、个人电脑和嵌入式设备等领域。

Linux系统类型有很多,以下是一些常见的类型:

  1. Debian:以稳定性和安全性著称,适合服务器环境。

  2. Ubuntu:以简单易用和友好的用户界面著称,适合个人电脑和桌面系统。

  3. Red Hat Enterprise Linux:以企业级支持和稳定性著称,适合大型企业和机构。

  4. CentOS:是基于Red Hat Enterprise Linux开发的免费开源版本,具有与商业版相同的稳定性和安全性。

  5. Fedora:是一个快速更新的Linux发行版,适合开发者和技术爱好者。

  6. Arch Linux:以轻量、简单和高度可定制性著称,适合高级用户和开发者。

  7. openSUSE:是一个面向开发者和企业用户的通用Linux发行版。

🚀一、操作系统概述

🔎1.操作系统(Operation System, OS)

操作系统 (Operating System)是计算机系统中的一种软件,是计算机系统中最基本的系统软件之一,主要负责管理计算机的硬件资源和提供用户与计算机硬件之间的接口。 操作系统是计算机系统中一个非常重要的组成部分,负责管理计算机系统的内存、进程、设备、文件系统等资源,并通过提供各种服务,为用户和其他软件程序提供一个良好的运行环境。

无操作系统的裸机指的是一台计算机或其它计算设备,没有安装操作系统软件,只有最基本的硬件和固件。裸机必须依赖人手工操作硬件才能完成任务,无法自动化完成任务,开发和部署软件非常困难,且无法使用现代操作系统提供的高级服务,比如多任务处理、内存管理、设备管理等,如果想在 裸机 上运行自己所编写的程序, 就必须用机器语言书写程序。

相反,有操作系统的机器则是已经安装操作系统软件的计算机或计算设备。这些机器可以自动处理任务、运行应用程序并提供各种服务,开发和部署软件非常方便。操作系统可以通过管理计算机硬件资源、提供高级服务的方式,使得计算机更加高效、稳定、可靠。如果计算机上安装了操作系统, 就可以在操作系统上安装支持的高级语言环境,用于高级语言开发。

🔎2.不同应用利于的主流操作系统

🦋2.1 桌面操作系统

桌面操作系统(Desktop Operating System)是一种操作系统,常见于个人电脑、笔记本电脑和工作站。它们为用户提供了一个图形用户界面(GUI)和各种应用程序,以便执行各种任务,如文档处理、网上冲浪、多媒体处理等。

桌面操作系统通常具有良好的用户友好性和易用性,使得用户可以轻松地进行各种操作,如打印、复制、粘贴、文件管理等。它们还提供了许多内置应用程序,如浏览器、多媒体播放器、文本编辑器等,以便用户可以轻松地满足其各种需求。

常见的桌面操作系统包括微软的Windows、苹果的macOS和Linux,它们各自具有独特的特点和优势,用户可以根据自己的需求和偏好进行选择。

🦋2.2 服务器操作系统

服务器操作系统是专门为服务器设计的操作系统。它的主要任务是支持服务器应用程序和服务,并提高系统稳定性和安全性。常见的服务器操作系统包括Windows Server、Linux、Unix等。其中,Windows Server适合于大型企业,提供良好的图形用户界面和易于使用的管理工具,而Linux和Unix则适合于需要高度定制的环境和更高的性能和可靠性的任务。服务器操作系统的选择应该根据你的需求和技能水平而定。

🦋2.3 嵌入式操作系统

嵌入式操作系统是指专门设计用于嵌入式设备的操作系统。嵌入式设备通常具有固定的功能和特定的应用程序,其硬件资源(如内存、处理器、存储器等)有限且成本较低。因此,嵌入式操作系统需要具备高效、稳定、可靠、小型和快速的特点,能够适应不同的硬件资源和应用程序需求。常见的嵌入式操作系统有:uC/OS、FreeRTOS、VxWorks、Linux嵌入式系统等。它们可以应用到许多领域,如智能家居、汽车、医疗设备、航空航天等。

🦋2.4 移动设备操作系统

移动设备操作系统是指能够在移动设备上运行的操作系统,包括IOS系统、Android系统和华为鸿蒙系统。

  1. IOS系统:IOS系统是由苹果公司开发的专属于苹果设备的操作系统,包括iPhone、iPad、iPod touch等。该系统采用了苹果独有的界面风格,具有良好的稳定性和用户体验,同时具备强大的应用商店和数据加密机制。

  2. Android系统:Android系统是由谷歌公司开发的操作系统,目前被广泛应用于移动设备中,包括智能手机、平板电脑、智能手表等。该系统是开源系统,允许开发者自由开发和定制应用程序,同时更容易适配不同硬件。

  3. 华为鸿蒙系统:鸿蒙系统是华为公司自主研发的全场景分布式操作系统。该系统可以支持各种形态的设备,包括手机、平板电脑、电视、车载设备等,并且具有更强大的AI能力和更高的安全性能。同时,鸿蒙系统也是开源系统,使得开发者更容易定制和开发应用程序。


.

🔎3.Linux系统发展史


.

Linux诞生于1991年,由芬兰大学生林纳斯·托瓦兹(Linus Torvalds)开发。最初,它只是一个基于Minix操作系统并且仅支持386架构的操作系统内核。但是随着时间的推移,Linux不仅支持更多的硬件,并且还支持更多的架构。

1993年,Linux内核被发布为自由软件,这使得开发者可以使用和修改内核代码。这也标志着Linux开始进入商业市场。几家公司开始提供商业Linux发行版,比如Red Hat、SUSE等,同时一些开源社区也开始发行自己的Linux发行版,比如Debian、Ubuntu等。

2000年代初,Linux在服务器领域占据了重要的市场份额。同时,它也开始在桌面操作系统领域发展。Ubuntu等Linux发行版的出现使得Linux在桌面操作系统市场上获得了一定的市场份额。

随着移动互联网时代的到来,Linux开始在嵌入式系统和移动设备领域取得成功。Android操作系统基于Linux内核,已经成为全球最流行的移动操作系统之一。

Linux的发展史可以总结为:从一个386架构的内核到支持多种硬件和架构的操作系统内核,从只有几个爱好者的社区到商业化的Linux发行版,从服务器到桌面到嵌入式系统和移动设备,Linux已经成为了一种重要的操作系统。

🔎4.Linux内核

  • 内核(kernel) 是系统的心脏, 是运行程序和管理磁盘和打印机等硬件设备的核心程序.
  • Linux内核版本
    • 稳定版
      • 具有工业级强度, 可以广泛的应用和部署.
    • 开发版
      • 由于要试验各种解决方案, 所以变化很快
  • 内核源码网址: http://www.kernet.ort
    • 所有来自全世界的对linux源码的修改最终都会汇总到这个网站, 由 Linus 领导的开源社区对其进行甄别和修改, 最终决定是否进入到 LInux主线内核源码中

🔎5.Linux系统发行版

  • redhat:目前,全球最大的linux发行厂商,功能全面、稳定。
    • RedhatIBM 收购!
  • ubuntu:目前,是linux桌面操作系统做的最好的。
  • centos:免费版的redhat,centos 基于 redhat 发行版基础之上,再重新编译发布的版本。
    • 目前 centos 已经被 Redhat 公司收购,但是依然免费

🚀二、系统安装

🔎1.VM虚拟机

🦋1.1 概述

VM(Virtual Machine,虚拟机)指的是一个虚拟的计算机系统,它可以在一台物理计算机上模拟出多个虚拟计算机(也称虚拟操作系统或虚拟客户机),每个虚拟计算机都可以运行独立的操作系统和应用程序。

虚拟机技术是通过在物理计算机上创建虚拟的硬件资源(如CPU、内存、磁盘),并在此基础上运行虚拟的操作系统和应用程序,从而让多个操作系统和应用程序在同一台物理计算机上同时运行。这就意味着一个物理计算机上可以运行多个不同的操作系统(如Windows、Linux、MacOS等),并且每个操作系统都可以独立运行,互不干扰。

虚拟机技术在服务器、数据中心、云计算等领域得到广泛应用,可以实现资源的高效利用,提高系统的稳定性和安全性,降低系统管理和维护的成本。

🦋1.2 安装虚拟机

虚拟机的安装就不多介绍,界面如下:

🦋1.3 配置网卡

☀️1.3.1 网络原理

1、桥接原理

虚拟机桥接是指将虚拟机的网络接口和物理网络接口连接起来,使得虚拟机可以直接使用物理网络,就像是直接连接在网络上一样。虚拟机桥接的原理如下:

1.虚拟机创建时,会通过虚拟网卡与宿主机连接。

2.虚拟机桥接时会创建一个虚拟网桥,将虚拟网卡加入其中。

3.虚拟网桥会通过物理网卡将虚拟机连接到物理网络中。

4.虚拟机可以直接访问物理网络中的计算机,而物理网络中的计算机也可以访问虚拟机。

虚拟机桥接将虚拟机的网络接口和物理网络接口连接起来,使得虚拟机可以直接使用物理网络。这一过程通过创建虚拟网桥,将虚拟网卡加入其中,并通过物理网卡连接到物理网络中来实现。

因为虚拟机的linux系统的ip地址是固定的,更换路由器后导致无法使用,所以不推荐使用。

2、NAT原理

NAT(Network Address Translation),即网络地址转换,是一种网络协议,它的主要作用是将私有网络地址转换为公共网络地址,以便实现不同网络之间的通信。虚拟机NAT就是在虚拟机环境下使用NAT协议实现虚拟机与外部网络的通信。其原理如下:

  1. 虚拟机软件生成一个虚拟网卡(vNIC)并分配给虚拟机使用。

  2. 虚拟机软件还生成一个NAT设备,用于将虚拟机的IP地址转换为公共网络IP地址。

  3. 虚拟机中的所有通信流量都通过虚拟网卡发送到NAT设备。

  4. NAT设备会将这些流量中的源IP地址和目标IP地址进行转换,以便与公共网络进行通信。

  5. NAT设备还会为虚拟机分配一个内部IP地址,使得虚拟机可以与外部网络进行通信。

通过这种方式,虚拟机可以通过NAT设备和公共网络进行通信,同时外部网络无法直接访问虚拟机上的IP地址,从而增强了虚拟机的安全性。

推荐使用这种方式

☀️1.3.2 确保 虚拟网络VMnet8 已经启动

☀️1.3.3 设置VMnet8的ip地址

网关: 192.168.100.1

☀️1.3.4 确保所有关于VMWare的服务都开启

☀️1.3.5 配置虚拟机的网卡

  • 核查 配置子网ip和子网掩码

  • 再次确认

🔎2.centos安装

🦋2.1 理解安装步骤

安装步骤就不演示了,原理图如下:

🦋2.2 配置网卡信息

第一步: 了解 网卡 和ip地址的概念

  • 网卡是一个专门负责网络通讯的硬件设备

  • ip地址是设置在网卡上的地址信息

  • 我们可以把 电脑 比作 手机, 网卡 相当于 手机卡槽, ip地址 相当于 手机号

  • IP地址

    • 每台联网的电脑上都有IP地址, 是保证电脑之间正常通讯的重要设置

      注意: 每台电脑的IP地址不能相同, 否则 会出现IP地址冲突, 并且没有办法正常通讯

查看网卡信息

  • ifconfig 和 ping
序号命令对应英文作用
01ifconfigconfiguration
a newwork interface
查看/配置计算机当前的网卡信息
02ping ip地址ping检测到目标ip地址 的连接是否正常
03service network restart重启网卡服务

通过 setup 命令设置网卡信息

# 开始设置网卡信息
setup

重启网卡服务

测试能否上网, 注意: 前提是 宿主机必须能够上网

🦋2.3 理解centos的文件和目录

  • windows 系统 可以拥有多个盘符, 如 C盘D盘E盘
  • Linux 没有盘符 这个概念, 只有一个根目录 /, 所有文件都在它下面
  • Linux主要目录 速查表

* /lsdt:  found系统修复用的

* /bin:   二进制命令所在的目录

* /boot :  系统引导程序所需要的文件目录,引导系统开机

* /dev :设备软件目录,磁盘,光驱, 

* /etc : 系统配置,启动程序

* /home:普通用户的家目录,目录默认数据存放目录

* /lib: 启动系统和运行命令所需的共享库文件和内核模块存放

* /mnt:临时挂载储存设备的挂载点,u盘插入光驱无法使用,需要挂载然后使用

* /opt:额外的应用软件包

* /proc:操作系统运行时,进程信息和内核信息存放在这里                       

* /root:Linux超级权限用户root的家目录

* /sbin:和管理系统相关的命令,【超级管理员用】

* /tmp:临时文件目录,这个目录被当作回收站使用

* /usr:用户或系统软件应用程序目录

* /var:存放系统日志的目录

* 注意:**一般不要** 操作 **非自己创建**的目录和文件,否则可能导致服务器崩溃。

🔎3.远程连接工具

🦋3.1 secureCRT软件

1、配置连接 linux系统


.


.


.


.

2、修改主题和字体大小


.

3、常用快捷键

tab键:命令或者路径提示及补全;

ctrl+c:放弃当前输入,终止当前任务或程序;

ctrl+l:清屏;

ctrl+shift+c:复制;

ctrl+shift+v:粘贴;

alt+b :打开connect窗口 了解

alt+1/2/3/4/5… :切换会话窗口 了解

🦋3.2 winSCP

  • 它的主要功能就是在本地远程计算机间 进行 文件 上传和下载
  • 使用 鼠标拖拽 即可完成

🔎4.快照(备份)

🦋4.1 备份系统

a. 右键目标centos系统 -> 快照 -> 快照管理器

b. 拍摄快照

🦋4.2 恢复到快照状态

a. 右键目标centos系统 -> 快照 -> 恢复到指定快照即可

🚀三、命令概述

🔎1.学习Linux终端命令的原因

  • Linux刚面世时并没有图形界面, 所有的操作全靠命令完成, 如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等

  • 在职场中,大量的 服务器维护工作 都是在 远程 通过SSH客户端 来完成的, 并没有图形界面, 所有的维护工作都需要通过命令来完成

  • 在职场中, 作为后端程序员, 必须要或多或少的掌握一些Linux常用的终端命令

    • Linux发行版本的命令大概有200多个, 但是常用的命令只有10多个而已

学习终端命令的技巧:

  • 不需要死记硬背, 对于常用命令, 用的多了, 自然就记住了。
  • 不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到, 临时百度就可以

🔎2.Linux终端命令格式

🦋2.1 终端命令格式

command [-options] [parameter]

说明:

  • command : 命令名, 相应功能的英文单词或单词的缩写
  • [-options] : 选项, 可用来对命令进行控制, 也可以省略
  • parameter : 传给命令的参数, 可以是 零个、一个 或者 多个
  • 常用Linux命令的基本使用
序号命令对应英文作用
01lslist查看当前目录下的内容
02pwdprint working derectory查看当前所在文件夹
03cd [目录名]change directory切换文件夹
04touch [文件名]touch如果文件不存在, 新建文件
05mkdir [目录名]make directory创建目录
06rm [文件名]remove删除指定的文件名
07clearclear清屏

🦋2.2 查阅命令帮助信息

因为一个命令有很多可选项, 死记硬背肯定不行, 所以需要借助手册查阅.

☀️2.2.1 --help 帮助信息
command --help

说明:

  • 显示 command 命令的帮助信息

缺点: 虽然可以查询命令的帮助信息, 但是没有提供 翻页、搜索功能.

☀️2.2.2 man 手册
man command

说明:

  • 查询command命令的使用手册

    manmanual 的缩写, 是Linux提供的一个手册, 包含了绝大部分的命令、函数的详细使用说明.

使用 man 时的操作键:

操作键功能
空格键显示手册的下一屏
Enter键一次滚动首页也得一行
b(back)回滚一屏
f(forward)前滚一屏
q (quit)退出
/word搜索word字符串
n(next)搜索下一个
N搜索上一个

提醒:

  • 现阶段只需要 知道 通过以下两种方式可以查询命令的帮助信息
  • 先学习 常用命令常用参数 的使用即可, 工作中如果遇到问题可以借助 网络搜索

🚀四、文件和目录常用命令

  • 查看目录内容
    • ls
  • 切换目录
    • cd
  • 创建和删除操作
    • touch
    • rm
    • mkdir
  • 拷贝和移动文件
    • cp
    • mv
  • 查看文件内容
    • cat
    • less
    • grep
  • 其他
    • echo
    • 重定向 >>>
    • 管道 |

🔎1.查看目录内容

🦋1.1 终端使用技巧

☀️1.1.1 自动补全
  • 在敲出 文件/ 目录 / 命令 的前几个字母之后, 按下 tab
  • 如果还存在其他 文件 / 目录 / 命令, 再按一下tab键, 系统会提示可能存在的命令
☀️1.1.2 曾经使用过的命令
  • 使用 / 光标键可以在曾经使用过的命令之间来回切换
  • 如果想要退出选择, 并且不想执行当前选中的命令, 可以按 ctrl + c

🦋1.2 ls命令说明

  • ls 是英文单词list的简写, 其功能为列出目录的内容,是用户最常用的命令之一
  • 因为需要编辑服务器上的文件, 所以需要先确认指定目录下 是否存在

linux 下文件和目录的特点

  • linux文件 或者 目录 名称最长可以 256 个字符
  • . 开头的文件为隐藏文件, 需要用 -a 参数才能显示
  • . 代表当前目录
  • .. 代表上一级目录

演练目标:

1 创建文件 01.txt 
2 创建隐藏文件 02.txt
3 罗列隐藏文件和非隐藏文件
[root@node01 export]# touch 01.txt
[root@node01 export]# touch .02.txt
[root@node01 export]# ls
01.txt
[root@node01 export]# ls -a
.  ..  01.txt  .02.txt

🦋1.3 ls常用选项

如果 只使用ls命令 就只能看到当前目录下 非隐藏 文件。

如果想增强功能,就需要学习更多的选项

选项英文含义
-aall显示指定目录下所有子目录与文件, 包含隐藏文件
-l以列表方式显示文件的详细信息
-hhuman-readable配合 -l 以人性化的方式显示文件大小

演练目标:

1 切换到 /usr/tmp 清空内容 
2 创建隐藏文件 非隐藏文件 目录
3 查看当前目录内容 (缺点: 隐藏文件看不到)
4 查看当前目录所有内容 (既包含隐藏, 也包含非隐藏)
5 查看目录内容的详细信息(查看文件类型、权限、大小等 缺点:文件大小没有单位)
6 简化合并 查看目录内容的详细信息
[root@node01 tmp]# cd /usr/tmp && rm -rf *
[root@node01 tmp]# ll
total 0
[root@node01 tmp]# touch 01.txt .02.txt
[root@node01 tmp]# ls 
01.txt
[root@node01 tmp]# ls -a
.  ..  01.txt  .02.txt
[root@node01 tmp]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 10 21:04 01.txt
[root@node01 tmp]# ll -a
total 8
drwxrwxrwt.  2 root root 4096 Jul 10 21:04 .
drwxr-xr-x. 20 root root 4096 Jul 10 19:10 ..
-rw-r--r--.  1 root root    0 Jul 10 21:04 01.txt
-rw-r--r--.  1 root root    0 Jul 10 21:04 .02.txt

计算机中文件大小的表示方式(科普)

单温英文含义
字节B(byte)在计算机中作为一个数字单元,一般为8位二进制数
K(Kibibyte)1KB = 1024 B, 千字节( 1024 = 2的10次方)
M(Mebibyte)1MB = 1024 KB, 百万字节
千兆G(Gigabytee)1GB = 1024 MB, 十亿字节, 千兆字节
T(Terabyte)1 TB = 1024 GB, 万亿字节, 太字节
P(Petabyte)1 PB = 1024 PB, 百万亿字节, 拍字节

🦋1.4 ls 和通配符的使用

准备工作

# 切换到临时目录(先使用, 稍候讲解)
cd /usr/tmp

# 清空目录内容(先使用, 稍候讲解)
rm -rf *

# 创建文件
touch a23.txt 11.txt 111.txt 112.txt 123.txt 223.txt 323.txt 423.txt 523.txt

# 查看目录内容
ls
通配符含义
*代表 任意个数 的字符
?代表任意一个字符, 且只能是一个

需求1:

1 查看以 1 开头的文件或目录
2 查看以 3.txt 结尾的 文件或目录
3 查看含有3的文件列表
4 查看第二个字符是2的文件
[root@node01 tmp]# ls 1*
111.txt  112.txt  11.txt  123.txt
[root@node01 tmp]# ls *3.txt
123.txt  223.txt  323.txt  423.txt  523.txt  a23.txt
[root@node01 tmp]# ls *3*
123.txt  223.txt  323.txt  423.txt  523.txt  a23.txt
[root@node01 tmp]# ls ?2*
123.txt  223.txt  323.txt  423.txt  523.txt  a23.txt
通配符含义
[abc]匹配a、b、c中任意一个
[a-f]匹配从a到f范围内的任意一个字符

需求2:

1 查看 第一个字符是 1到5, 以23.txt结尾 的 目录或文件名
[root@node01 tmp]# ls [1-5]*23.txt
123.txt  223.txt  323.txt  423.txt  523.txt

🔎2.切换目录

🦋2.1 cd

  • cd 是英文单词 change directory 的缩写, 其功能为 更改当前的工作目录, 也是用户最常用的命令之一

    注意: linux的所有 目录文件名 都是大小写敏感的

命令含义
cd 目录切换到指定目录下
cd …切换到上级目录
cd -可以在最近的两次目录之间切换
cd ~切换到家目录(root用户家目录是 /root, 其他用户的家目录是 /home/用户名)

需求:

1 查看当前所在目录
2 切换到 /usr/local
3 切换到 上一级目录 /usr
4 后退到上一次访问的目录中
[root@node01 tmp]# pwd
/usr/tmp
[root@node01 tmp]# cd /usr/local
[root@node01 local]# pwd
/usr/local
[root@node01 local]# cd ../
[root@node01 usr]# pwd
/usr
[root@node01 usr]# cd -
/usr/local

🦋2.2 相对路径和绝对路径

第一步: 使用相对路径定位目标

  1. 特征: 相对路径 输入路径时, 最前面不是以 “/” 开始的, 表示相对 当前目录 所在的位置
  2. 缺点: 参照工作目录 发生变化 相对路径也要发生变化
需求1: 当前工作目录是 /usr, 使用相对路径 切换到 /usr/tmp 目录下 

需求2: 当前工作目录是 /root, 使用相对路径 切换到 /usr/tmp 目录下 

[root@node01 tmp]# cd /usr
[root@node01 usr]# pwd
/usr
[root@node01 usr]# cd ./tmp
[root@node01 tmp]# pwd
/usr/tmp
[root@node01 tmp]# cd ~
[root@node01 ~]# pwd
/root
[root@node01 ~]# cd ../usr/tmp
[root@node01 tmp]# pwd
/usr/tmp

第二步: 使用绝对路径定位目标

  1. 特征: 绝对路径 在输入路径时, 最前面是以 / 开始的, 表示 从 根目录 开始的具体目录位置
  2. 优点: 定位准确, 不会因为 工作目录变化 而变化
需求1: 当前工作目录是 /usr, 使用绝对路径 切换到 /usr/tmp 目录下 

需求2: 当前工作目录是 /root, 使用绝对路径 切换到 /usr/tmp 目录下 

[root@node01 ~]# cd /usr
[root@node01 usr]# cd /usr/tmp
[root@node01 tmp]# pwd
/usr/tmp
[root@node01 tmp]# cd /root
[root@node01 ~]# pwd
/root
[root@node01 ~]# cd /usr/tmp
[root@node01 tmp]# pwd
/usr/tmp

🔎3.创建和删除操作

🦋3.1 touch

第一步: 创建一个空白文件

touch 不存在的文件

第二步: 修改文件的末次访问时间

touch 存在的文件

🦋3.2 mkdir

yum -y install tree

第一步: 创建 没有层级关系的目录

mkdir 目录名

第二步: 创建 有层级关系 的目录

mkdir -p 目录1/目录2/目录3
  • 创建一个新的目录
选项英文含义
-pparent可以递归创建目录
# 创建压缩包目录
mkdir -p /export/softwares
mkdir -p /export/servers
mkdir -p /export/data

🦋3.3 rm

cd /usr/tmp

rm -rf *

touch 1.txt 2.txt 3.txt 4.txt 5.txt

mkdir -p aaa/bbb/ccc

mkdir -p x1

第一步: 删除文件 (有提示)

rm 文件
[root@node01 tmp]# ll
total 8
-rw-r--r--. 1 root root    0 Jul 10 21:20 1.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 2.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 3.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 4.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 5.txt
drwxr-xr-x. 3 root root 4096 Jul 10 21:20 aaa
drwxr-xr-x. 2 root root 4096 Jul 10 21:20 x1
[root@node01 tmp]# rm 1.txt
rm: remove regular empty file `1.txt'? y
[root@node01 tmp]# ll
total 8
-rw-r--r--. 1 root root    0 Jul 10 21:20 2.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 3.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 4.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 5.txt
drwxr-xr-x. 3 root root 4096 Jul 10 21:20 aaa
drwxr-xr-x. 2 root root 4096 Jul 10 21:20 x1

第二步: 删除文件 (取消提示)

rm -f 文件
参数英文含义
-fforce (强制)强制删除,忽略不存在的文件, 无需提示
[root@node01 tmp]# ll
total 8
-rw-r--r--. 1 root root    0 Jul 10 21:20 3.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 4.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 5.txt
drwxr-xr-x. 3 root root 4096 Jul 10 21:20 aaa
drwxr-xr-x. 2 root root 4096 Jul 10 21:20 x1

第三步: 删除有内容的目录

rm -rf 目录
参数英文含义
-rrecursive (递归)递归地删除目录下的内容, 删除文件夹 时必须加此参数
[root@node01 tmp]# rm aaa/
rm: cannot remove `aaa/': Is a directory
[root@node01 tmp]# rm -r aaa/
rm: descend into directory `aaa'? y
rm: descend into directory `aaa/bbb'? y
rm: remove directory `aaa/bbb/ccc'? y
rm: remove directory `aaa/bbb'? y
rm: remove directory `aaa'? y
[root@node01 tmp]# ll
total 4
-rw-r--r--. 1 root root    0 Jul 10 21:20 3.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 4.txt
-rw-r--r--. 1 root root    0 Jul 10 21:20 5.txt
drwxr-xr-x. 2 root root 4096 Jul 10 21:20 x1

第四步: rm 结合 通配符 * ? \[abc][a-z]

rm -rf *.txt

🔎4.拷贝和移动文件

序号命令对应英文作用
01tree [目录名]tree以树状图 列出目录中的内容
02cp 源文件 目标文件copy复制文件或者目录
03mv 源文件 目标文件move移动文件或目录 或者 重命名

🦋4.1 tree (扩展)

# 创建目录
mkdir -p /export/aaa/bbb/ccc

# 创建文件
touch /export/aaa/01.txt /export/aaa/02.txt
touch /export/aaa/bbb/03.txt /export/aaa/bbb/04.txt
touch /export/aaa/bbb/ccc/05.txt /export/aaa/bbb/ccc/06.txt

默认没有安装 tree 组件, 需要联网时安装:

# 安装 tree组件
yum -y install tree

# 卸载 tree组件
yum -y remove tree

第一步: 以树形结构显示目录中的文件和目录

tree [目录]
  • 如果指定目录, 就显示指定目录的内容
  • 如果不指定目录,就显示当前目录的内容

第二步: 只显示 当前目录中的目录

tree -d [目录]
选项英文含义
-dderictory (目录)只显示目录, 不显示文件

第三步: 显示指定的两层

tree -L n [目录]
选项英文含义
-Llevel (层级)显示几层目录

🦋4.2 cp

第一步: 备份指定文件

cp  文件1  备份文件名
[root@node01 export]# cp 01.txt 01.txt_bak
[root@node01 export]# ll
total 4
-rw-r--r--. 1 root root    0 Jul 10 21:02 01.txt
-rw-r--r--. 1 root root    0 Jul 10 22:45 01.txt_bak
drwxr-xr-x. 3 root root 4096 Jul 10 21:24 aaa

第二步: 将文件复制到目录中

cp 文件1 目录/
[root@node01 export]# mkdir -p x1
[root@node01 export]# tree
.
├── 01.txt
├── 01.txt_bak
├── aaa
│   ├── 01.txt
│   ├── 02.txt
│   └── bbb
│       ├── 03.txt
│       ├── 04.txt
│       └── ccc
│           ├── 05.txt
│           └── 06.txt
└── x1

4 directories, 8 files
[root@node01 export]# cp 01.txt ./x1/01.txt_bak2
[root@node01 export]# tree
.
├── 01.txt
├── 01.txt_bak
├── aaa
│   ├── 01.txt
│   ├── 02.txt
│   └── bbb
│       ├── 03.txt
│       ├── 04.txt
│       └── ccc
│           ├── 05.txt
│           └── 06.txt
└── x1
    └── 01.txt_bak2

第三步: 将文件复制到另一个文件中, 实现覆盖效果

cp 文件1 文件2(存在的)
[root@node01 export]# cp /etc/profile ./01.txt
cp: overwrite `./01.txt'? y
[root@node01 export]# ll
total 12
-rw-r--r--. 1 root root 1841 Jul 10 22:47 01.txt
-rw-r--r--. 1 root root    0 Jul 10 22:45 01.txt_bak
drwxr-xr-x. 3 root root 4096 Jul 10 21:24 aaa
drwxr-xr-x. 2 root root 4096 Jul 10 22:45 x1

第四步: 复制目录 到指定 目录中

cp -r 目录1/ 目录2/
命令英文作用
-rrecursive (递归)递归复制目标目录的内容
[root@node01 export]# tree
.
├── 01.txt
├── 01.txt_bak
├── aaa
│   ├── 01.txt
│   ├── 02.txt
│   └── bbb
│       ├── 03.txt
│       ├── 04.txt
│       └── ccc
│           ├── 05.txt
│           └── 06.txt
└── x1
    └── 01.txt_bak2

4 directories, 9 files
[root@node01 export]# cp aaa/ x1/
cp: omitting directory `aaa/'
[root@node01 export]# cp -r aaa/ x1/
[root@node01 export]# tree
.
├── 01.txt
├── 01.txt_bak
├── aaa
│   ├── 01.txt
│   ├── 02.txt
│   └── bbb
│       ├── 03.txt
│       ├── 04.txt
│       └── ccc
│           ├── 05.txt
│           └── 06.txt
└── x1
    ├── 01.txt_bak2
    └── aaa
        ├── 01.txt
        ├── 02.txt
        └── bbb
            ├── 03.txt
            ├── 04.txt
            └── ccc
                ├── 05.txt
                └── 06.txt

7 directories, 15 files

🦋4.3 mv (move)

第一步: 将文件 移动 另一个目录中

mv 文件 目录/
[root@node01 export]# mv 01.txt_bak x1/
[root@node01 export]# tree
.
├── 0001.txt
├── aaa
│   ├── 01.txt
│   ├── 02.txt
│   └── bbb
│       ├── 03.txt
│       ├── 04.txt
│       └── ccc
│           ├── 05.txt
│           └── 06.txt
└── x1
    └── 01.txt_bak

第二步: 重命名

mv 旧文件名 新文件名
[root@node01 export]# ll
total 12
-rw-r--r--. 1 root root 1841 Jul 10 22:47 01.txt
-rw-r--r--. 1 root root    0 Jul 10 22:45 01.txt_bak
drwxr-xr-x. 3 root root 4096 Jul 10 21:24 aaa
drwxr-xr-x. 2 root root 4096 Jul 10 22:48 x1
[root@node01 export]# mv 01.txt 0001.txt
[root@node01 export]# ll
total 12
-rw-r--r--. 1 root root 1841 Jul 10 22:47 0001.txt
-rw-r--r--. 1 root root    0 Jul 10 22:45 01.txt_bak
drwxr-xr-x. 3 root root 4096 Jul 10 21:24 aaa
drwxr-xr-x. 2 root root 4096 Jul 10 22:48 x1

第三步: 将目录移动 到 另一个目录中

mv 被移动目录 目标目录
[root@node01 export]# mv -r aaa/ x1/
mv: invalid option -- 'r'
Try `mv --help' for more information.
[root@node01 export]# mv aaa/ x1/   
[root@node01 export]# tree
.
├── 0001.txt
└── x1
    ├── 01.txt_bak
    └── aaa
        ├── 01.txt
        ├── 02.txt
        └── bbb
            ├── 03.txt
            ├── 04.txt
            └── ccc
                ├── 05.txt
                └── 06.txt

🔎5.查看文件内容

序号命令对应英文作用
01cat 文件名concatenate查看小文件内容
02less -N 文件名less分频 显示大文件内容
03head -n 文件名查看文件的前一部分
04tail -n 文件名查看文件的最后部分
05grep 关键字 文件名grep根据关键词, 搜索文本文件内容
# 清空指定目录内容
cd /export/ 
rm -rf *

# 复制 /etc/passwd 文件 到 /export/ 目录中
cp /etc/passwd /export/

# 复制 /etc/profile 文件 到 /export/ 目录中
cp /etc/profile /export/

# 罗列目录中内容
tree /export

🦋5.1 cat

第一步: 显示文件内容(不显示行号)

cat 文件名

第二步: 显示文件内容(显示行号 包含空行)

cat -n 文件名
参数英文含义
-nnumber显示行号
  • 缺点: 空行也显示行号

第三步: 显示文件内容(显示行号 排除空行)

cat -b 文件名
参数英文含义
-bnumber-nonblank非空行 显示行号
  • nl 文件名 也可以实现 非空行显示行号的效果
命令英文含义
nl 文件number lines of files查看文件内容非空行显示行号

🦋5.2 less

第一步 : 分屏显示文件内容

命令作用
less -N 文件名分屏展示文件内容, 适合 大文件
参数英文含义
-Nnumber显示文件内容 且 显示行号

使用 less 的操作键:

操作键功能
空格键显示手册页的下一屏幕
Enter 键一次滚动手册页的一行
b回滚一屏
f向前一屏
q退出
/word搜索word字符串

第二步: 根据关键词 搜索

# 根据关键词搜索
/word
操作键功能
n向下找
N向上找

🦋5.3 head

第一步:查看文件的前5行内容

head -n 数字 文件
参数英文含义
-nnumber表示显示前几行内容

🦋5.4 tail

第一步: 查看文档的最后10行内容

tail -10 文件

第二步: 动态显示文档的最后内容,一般用来查看日志

tail -f 文件名

第三步: 动态显示文档的最后100行内容

tail -100f 文件名

🦋5.5 grep(重点)

第一步: 搜索存在关键 的行

grep 关键字 文件名

第二步: 搜索存在关键字的行且显示行号

grep -n 关键字 文件名
选项英文含义
-nnumber显示匹配行和行号

第三步: 忽略大小写搜索存在关键字的行

grep -i 关键字 文件名
选项英文含义
-iignore-case忽略大小写

第四步: 搜索 不存在关键字的行

grep -v 关键字 文件名
选项英文含义
-vinvert-match显示 不包含关键字 的所有行

第五步: 搜索以关键字开始的行 或 以关键字结尾的行

grep 正则 文件名
参数含义
^a行首,搜索以a开头的行
ke$行尾,搜索以ke结束的行

🔎6.其他

🦋6.1 管道 | (入门)

第一步 : 过滤 /etc/目录下 以pro 开头的文件

ls /etc/ | grep ^pro

第二步 : 搜索存在关键字的行数

ls /etc | grep ^pro |  wc -l
英文作用
命令: wc [参数] [文件]打印文件的行数, 单词数, 字节数
参数: -l line 行显示 行数

🦋6.2 echo 文字内容

  • echo string 将字符串输出到控制台 , 通常回和 重定向 联合使用
echo hello

# 如果字符串有空格, 为了避免歧义 请增加 双引号 或者 单引号
echo "hello world"

🦋6.3 重定向 >(覆盖) 和 >> (追加)

第一步: 将命令的成功结果覆盖指定文件内容

echo 2222 > 01.txt
命令作用
结果 > 文件名> 表示输出, 会覆盖文件的原有内容

第二步: 将命令的成功结果追加指定文件的后面

echo 3333333 >> 01.txt
命令作用
命令 >> 文件名>> 表示追加, 会将内容追加到已有文件的末尾

第三步: 将命令的失败结果追加指定文件的后面

cat 不存在的目录  &>>  error.log
命令作用
命令 &>> 文件&>> 表示不区分错误类型 都放到 日志中

🦋6.4 && 和 ||

第一步: 如果 创建 目录成功, 就提示创建成功

命令作用
命令1 && 命令2如果 命令1执行成功了, 才执行 命令2
mkdir -p 正确目录 && echo "提示创建目录成功"

1 启动tomcat

2 查看tomcat日志

启动tomcat && 查看tomcat日志

第二步: 如果 创建 目录 失败, 就提示 创建失败

命令作用
命令1 || 命令2如果 命令1 执行失败了, 才执行 命令2
mkdir 错误目录 || echo "提示创建目录失败"
(cd a1/b1/c1 || mkdir -p a1/b1/c1) && cd a1/b1/d1

🦋6.5 软链接(类似与 快捷方式)

  • 在linux中 文件名内容 是两个文件, 分开的!

  • 创建软链接的原理, 如下

语法如下:

命令英文作用
ln -s 目标文件绝对路径 快捷方式路径link给目标文件增加一个软链接, 通俗讲就是快捷方式


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

本文标签: 愚公 课程 常用命令 系列 数据