前言
本文讲述了一些Linux的基础知识和常用命令。
目录
一、Linux基础知识
1.什么是用户态和内核态
用户态:
用户态也被称为用户模式,是指应用程序的运行状态。在这种模式下,应用程序拥有有限的系统资源访问权限,只能在操作系统划定的特定空间内运行。用户态下运行的程序不能直接访问硬件设备或执行特权指令,所有对硬件的访问都必须通过操作系统进行。
简而言之,用户态就是指可以下发指令,且可以返回结果的操作环境
用户态的语言又有图形界面(通过鼠标操作)和字符界面(输入命令)两种
内核态:
内核态也被称为内核模式或特权模式,是操作系统内核的运行状态。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系统的所有资源,包括CPU、内存、I/O等。
简而言之,内核态的主要是接受指令-执行-传递返回结果且用户无法直接干预
内核态的语言是二进制语言(0,1)
2.什么是Shell
Shell是一个应用程序,它连接了用户和Linux内核,让用户能够更加高效、安全、低成本地使用 Linux内核,这就是Shell 的本质。
- 是Linux系统中运行的一种特殊程序
- 在用户和内核之间充当“翻译官”
- 用户登录Linux系统时,自动加载一个Shell程序
- Bash是Linux系统中默认使用的Shell程序
3.绝对路径与相对路径
绝对路径:从根目录(/)开始,是一个完整的路径。
例如 /opt/demo/demo.txt
相对路径:相对于项目目录的路径
- 相对路径的表现形式
表现形式 | 解释 | 示例 |
---|---|---|
直接使用目录名或文件名 | 表示当前工作目录中的子目录、文件的位置 | grub.conf |
以一个点号"."开头 | 表示以当前的工作目录作为起点 | ./grub.conf |
以两个点号".."开头 | 表示以当前目录的上一级目录作为起点 | ../grub.conf |
以“~用户名”形式开头 | 表示以指定用户的宿主目录作为起点 | ~bb |
以"~"形式开头 | 表示以当前宿主目录作为起点 | ~ |
3.Linux命令
3.1 Linux命令的分类
Linux命令分为内部命令与外部命令
内部命令是Shell程序的一部分,通常在Linux系统运行时Shell就被加载在内存中,因此执行较快。(例如cd,echo等命令)
外部命令是Linux系统中的实用程序部分,不会与Linux系统运行同时被加载到内存中,在需要的时候才会被调用进内存中。
内部命令 | 外部命令 |
---|---|
集成于Shell解释器程序内部的一些特殊指令,也成为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制文件 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行(/bin,/usr/bin,/usr/local/bind)等 |
3.2 Linux命令的格式
Linux命令的组成:
命令字 "选项” ”参数“
例如 mkdir -p a/b/c
命令字(必要):定义基本功能,是整条命令中最关键的部分且唯一确定一条指令
选项(非必要,有时有默认选项):命令的扩展功能,短格式选项使用"-"符号引导(多个单字符选项可以组合在一起使用,如"ls -a"与"ls -l"组合在一起使用就是"ls -al"。
参数(非必要,有时有默认参数):命令处理的对象
3.3 编辑Linux命令行的辅助操作
TAB 键:自动补齐
反斜杠"\":强制换行
Ctrl+U 组合键:清空至行首
Ctrl+K 组合键:清空至行尾
Ctrl+l\L 组合键:清屏
Ctrl+C 组合键:中止、取消本次命令编辑
Ctrl+a 组合键:切换到行首
Ctrl+e 组合键:切换到行尾
二、Linux基础命令
1.pwd命令
pwd-显示用户当前所在的工作目录位置
例
[root@localhost my_dir]# pwd
/opt/my_dir
👆
当前工作目录
2.cd命令
cd-将用户的工作目录更改到其他位置
格式 | 说明 |
---|---|
cd "目标位置" | 切换到目标位置 |
cd ~ | 切换到用户的宿主目录 |
cd | 同上 |
cd- | 切换到上一次执行cd命令的所在目录 |
3.ls命令
ls-显示目录中内容
ls "选项" "文件或目录"
常用选项 | 解释 |
---|---|
-l | 显示文件的详细信息 |
-a | 显示隐藏文件 |
-A | 显示隐藏文件,除了"."与".." |
-d | 显示本目录 |
-h | 人性化显示信息(带单位,通常为k) |
-R | 递归显示(依次显示其子目录) |
--color | 带有颜色的显示(默认开启) |
结合通配符 | 解释 |
---|---|
? | 代表任意一个字符,有且只有一个字符 |
* | 代表任意数个字符(0~∞) |
[] | 代表可以匹配字符组中的任意一个字符([abc]、[a~z]) |
4.du命令
du-统计指定目录或文件所占用磁盘空间的大小
du "选项" "文件或目录"
选项 | 解释 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占用空间总的大小,而不是统计每个子目录、文件的大小 |
--max-depth=n | 统计所有小于等于第n层的目录的总大小 |
统计出/var/log目录中子目录的大小:
du -h --max-depth=1/var/log
5.mkdir指令
mkdir-创建新目录
mkdir "选项" 目录位置及名称
示例 | 解释 |
---|---|
mkdir public_html | 在当前目录下创建名为 public_html 的子目录 |
mkdir -p /aa/bb/cc | 创建目录 /aa,在 /aa 目录下创建子目录bb,在 /aa/bb目录下创建子目录cc |
6.ln指令
ln-为文件或目录建立链接文件
6.1 链接文件类型
软链接---类似于windows下的快捷方式
ln -s "源文件或目录" "链接文件或目标位置"
示例ln -s bin/bzip2 bin/wx/
硬链接
ln "源文件或目录" "链接文件或目标位置"
示例ln bin/bzip2 bin/wx/
6.2 软连接与硬链接的区别
由图可知,软链接是指向并依赖于源文件的(并且指向的是源文件名而非inode号),一旦源文件删除,软链接将不可使用;硬链接是独立存在的,源文件删除后硬链接可正常使用。(ps:源文件本质上也属于硬链接)
符号链接 | 相对源文件大小 | inode号 | 文件属性 | 删除源文件后 | 允许创建的位置 | 占用磁盘空间 |
软链接 | 小 | 不一致 | 指向源文件 | 不能查看 | 相对自由 | 相对较小 |
硬链接 | 大 | 一致 | 独立文件 | 正常查看 | 相对受限 | 与源文件一致 |
7.cp命令
cp-复制文件或目录
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录:
cp "选项" "源文件或目录" "目标文件或目录"
常用选项 | 解释 |
-f | 强制复制,即使目标文件已存在也会覆盖,而且不给出提示 |
-i | 在复制前提示确认,如果目标文件已存在,则会询问是否覆盖 |
-p | 保留源文件的权限、所有者和时间戳信息 |
-r | 复制目录时必须使用此选项,表示递归复制其所有文件及子目录 |
8.touch命令
touch-创建新的空文件
创建a.txt文件:
touch a.txt
9.rm命令
rm-用于删除一个文件或者目录:
rm "选项" "文件或目录"
常用选项 | 解释 |
-f | 删除文件或目录时不进行提醒,而直接强制删除。 |
-i | 删除文件或目录时提醒用户确认。 |
-r | 删除目录时必须使用此选项,表示递归删除整个目录树(谨慎使用) |
例:rm -rf /etc/yum.respo.d/*
强制删除etc/yum.respo.d/目录下的所有文件和目录
10.mv命令
mv-将文件或目录移入其它位置或重命名文件
将文件 aaa.txt 改名为 bbb.txt
mv aaa.txt bbb.txt
将文件/opt/aaa/目录中的123.txt放入/opt/bbb/目录
mv /opt/aaa/123.txt /opt/bbb/
11.which命令
which-查找命令文件存放目录
搜索范围由环境变量PATH决定(echo $PAH)
which "命令\程序名"
ps:默认找到第一个目标和将不再查找
which -a "命令\程序名"
ps在所有路径中查找
例:
which ls
which history
ps:使用which命令查找内部命令时,将找不到对应的程序
12.find命令
find-查找文件或目录
采用递归方式,根据目标的名称、大小、类型等不同属性进行精细查找
find "查找范围" "查找条件表达式"
⬇ ⬇
查找文件或子目录的目录位置 查找条件类型
查找类型 | 关键字 | 解释 |
名称 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
大小 | -size | 根据目标文件的大小进行查找,一般使用"+"、"-"来设置超超过或小于指定的大小 |
属主 | -user | 根据文件是否属于目标用户进行查找 |
类型 | -type | 根据文件的类型进行查找文件类型--(f)普通文件\(d)目录文件\(b)块设备文件\(c)字符设备文件等 |
inode号 | -inum | 根据文件inode号进行查找 |
权限 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将文件以分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 |
-type的类型 | 解释 |
-type f | 普通文件 |
-type d | 目录文件 |
-type l | 符号链接文件 |
-type s | 套接字文件 |
-type b | 块设备文件 |
-type c | 字符设备文件 |
-type p | 管道文件 |
例:
find /etc/ -type f -size +12k -name *.ttb
查找/etc/目录下大小超过12kB,名称中含有.ttb的普通类型文件
13.wc命令
wc-用于计算字数
利用wc指令我们可以计算文件的Byte数、字数、或是列数。
wc "选项" "文件"
常用选项 | 解释 |
-c | 显示Bytes数 |
-l | 显示行数 |
-w | 显示字数 |
例:
wc -l a.txt
显示a.txt文件的行数
14.补充: "|" 管道符
| =管道符
可以将多个命令连接起来;将"|"左侧命令的执行结果调用为"|"右侧命令的参数
例:
find /etc/ -name *.ttb | wc -l
统计 查找到的/etc/目录下名称中含有.ttb的普通类型文件 的行数