Linux 的基础知识
Linux 简介
- Linux 分为内核版本和发行版本。发行版本在内核基础上增加各种功能。在服务器领域使用 Red Hat,Ubuntu 具有图形界面偏向个人应用。
- Linux 严格区分大小写;所有内容以文件形式保存,包括硬件。
- Linux 不靠扩展名区分文件类型,但为使用方便,有一些约定俗成的扩展名。
安装:
- 使用虚拟机 VMware 安装 Ubuntu。本机系统可以与虚拟机系统进行网络通信;可以设定并随时修改虚拟机操作系统的硬件环境。
- 格式化的目的是为了写入文件系统:将磁盘划分为等块大小;并创建表格记录文件 ID 号、修改时间、权限。
常用命令
查询目录
drwxr-xr-x | 2 | silencial | silencial | 4096 | Apr 8 20:00 | Desktop |
---|---|---|---|---|---|---|
文件类型(- 文件,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"
:颜色输出
第一个脚本
|
|
脚本执行:
- 赋予执行权限后直接运行:
chmod 755 hello.sh
然后./hello.sh
- 通过 Bash 命令调用执行:
bash hello.sh
Bash 的基本功能
命令别名
alias
:查看系统中所有命令别名alias [别名]=[原命令]
:设定命令别名vi ~/.bashrc
:写入用户环境变量配置文件,使别名永久生效。修改后,使用source ~/.bashrc
重新载入配置。unalias [别名]
:删除指定别名
命令生效顺序:
- 执行用绝对路径或相对路径执行的命令
- 别名
- Bash 的内部命令
- 按照
$PATH
环境变量定义的目录查找顺序找到的第一个命令
历史命令
history [选项] [历史命令文件路径]
-c
:清空当前 Shell 的历史命令-w
:将当前 Shell 缓存中的历史命令写入指定文件(默认为~/.bash_history
)
历史命令默认保存 1000 条,可在环境变量配置文件 /etc/profile
或 ~/.bashrc
中修改(变量:HISTSIZE
)。
- 使用上下箭头调用以前的历史命令
- 使用
!n
重复执行第 n 条历史命令 - 使用
!!
重复执行上一条命令 - 使用
!字串
重复执行最后一条以该字串开头的命令
输出重定向
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误 |
- 标准输出重定向:
命令 > 文件
:以覆盖的方式,把命令的标准输出输出到指定的文件或设备当中。命令 >> 文件
:以追加的方式,把命令的标准输出输出到指定的文件或设备当中。
- 标准错误重定向:
命令 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
)