• Linux入门基础之 上


    Linux 入门基础

    一、Linux 系统安装

    • 安装方法网上很多,请自行百度

    二、Linux 基本操作

    2.1、GNOME图形界面基本操作

    • 操作类似于Windows系统操作

    • 打开每一个文件夹都会打开一个新的窗口,这可以修改

      • 打开文件夹-Edit-Preference-Behavior,勾选上 Always open in browser windows ,关闭该文件夹后重新打开文件夹,文件夹的操作就跟Windows一样了

    2.2、Bash基本操作

    2.2.1 SHELL 的概念

    • Shell 叫做 壳 ,Linux操作系统底层是有一个内核(Kernel),内核用来去实现一些上层服务、上层命令、上层应用所需要的基本功能,比如说底层磁盘的读写,网络的连接,网络的通信,键盘驱动、鼠标驱动、进程调度、内存管理、图形页面等等都是由操作系统的 Kernel 去完成的。Kernel 我们是没有办法直接去对它进行控制的,因为一些安全问题,一些权限问题,用户是不允许直接去操控 Kernel 的,这个时候就需要一个 Shell 程序。Shell 的功能就是把我们用户的一些指令去传递给 Kernel ,翻译成 Kernel 可以理解的信息。
      所以我们所有当前的操作都是由一个 Shell 传递给 Kernel 的。
    • Shell分为 CLI 与 GUI 两种
      - CLI: Command Line Interface 命令行界面Shell
      - BASH
      - GUI: Graphical User Interface 图形界面Shell
      - GNOME
    • 在 Linux 系统里面,命令行操作是 Linux 主要管理方式,图形界面能完成的命令行基本都难完成,命令行能完成的图形界面不一定能完成。

    2.2.2 BASH 命令行操作

    • 提示符

      • # : 代表当前是以根用户也就是 root 用户身份登录

        • 表示拥有最高的管理员权限,也就是当前是操作都很危险,可以破坏系统
      • $ : 代表当前是普通用户身份登录

        • 输入:“ su - ” 后提示输入密码,输入密码后就是 root 用户身份登录了
    • 命令一般由三部分组成

      • 命令
      • 选项
      • 参数
    • 基本命令

      • hostname : 查看当前主机名

      • ls : list 的缩写,列出当前目录下的所有文件

      • uname: 显示当前系统的基本信息(底层内核的信息)

        这是不带任何参数的命令,但是几乎所有的命令都可以带参数。

      • uname -r : 不带参数的命令返回信息有点少,加上 -r 参数后返回信息变成了内核版本号

      • uname -a : 显示所有信息

        命令后接一个 - 和一个字母,这是单字符参数,也可以写成两个 - 和一个单词,如:

        uname --all ,这个命令和上面的 uname -a 功能是一样的。

        一般都使用单字符参数。

      • firefox : 表示打开火狐浏览器,输入程序的命令就是打开该程序

        火狐浏览器打开后再返回命令行界面时没有返回提示符,按 Ctrl + C 可以终止当前命令,退出到提示符下,可以在输入命令时在后面加入参数让程序在后台运行

      • firefox & :任何命令后加 & 表示将该命令放到后台运行,不会干扰当前命令行。(命令行是多进程多任务终端)

      • clear : 清除屏幕

    • 使用 Tab 键来简化命令输入

      • 自动补全命令
      • 自动补全文件名
      • 无法自动补全参数

      Linux 命令或者文件名有很多前几个字母是相同的,输入的字母只要能和其他命令或文件名区分开,按 Tab 键就能自动补全,不能区分开时按两下 Tab 键就会显示所有以输入的字母开头的命令或文件名。

      不输入命令直接按两下 Tab 键会提示是否列出所有的命令

      例如:

      ​ $unam<tab>

      ​ $uname

      ​ $ls Dow<tab>

      ​ $ls Downloads

    • 历史记录

      • Bash 会保存你输入命令的历史记录,可以通过键盘的上下按键查看上一条或下一条命令,也可以使用 history 命令来查看操作过的所有命令
    • 通过历史记录简化操作

      • !! : 重复前一个命令
      • !字符 : 重复前一个以“ 字符 ”开头的命令
      • !num : 按照历史记录的序号执行命令
      • !?abc : 重复之前包含 abc 的命令
      • !-n : 重复 n 个命令之前的那个命令
    • 搜索命令历史记录

      • 可以通过 Ctrl + r 来在历史记录中搜索命令

        (reverse-i-search) '':

      • 重新调用前一个命令中的参数

        esc键 + . : 输入命令后按 esc 键,然后按 .

    • 命令行通配符

      • Bash Shell 支持以下通配符:

        * : 匹配零个或多个

        ? : 匹配任意一个字符

        [0-9] : 匹配一个数字范围

        [abc] : 匹配列表里任何字符

        [^abc] : 匹配列表以外字符

    • 切换用户

      • 在 CLI 中,通过 su 命令切换用户
        • su - : 切换到 root 用户并使用一个新的运行环境,输入 exit 退出
          • su 后加 - 和不加 - 的区别就是是否创建一个新的环境,一般使用都加 -
        • sudo : 使用管理员用户身份运行命令(非 root 用户)
          • sudo 命令
      • 显示当前用户信息
        • id
      • 修改当前用户密码
        • passwd
    • BASH 作业管理

      • 在后台运行进程
        • 在命令后添加一个 &
      • 暂停某个程序
        • 通过 Ctrl + z 或者发送信号 17
      • 管理后台作业
        • jobs : 查看后台运行的进程是否在运行
        • bg : 后面加进程编号,控制一个进程继续在后台运行
        • fg : 后面加进程编号,将后台运行的进程拉回到前台来运行

    2.3、Linux 文件系统结构

    • Linux 文件系统为一个倒转的单根树状结构
    • 文件系统的根为 " / "
    • 文件系统严格区分大小写
    • 路径使用 " / " 分隔,(Windows 中使用 " ")

    2.3.1 当前工作目录

    • 每一个 shell 或系统进程都有一个当前工作目录
    • 使用 pwd 命令可以显示当前的工作目录

    2.3.2 文件名称

    • 文件的名称大小写敏感
    • 名称最多可以为 255 个字符
    • 除了 " " 外,都是有效字符(文件的命名最好体现文件的功能,尽量不要使用特殊字符)
    • 通过 touch 命令可以创建一个空白文件或者更新已有文件的时间
    • 以 " . " 开头的文件为隐藏文件,ls -a 命令中会显示很多以 . 开头的文件,隐藏文件大多数都是配置文件,轻易不要去动。

    2.3.3 列出目录内容

    ​ " ls " 命令用来列出目录内容

    • 相关参数
      • ls -a : 显示所有文件(包括隐藏文件)
      • ls -l : 显示详细信息
      • ls -R : 递归显示子目录结构
      • ls -ld : 显示目录和链接信息

    2.3.4 查看文件类型

    ​ 通过 file 命令可以查看文件的类型

    2.3.5 绝对路径与相对路径

    • 绝对路径:以 " / " 开头,递归每级目录直到目标的路径。不受当前所在工作目录限制
    • 相对路径:以当前目录为起点,到的目标的路径。受当前所在目录限制
      • cd 命令可以用来切换目录
        • 上一级目录:" .. "
        • 当前目录:" . "
        • 用户家目录:" ~ " ,在任何目录下输入 cd 直接按 Enter 也是回到家目录
        • 上一个工作目录:" - "

    • 图中当前目录是 linuxcast ,目标目录是 sa ,从 linuxcast 目录到 sa 目录分别使用绝对路径和相对路径如下:

      • 绝对路径:/var/log/sa
      • 相对路径:../../var/log/sa

      以后写程序或写脚本的时候一般使用绝对路径!

    2.4、Linux 文件基本操作

    2.4.1 创建和删除文件

    • 通过 touch 命令可以创建一个空文件或更新文件时间
    • 通过 rm 命令可以删除文件或目录,常用参数:
      • -i : 交互式
      • -r : 递归的删除包括目录中的所有内容
      • -f :强制删除,没有警告提示(使用时需十分谨慎)

    2.4.2 创建和删除目录

    • 通过 mkdir 命令创建一个目录
    • 通过 rmdir 命令删除一个空目录
    • 通过 rm -f (-f) 命令删除一个非空目录

    2.4.3 复制文件、目录

    • 使用 cp 命令复制文件或目录
      • cp 源文件(文件夹) 目标文件(文件夹)
    touch linuxcast
    cp linuxcast linuxcast2    复制到当前文件夹并重命名为 linuxcast2
    cp linuxcast linuxcast.net  	复制到别的文件夹下,文件名还是 linuxcast
    
    • 常用参数:

      • -r : 递归复制整个目录树

        不加参数的 cp 命令只能复制文件,如果要复制一个文件夹需要加 -r 的参数

      • -v : 显示详细信息

    2.4.4 移动、重命名文件或目录

    • 通过命令 mv 命令移动或者重命名文件或目录

      • mv 文件 目标目录
      • 如果指定文件名,则可以重命名文件
      mv linuxcast2 linuxcast.net/cast    将文件 linuxcast2 移动到 linuxcast.net 文件夹下并重命名为cast 
      
      touch abc     新建文件abc
      mv abc hello     在当前目录下将文件 abc 重命名为 hello
      

    2.5、Linux 系统常用命令

    2.5.1 日期时间

    • 命令 date 用以查看、设置当前系统时间:
      • date -u : 查看 UTC 时间
      • 格式化显示时间:+%Y--%m--%d
      • date -s "20:20:20" : 修改当前时间为 20:20:20
    • 命令 hwclock (clock) 用以显示硬件时钟时间
    • 命令 cal 用以查看日历
    • 命令 uptime 用以查看系统运行时间,有几个用户登录,及系统平均负载

    2.5.2 输出和查看命令

    • 命令 echo 用以显示输入的内容
    echo 'hello word'
    
    • 命令 cat 用以显示文件内容
      • 如果文件中内容很长,前面的内容会略过,直接显示最后几行,不太方便
    • 命令 head 用以显示文件的头几行(默认10行)
      • -n 指定显示的行数
    • 命令 tail 用以显示文件的末尾几行(默认10行)
      • -n 指定显示的行数
      • -f 追踪显示文件更新(一般用于查看日志,命令不会退出,而是持续显示加入的内容)
    • 命令 more 用于翻页显示文件内容(只能向下翻页)
    • 命令 less 用于翻页显示文件内容(带上下翻页)

    2.5.3 查看硬件信息

    • 命令 lspci 用以查看 PCI 设备
      • -v : 查看详细信息
    • 命令 lsusb 用以查看 USB 设备
      • -v : 查看详细信息
    • 命令 lsmod 用以查看加载的模块(驱动)

    2.5.4 关机、重启

    • 命令 shutdown 用以关闭、重启计算机
      • shutdown [ 关机、重启] 时间
      • -h 关闭计算机
      • -r 重新启动
      • 如:
        • 立即关机: shutdown -h now
        • 10分钟后关机: shutdown -h +10
        • 23:30分关机: shotdown -h 23:30
        • 立即重启: shotdown -r now
    • 命令 poweroff 用以立即关闭计算机
    • 命令 reboot 用以立即重启计算机

    2.5.5 归档、压缩

    • 命令 zip 用以压缩文件
      • zip linuxcast.zip myfile
    • 命令 unzip 用以解压缩 zip 文件
      • unzip linuxcast.zip
    • 命令 gzip 用以压缩文件
      • gzip linuxcast.net
    • 命令 tar 用以归档文件 ( tar 是归档命令,不是压缩命令)
      • tar -cvf out.tar linuxcast
      • tar -xvf linuxcast.tar 打开或释放归档(打开在当前目录下)
      • tar -cvzf backup.tar.gz /etc 归档并压缩,最常用的归档压缩命令
        • -z 参数将归档后的归档文件进行 gzip 压缩以减少大小

    2.5.6 查找

    • 命令 locate 用以快速查找文件、文件夹
      • locate keyword
      • 此命令需要预先建立数据库,数据库默认每天更新一次,所以优点查找非常快,缺点是新加进来的数据,数据库没有更新的话会找不到文件,可用 updatedb 命令手工建立、更新数据库
    touch aabbcc    新建文件aabbcc
    locate aabbcc    找不到文件
    updatedb          手工更新数据库,相当于扫描整个操作系统
    locate aabbcc    此时就能找到文件
    
    • 命令 find 用以高级查找文件、文件夹

      • find 查找位置 查找参数

      • 如:

        • find . -name *linuxcast* 在当前目录下查找文件名包含 linuxcast 的所有文件

        • find / -name *.conf 在根目录下(也可以说整个操作系统或硬盘)查找所有以 .conf 结尾的文件

        • find / -perm 777 在硬盘中查找所有权限是 777 的文件

        • find / type d 在硬盘中查找所有文件类型是目录的文件

        • find . -name "a*" -exec ls -l {} ; 查找后的结果再执行命令

          find . -name "a*" 是查找所有以 a 开头的文件;-exec 是执行的意思;" -exec " 和 " {} ; " 是固定格式,整个的意思就是:把以 a 开头的文件找到后作为参数传递给 " -exec " 和 " {} ; " 之间的命令(这里是 ls -l )

      • find 支持很多种的查找条件,常用的如下:

        • -name 文件名
        • -perm 权限
        • -user 查找全部属于某个特定用户的文件
        • -group 查找全部属于某个特定组的文件
        • -ctime 基于文件修改时间的查找
        • -type 文件类型
        • -size 基于文件大小的查找

    2.6、Vi 文本编辑器

    2.6.1 VI 和 VIM

    • vi 是一个命令行界面下的文本编辑工具,最早在 1976 年由 Bill Joy 开发,当时名字叫 ex。
    • vi 支持绝大多数操作系统(最早在 BSD 上发布),并且功能已经十分强大。
    • 1991 年 Bram Moolenaar 基于 vi 进行了改进,发布了 vim,加入了对 GUI 的支持、
    • vim 已经不仅仅是普通意义上的文本编辑器(如 Windows 上的记事本),而是被广泛的作为在文本编辑、文本处理、代码开发等等用途。
    • Linux 中知名的文本编辑器还有 emacs ,它的功能比 vim 还要强大。

    2.6.2 VIM

    • 绝大多数 Linux 系统上均安装有 vim ,vim 比 vi 的功能更为强大,所以建议大家使用 vim 而非 vi ,两者使用方法相同。
    • 命令 vim 可以启动 vim 编辑器
    • 一般通过 vim + 目标文件路径 的形式使用 vim
    • 如果目标文件已存在,则 vim 打开该文件
    • 如果目标文件不存在,则 vim 新建并打开该文件

    2.6.3 VIM 的三种工作模式

    • 命令模式(常规模式)
      • vim 启动后,默认进入命令模式,任何模式都可以通过按 esc 键回到命令模式(可以多按几次)。
      • 命令模式下可以通过键入不同的命令完成定位、选择、复制、翻页、粘贴、删除、撤销等等操作
      • 常用命令:
        • i 在光标前插入文本
        • o 在当前行的下面插入新行
        • dd 删除整行
        • yy 将当前行的内容放入缓冲区 (复制当前行)
        • n+yy 将 n 行的内容放入缓冲区 (复制 n 行)
        • p 将缓冲区的文本放入光标后(粘贴)
        • u 撤销上一个操作
        • r 替换当前字符
        • / 查找关键字
    • 编辑模式(插入模式)
      • 在命令模式中按 " i " 键,即可进入编辑模式,在编辑模式可以输入编辑文本内容,使用 esc 键可以返回到命令模式
    • 末行模式(ex 模式)
      • 在命令模式中按 " : " 键可以进入末行模式,光标会移动到底部左下角,在这里可以保存修改或退出 vim
      • 常用命令如下:
        • :w 保存当前修改
        • :q 退出
        • :wq 保存并退出
        • :q! 强制退出,不保存修改
        • :x 保存并退出,相当于 :wq
        • :set number 显示行号
        • :! 系统命令 执行一个系统命令并显示结果 如 :! who
        • :sh 切换到命令行,使用 Ctrl + d 切换回 vim

    三、磁盘基本概念

    3.1、磁盘基本概念

    • cylinder - 柱面
    • sector - 扇区
    • head - 磁头

    3.2、磁盘在 Linux 中的表示

    • Linux 所有设备都被抽象为一个文件,保存在 /dev 目录下
    • 设备名称一般为 hd[a-z] 或 sd[a-z] ( [a-z]为分区号 ),如:hda、hdb、sda、sdb
    • IDE 设备的名称为 hd[a-z] ,SATA、SCSI、USB 等设备的名称为 sd[a-z]

    3.3、分区概念

    • 将一个磁盘逻辑的分为几个区,每个区当做独立磁盘,以方便使用管理
      • 不同分区用:设备名称+分区号 方式来表示,如:sda1、sda2
      • 主流的分区机制分为 MBR 和 GPT 两种

    3.4、MBR

    • MBR (Master Boot Record)是传统的分区机制,应用于绝大多数使用 BIOS 的 PC 设备
      • MBR 支持 32bit 和 64bit 系统
      • MBR 支持分区数量有限
      • MBR 只支持不超过 2T 的硬盘,超过 2T 的硬盘将只能使用 2T 空间(有第三方解决方法)
    • MBR 分区
      • 主分区
        • 最多只能创建4个主分区
      • 扩展分区
        • 一个扩展分区会占用一个主分区位置
      • 逻辑分区
        • Linux 最多支持63个 IDE 分区和15个 SCSI 分区

    3.5、GPT

    • GPT (GUID Partition Table)是一个较新的分区机制,解决了 MBR 的很多缺点
      • 支持超过 2T 的磁盘
      • 向后兼容 MBR
      • 必须在支持 UEFI 的硬件上才能使用
      • 必须使用64bit 系统
      • Mac、Linux 系统都能支持 GPT 分区格式
      • Windows7 64bit、WindowsServer2008 64bit 支持 GPT

    3.6、FDISK 分区工具

    • fdisk 是来自 IBM 的老牌分区工具,支持绝大多数操作系统,几乎所有的 Linux 的发行版本都装有 fdisk ,包括在 Linux 的 rescue 模式下依然能够使用。
    • fdisk 是一个基于 MBR 的分区工具,所以如果需要使用 GPT ,则无法使用 fdisk 进行分区
    • FDISK 操作
      • fdisk 命令只有具有超级用户权限才能够运行
      • 使用 fdisk -l 可以列出所有安装的磁盘及其分区信息
      • 使用 fdisk /dev/sda 可以对目标磁盘进行分区操作
      • 分区之后需要使用 partprobe 命令让内核更新分区信息,否则需要重启才能识别新的分区
      • /proc/partitions 文件也可用来查看分区信息

    四、Linux 文件系统

    4.1、文件系统简介

    4.1.1 文件系统简介

    • 操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后才能够为操作系统使用,创建文件系统的过程又称之为格式化。
      • 没有文件系统的设备又称之为裸(raw)设备
      • 常见的文件系统有:fat32 、NTFS、ext2 、ext3、ext4、ext6、HFS 等
      • 文件系统之间的区别:日志、支持的分区大小、支持的单个文件大小、性能等
      • Windows 下的主流文件系统是:NTFS , Linux 下的主流文件系统是:Ext3、Ext4
    • Linux 支持的文件系统
      • ext2
      • ext3
      • ext4
      • fat ( msdos )
      • vfat
      • nfs
      • iso9660
      • proc
      • gfs
      • jfs

    4.1.2、MKE2FS 创建文件系统

    • 命令 mke2fs 用来创建文件系统
      • mke2fs -t ext4 /dev/sda3
    • 常用参数
      • -t 指定要创建的文件类型
      • -b blocksize 指定文件系统块大小
      • -c 建立文件系统时检查坏损块
      • -L label 指定卷标
      • -j 建立文件系统日志

    4.1.3、MKFS

    • 命令 mkfs 也可用于创建文件系统,相较于 mke2fs 简单,但是支持的参数较少,不能进行精细化的控制
      • mkfs.ext3 /dev/sda3
      • mkfs.ext4 /dev/sda3
      • mkfs.vfat /dev/sda3

    4.1.4、DUMPE2FS 查看文件系统

    • 命令 dumpe2fs 可以用来查看分区的文件系统信息
      • dumpe2fs /dev/sda2

    4.1.5、JOURNAL 日志

    • 带日志的文件系统(ext3、ext4)拥有较强的稳定性,在出现错误时可以进行恢复。
    • 使用带日志的文件系统,文件系统会使用一个叫做 “两阶段提交” 的方式进行磁盘操作,当进行磁盘操作时,文件系统进行以下操作:
      • 文件系统将准备执行的事务的具体内容写入日志
      • 文件系统进行操作
      • 操作成功后,将事务的具体内容从日志中删除
    • 这样做的好处是,当事务执行的时候如果出现意外(如断电或磁盘故障),可以通过查询日志进行恢复操作。缺点是会丧失一定的性能(额外的日志读写操作)

    4.1.6、E2LABEL 添加标签

    • 命令 e2label 可以用来为文件系统添加标签(标签建议大小)
      • e2label /dev/sda2 显示 sda2 的系统标签
      • e2label /dev/sda2 LINUXCAST 将 sda2 的系统标签设置为 LINUXCAST

    4.1.7、FSCK 检查并修复

    • 命令 fsck 用来检查并修复损坏的文件系统
      • fsck /dev/sda2
      • 使用 -y 参数不提示而直接进行修复
      • 默认 fsck 会自动判断文件系统类型,如果文件系统损坏较为严重,请使用 -t 参数指定文件系统类型
      • 对于识别为文件的损坏数据(文件系统无记录),fsck 会将该文件放入 lost+found 目录
      • 系统启动时会对磁盘进行 fsck 操作

    4.2、文件系统挂载及使用

    4.2.1 挂载操作

    • 磁盘或分区创建好文件系统后,需要挂载到一个目录才能够使用
    • Windows 或 Mac 系统会进行自动挂载,一旦创建好文件系统后会自动挂载到系统上,Windows 上称之为 C 盘、D 盘等
    • Linux 需要手工进行挂载操作或配置系统进行自动挂载

    4.2.2 MOUNT 挂载命令

    • 在 Linux 中,我们通过 mount 命令将格式化好的磁盘或分区挂载到一个目录上
      • mount /dev/sda3(要挂载的分区) /mnt(挂载点)
    • 常用参数:
      • 不带参数的 mount 命令会显示所有已挂载的文件系统
      • -t 指定文件系统的类型
      • -o 指定挂载选项 (如:mount -o remount,ro /dev/sdb1 /mnt/)
        • ro, rw 以只读或读写形式挂载,默认是 rw
        • sync 代表不使用缓存,而是对所有操作直接写入磁盘
        • async 代表使用缓存,默认是 async
        • noatime 代表每次访问文件时不更新文件的访问时间
        • atime 代表每次访问文件时更新文件的访问时间
        • remount 重新挂载文件系统

    4.2.3 UMOUNT 卸载挂载

    • 命令 umount 用来卸载已挂载的文件系统,相当于 Windows 中的弹出
      • umount 文件系统/挂载点
      • umount /dev/sda3
      • umount /mnt
    • 如果出现 device is busy 报错,则表示该文件系统正在被使用,无法卸载,可以使用以下命令查看使用文件系统的进程:
      • fuser -m/mnt
    • 也可使用命令 lsof 查看正在被使用的文件
      • lsof /mnt

    4.2.4 自动挂载

    • 配置文件 /etc/fstab 用来定义需要自动挂载的文件系统,fstab 中每一行代表一个挂载配置,格式如下:
    /dev/sda3 /mnt ext4 defaults 0 0
    需要挂载的设备 挂载点 文件系统 挂载选项 dump、fsck相关选项
    • 要挂载的设备也可以使用 LABEL 进行识别,使用 LABEL = LINUXCAST 取代 /dev/sda3
    • mount -a 命令会挂载所有 fstab 中定义的自动挂载项
  • 相关阅读:
    postgreSQL数据库to_timestamp和to_date的区别
    【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别
    hutool的json工具完成list和json之间的转换
    springboot集成swagger之knife4j实战(升级版)
    FISCO BCOS 控制台 部署合约 调用 查看已部署合约的地址
    【shell】远程执行shell|多节点并行执行shell|远程执行注意
    IDEA和GIT关于文件中LF和CRLF问题
    Linux openssl 升级、降级
    Xshell无法连接22端口问题解决办法汇总
    Spring MVC 中 DefaultServletHandlerConfigurer
  • 原文地址:https://www.cnblogs.com/duncan1863/p/11503763.html
Copyright © 2020-2023  润新知