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

    ​ $uname

    ​ $ls Dow

    ​ $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入门基础之 上_第1张图片

  • 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 也是回到家目录
      • 上一个工作目录:" - "

Linux入门基础之 上_第2张图片

  • 图中当前目录是 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 中定义的自动挂载项

你可能感兴趣的:(Linux入门基础之 上)