Linux 的基础知识


Linux 简介

  1. Linux 分为内核版本和发行版本。发行版本在内核基础上增加各种功能。在服务器领域使用 Red Hat,Ubuntu 具有图形界面偏向个人应用。
  2. Linux 严格区分大小写;所有内容以文件形式保存,包括硬件。
  3. Linux 不靠扩展名区分文件类型,但为使用方便,有一些约定俗成的扩展名。

安装

  1. 使用虚拟机 VMware 安装 Ubuntu。本机系统可以与虚拟机系统进行网络通信;可以设定并随时修改虚拟机操作系统的硬件环境。
  2. 格式化的目的是为了写入文件系统:将磁盘划分为等块大小;并创建表格记录文件 ID 号、修改时间、权限。

常用命令

查询目录

drwxr-xr-x2silencialsilencial4096Apr 8 20:00Desktop
文件类型(- 文件,d 目录,l 软链接
权限(三位一组)(u 所有者、g 所属组、o 其他人)(r 读、w 写、x 执行
引用计数所有者 (u)所属组 (g)大小时间名称

文件处理命令

常见目录

  • /bin:存放所有用户都可以使用的基本命令
  • /sbin:存放系统管理员使用的基本系统管理命令。通常只有 root 用户有权限执行
  • /dev:存放硬件设备文件
  • /etc:存放系统和应用程序的配置文件
  • /home:存放普通用户的主目录
  • /lib:存放系统程序和命令所需的共享库文件
  • /opt:存放第三方应用软件
  • /sys:存放与内核和设备相关的信息
  • /root:超级用户(root)的主目录
  • /tmp:存放临时文件。所有用户都可以访问和写入,通常在重启时清空。/var/tmp 类似,但通常不会在重启时清空
  • /usr:存放用户安装的程序和文件
    • /usr/bin:存放非系统关键的用户命令
    • /usr/sbin:存放非系统关键的系统管理命令
    • /usr/local/bin:存放本地安装的软件
  • /var:存放经常变化的数据,例如系统日志文件和缓存文件

链接命令

硬链接:

  • 相同的 inode 和存储 block,可以看做是同一个文件
  • 可通过 inode 识别
  • 不能跨分区
  • 不能针对目录使用

软链接:

  • 类似 Windows 快捷方式
  • 软链接拥有自己的 inode 和 block,但数据块中没有实际的文件数据
  • lrwxrwxrwx 所有软链接文件

ln -s [原文件] [目标文件]:创建软链接

关机与重启命令

  • shutdown [选项] 时间:最安全,可以正确保存数据
    • -c 取消前一个关机命令
    • -h 关机
    • -r 重启
    • & 加在最后表示后台执行
  • logout 退出登录
  • runlevel:查询当前系统运行级别
    • 0 关机
    • 1 单用户
    • 2 不完全多用户,不含 NFS 服务
    • 3 完全多用户
    • 4 未分配
    • 5 图形界面
    • 6 重启

其他常用命令

查询与自动挂载

通常在 /mnt/media 目录下创建挂载点

  • mount:查询已挂载设备
  • mount -a:依据 /etc/fstab 配置文件内容,自动挂载
  • mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
    • -t <文件系统>:指定文件系统类型(如 ext3、ext4、iso9660 等)
    • -o <特殊选项>:指定额外的挂载选项
  • mount -t iso9660 /dev/cdrom /mnt/cdrom:挂载光盘
  • umount:卸载设备
  • fdisk -l:列出系统中所有的硬盘分区信息
  • mount -t vfat /dev/sdb1 /mnt/usb/:挂载 U 盘

Linux 默认不支持 NTFS 文件

用户登录查看命令

  • w [用户名]:查看登录用户信息,并显示用户当前操作
    • USER:登录的用户名
    • TTY:登录终端
    • FROM:登录来源 IP 地址
    • LOGIN@:登录时间
    • IDLE:用户闲置时间
    • JCPU:与该终端关联的所有进程累计占用的 CPU 时间
    • PCPU:当前进程占用的 CPU 时间
    • WHAT:当前正在运行的命令
  • who [用户名]:查看当前登录用户信息
    • 用户名
    • 登录终端
    • 登录时间
  • last:查看当前及历史登录用户信息(读取 /var/log/wtmp 文件)
    • 用户名
    • 登录终端
    • 登录 IP
    • 登录时间
    • 退出时间
  • lastlog:查看所有用户最后一次登录时间(读取 /var/log/lastlog 文件)
    • 用户名
    • 登录终端
    • 登录 IP
    • 最后一次登录时间

Shell 基础

Shell 概述

Shell 是一个命令行解释器,提供用户与 Linux 内核交互的接口,用于启动、挂起、停止程序及编写脚本。

Shell 也是一个功能强大的解释型脚本语言,易编写、易调试、灵活性强,可直接调用 Linux 系统命令。

Shell 主要有两种语法类型:Bourne 和 C,两者不兼容。Bourne 家族包括 sh、ksh、bash、psh、zsh;C 家族包括 csh、tcsh。

  • echo $SHELL:查看当前使用的 Shell

脚本

  • echo [选项] [输出内容]
    • -e:支持反斜线控制的字符转换
      • \a:输出警告音
      • \b:退格键
      • \n:换行符
      • \r:回车键
      • \t:制表符,即 Tab 键
      • \v:垂直制表符
      • \0:按照八进制 ASCII 表输出字符
      • \x:按照十六进制 ASCII 表输出字符
      • "\e[1;31m 文字 \e[0m":颜色输出

第一个脚本

1
2
#!/bin/bash # 必加
# The first program # 注释

脚本执行:

  1. 赋予执行权限后直接运行:chmod 755 hello.sh 然后 ./hello.sh
  2. 通过 Bash 命令调用执行:bash hello.sh

Bash 的基本功能

命令别名

  • alias:查看系统中所有命令别名
  • alias [别名]=[原命令]:设定命令别名
  • vi ~/.bashrc:写入用户环境变量配置文件,使别名永久生效。修改后,使用 source ~/.bashrc 重新载入配置。
  • unalias [别名]:删除指定别名

命令生效顺序:

  1. 执行用绝对路径或相对路径执行的命令
  2. 别名
  3. Bash 的内部命令
  4. 按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令

历史命令

  • history [选项] [历史命令文件路径]
    • -c:清空当前 Shell 的历史命令
    • -w:将当前 Shell 缓存中的历史命令写入指定文件(默认为 ~/.bash_history

历史命令默认保存 1000 条,可在环境变量配置文件 /etc/profile~/.bashrc 中修改(变量:HISTSIZE)。

  • 使用上下箭头调用以前的历史命令
  • 使用 !n 重复执行第 n 条历史命令
  • 使用 !! 重复执行上一条命令
  • 使用 !字串 重复执行最后一条以该字串开头的命令

输出重定向

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误
  • 标准输出重定向:
    • 命令 > 文件:以覆盖的方式,把命令的标准输出输出到指定的文件或设备当中。
    • 命令 >> 文件:以追加的方式,把命令的标准输出输出到指定的文件或设备当中。
  • 标准错误重定向:
    • 命令 2 > 文件:以覆盖的方式,把命令的标准错误输出到指定的文件或设备当中。
    • 命令 2 >> 文件:以追加的方式,把命令的标准错误输出到指定的文件或设备当中。
  • 标准输出和标准错误同时保存:
    • 命令 > 文件 2 > &1:以覆盖的方式,把标准输出和标准错误都保存到同一个文件当中。
    • 命令 >> 文件 2 > &1:以追加的方式,把标准输出和标准错误都保存到同一个文件当中。
    • 命令 &> 文件:以覆盖的方式,把标准输出和标准错误都保存到同一个文件当中。
    • 命令 &>> 文件:以追加的方式,把标准输出和标准错误都保存到同一个文件当中。
    • 命令 >> 文件_1 2 >> 文件_2:把标准输出追加到文件_1,,标准错误追加到文件_2。
  • ls &> /dev/null:丢入垃圾站

输入重定向

  • wc [选项] [文件名]
    • -c:统计字节数
    • -w:统计单词数
    • -l:统计行数

输入完成后按 Ctrl+D 结束输入并统计

  • 命令 < 文件:将文件内容作为命令的标准输入
  • 命令 << 标识符:将两个标识符之间的内容作为命令的标准输入(Here Document)

磁盘管理

基本命令

  • df:查看磁盘分区使用状况
    • -l:仅显示本地磁盘(默认)
    • -a:显示所有文件系统的磁盘使用情况(包括虚拟文件系统)
    • -h:以 1024 进制(KiB, MiB, GiB 等)显示易读的容量单位
    • -H:以 1000 进制(KB, MB, GB 等)显示易读的容量单位
    • -T:显示磁盘分区类型
    • -t <类型>:仅显示指定类型文件系统的磁盘分区
    • -x <类型>:不显示指定类型文件系统的磁盘分区
  • du [选项] [文件或目录]:统计文件或目录占用的磁盘空间大小
    • -b:以 Byte 为单位统计
    • -k:以 KB 为单位统计
    • -m:以 MB 为单位统计
    • -h:以 1024 进制(KiB, MiB, GiB 等)显示易读的单位
    • -H:以 1000 进制(KB, MB, GB 等)显示易读的单位
    • -s:仅显示总计大小(不显示子目录详情)

硬盘分区和格式化

分区模式之 MBR:

  • 主分区不超过 4 个
  • 单个分区容量最大 2 TB

分区模式之 GPT:

  • 主分区个数 128 个
  • 单个分区容量 18 EB

命令:

  • fdisk:用于 MBR 硬盘分区
  • parted:可用于 MBR 和 GPT 硬盘分区
  • mkfs.<文件系统类型> <设备名>:格式化设备为指定文件系统(例如:mkfs.ext4 /dev/sda1