Linux入门基础之 上

Linux 入门基础

1、Linux 系统安装

  • 安装方法网上不少,请自行百度

2、Linux 基本操做

2.一、GNOME图形界面基本操做

  • 操做相似于Windows系统操做linux

  • 打开每个文件夹都会打开一个新的窗口,这能够修改
    • 打开文件夹-Edit-Preference-Behavior,勾选上 Always open in browser windows ,关闭该文件夹后从新打开文件夹,文件夹的操做就跟Windows同样了

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 命令行操做

  • 提示符shell

    • # : 表明当前是以根用户也就是 root 用户身份登陆
      • 表示拥有最高的管理员权限,也就是当前是操做都很危险,能够破坏系统
    • $ : 表明当前是普通用户身份登陆
      • 输入:“ su - ” 后提示输入密码,输入密码后就是 root 用户身份登陆了
  • 命令通常由三部分组成数据库

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

    • hostname : 查看当前主机名windows

    • ls : list 的缩写,列出当前目录下的全部文件浏览器

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

      这是不带任何参数的命令,可是几乎全部的命令均可以带参数。安全

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

    • 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.三、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.四、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.五、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.六、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、磁盘基本概念

3.一、磁盘基本概念

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

3.二、磁盘在 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.三、分区概念

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

3.四、MBR

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

3.五、GPT

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

3.六、FDISK 分区工具

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

4、Linux 文件系统

4.一、文件系统简介

4.1.1 文件系统简介

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

4.1.二、MKE2FS 建立文件系统

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

4.1.三、MKFS

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

4.1.四、DUMPE2FS 查看文件系统

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

4.1.五、JOURNAL 日志

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

4.1.六、E2LABEL 添加标签

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

4.1.七、FSCK 检查并修复

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

4.二、文件系统挂载及使用

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 中定义的自动挂载项
相关文章
相关标签/搜索