目录
一. Linux命令基础
1.1 用户态、内核态
用户态:
用户态也被称为用户模式,是指应用程序的运行状态。在这种模式下,应用程序拥有有限的系统资源访问权限,只能在操作系统划定的特定空间内运行。用户态下运行的程序不能直接访问硬件设备或执行特权指令,所有对硬件的访问都必须通过操作系统进行。
【用户态是指可以下发命令,且可以返回结果的操作环境】
内核态:
内核态也被称为内核模式或特权模式,是操作系统内核的运行状态。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系统的所有资源,包括CPU、内存、I/O等。
【内核态是接收指令、执行、传递返回结果并且用户无法直接干预】
1.2 Shell脚本
什么是shell脚本呢?
Shell是一个应用程序,连接了用户和Linux内核,让用户能够更加高效、安全、低成本的使用Linux内核。
- Linux系统中运行的一种特殊程序
- 在用户和内核之间充当“翻译官”
- 用户登录Linux系统时,自动加载一个Shell程序
- Bash是Linux系统中默认使用的Shell程序
图形描述:
1.3 Linux命令的分类
Linux命令分为内部命令和外部命令
内部命令是Shell程序的一部分,通常在Linux系统运行时Shell就被加载在内存中,因此执行较快(例如cd,echo等命令)
外部命令是Linux系统中的实用程序部分,不会与Linux系统运行同时被加载到内存中,在需要的事才会被调用进内存中
内部命令 | 外部命令 |
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 /bin,/user/bin,/user/local/bin等 |
1.4 Linux命令行的格式
通用的命令行使用格式:
命令字 [选项] [参数] ——————英文字符区分大小写
● 命令字
- 是整条命令中最关键的一部分
- 是唯一确定一条命令
● 选项
- 短格式选项:使用“-”符号引导 ————注释:多个单字符选项可以组合在一起使用
- 长格式选项:使用“--”符号引导
● 参数
- 命令处理的对象
二. 命令详解
2.1 查看当前的工作目录-pwd
● 显示用户当前所在的工作目录位置
pwd
● 示例
[root@localhost ~]# pwd
/root
(显示的是当前工作目录
2.2 绝对路径和相对路径
绝对路径:从根(/)目录开始,是一个完整的路径
示例:
/opt/xy03/test01/test02/
/ :起始表示根目录(起始位置)
在根目录之后的 “/” 只表示一个子目录的开始和结束
opt/
xy03/
相对路径:相对于项目目录的路径
家目录=宿主目录
家目录有两种:
- 管理员(root)
- 普通户(home)
2.2.1 相对路径的表现形式
表现形式 | 说明 | 示例 |
直接使用目录名或文件名 | 表示当前工作目录中的子目录、文件的位置 | grub.conf |
以一个点号“.”开头 | 表示以当前的工作目录为起点 | ./grub.cong |
以两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 | ../vmlinuz |
以“~用户名”形式开头 | 表示以指定用户的宿主目录作为起点 | ~teacher |
以“~”形式开头 | 表示以当前用户的宿主目录作为起点 | ~ |
2.3 列表显示目录内容(ls)
ls命令基本格式:
ls 【选项】 【文件或目录】
ls的常用选项:
-l 显示文件和目录的列表,包括权限、大小、最后更新时间等详细信息。ll命令与ls -l功能相同
-a 查看隐藏文件
-A 查看隐藏文件,但有两个特殊隐藏目录不会显示,即表示当前目录的 “.” 和表示父目录的“..”
-d 显示目录本身的属性,不显示目录的内容
-h 以更人性化(Human)的方式显示目录或文件的大小,默认的大小单位为字节(B)
-R 以递归的方式显示指定目录及其子目录的所有内容
--color 在字符模式中以颜色区分不同的文件。默认已开启
通常情况下,深蓝色表示目录,白色表示一般文件,绿色表示可执行文件,黄色表示设备文件,红色表示压缩文件。
-i 显示文件和目录的inode号
-t 以时间排序,最新的文件会排在上面
-r 表示反向排序、倒序输出
结合通配符
“?”:代表任意一个字符,有且只有一个字符
“ * ”:代表任意数个字符,可以使0个或者1个或者多个
“[]”:表示可以匹配字符组中的任意一个字符
2.3 设置别名-alias
● 通过别名机制简化常用的,比较长的命令
命令基本格式:
alias 要设置的名称 = ' 被设置的命令 ' ————“=”两边不能有空格
比如命令:ls -alh 比较长,我们可以使用alias来设置别名为 myls
alias myls = 'ls -alh'
● 取消别名
unalias 命令别名
2.4 统计目录及文件空间占用情况-du
● 统计指定目录(或文件)所占磁盘空间的大小
命令基本格式:
du 【选项】 【文件或目录】
常用选项
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h:以更人性化的方式显示出统计结果
-s:只统计所占空间总大小,而不是统计每个子目录、文件的大小
示例:
统计出/var/log目录中子目录的大小
du -h --max-depth=1 /var/log/
2.5 创建新目录-mkdir
● 创建新的空目录
基本格式:
mkdir 【选项】 目录位置及名称
常用选项:
-p:一次性创建嵌套的多层目录
示例:
● 在当前目录下创建名为 public_html 的子目录
mkdir public_html
● 创建目录 /aa,在 /aa目录下创建子目录bb,在/aa/bb目录下创建子目录cc
mkdir -p /aa/bb/cc
2.6 创建空文件-touch命令
● 创建多个文件:
touch{1...10}.txt 创建10个txt文件,名称为1-10
● 创建有内容的文件:
创建命令:echo“this is test” > new.txt
查看命令:cat new.txt
2.7 创建链接文件-ln
● 为文件或目录建立链接文件,类似与Windows系统的快捷方式
● 链接文件类型
- 软链接:相当于快捷方式(又称为符号链接)
- 硬链接:相当于文件的别名
文件节点(文件在磁盘中存储的标识序列)唯一的
查看文件节点命令:ls -i
ln基本格式:
软链接:
ln -s 源文件或目录 链接文件或目标位置
示例:
ln -s bin/bzip2 bin/wx/
硬链接:
ln 源文件或目录 链接文件或目标位置
示例:
ln bin/bzip2 bin/wx/
常用选项:
-s 创建软链接
示例:
创建/bin/bzip2的软链接到/bin/wx/目录下
ln -s /bin/bzip2 /bin/wx/
软链接与硬链接的区别
● 源文件存储在硬盘文件数据中,而创建的软链接指向并依赖于源文件,源文件被删除,则软链接不可用。硬链接是独立存在的,则源文件被删除后硬链接依然可以正常使用。
● 注释!!!!
源文件本质上也属于硬链接
符号链接 | 相对源文件大小 | inode号 | 文件属性 | 删除源文件后 | 允许创建的位置 | 占用磁盘空间 |
软链接 | 小 | 不一致 | 指向源文件 | 不能查看 | 相对自由 | 相对较小 |
硬链接 | 大 | 一致 | 独立文件 | 正常查看 | 相对受限 | 与源文件一致 |
2.8 复制文件或目录-cp
● 将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
命令基本格式:
cp 【选项】 源文件或目录 目标文件或目录
常用选项:
-f:强制复制,即使目标文件已存在也会覆盖,并且不给出提示
-i:在复制前提示确认,如果目标文件已存在,则会询问是否覆盖
-p:保留源文件的权限、所有者的时间戳信息
-r:复制目录时必须使用次选项,表示递归复制其所有文件及子目录
2.9 删除文件或目录-rm
命令基本格式:
rm 【选项】 要删除的文件或目录
常用选项:
-f:删除文件或目录时不进行提醒,并且直接强制删除
-i:删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(谨慎使用!!!!)
示例:
强制删除etc/yum.respo.d/目录下的所有文件和目录
rm -rf /etc/yum.respo.d/*
2.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/
2.11 查找命令或文件存放目录-which
● 搜索范围由环境变量PATH决定(ehco $PAH)
命令基本格式:
which 命令|程序名 //默认当找到第一个目标后不再继续查找
或者
which -a 命令|程序名 //在所有搜索路径中查找
示例:
which ls 查找ls命令所在位置
which history
使用which查找内部命令时,将找不到对应的程序
2.12 查找文件或目录-find
● 采用递归方式,根据目标的名称、类型、大小、等不同属性进行精细查找
命令基本格式:
find 【查找范围】 【查找条件表达式】
条件表达式之间的逻辑运算符
-a:表示 and
-o:表示 or
查找类型 | 关键字 | 解释 |
名称 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
大小 | -size | 根据目标文件的大小进行查找,一般使用“+”、“-”来设置大于或小于指定的大小 |
属主 | -user | 根据文件是否属于目标用户进行查找 |
类型 | -type | 根据文件的类型进行查找文件类型--(f)普通文件\(d)目录文件\(b)块设备文件\(c)字符设备文件等 |
inode号 | -inum | 根据文件inode号进行查找 |
权限 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepthlevel | 将文件以分级的形式查找 |
最小搜索目录深度 | -mindepthlevel | 将文件以分级的形式查找 |
● -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的普通类型文件
2.13 wc命令
wc- 用于计算字数
利用wc指令我们可以计算文件的Byte数、字数、列数
命令基本格式:
wc 【选项】 【文件】
常用选项 | 解释 |
-c | 显示Bytes |
-l | 显示行数 |
-w | 显示字数 |
示例:
wc -l a.txt
显示a.txt文件的行数
2.14 “ | ”管道符
可以将多个命令连接起来,将“|”左侧命令的执行结果调用为“|”右侧命令的参数
示例:
find /etc/ -name *.ttb | wc -l
统计查到的/etc/目录下名称中含有.ttb的普通类型文件的行数
* 补充:
cd命令——将用户的工作目录更改到其他位置
格式 | 说明 |
---|---|
cd "目标位置" | 切换到目标位置 |
cd ~ | 切换到用户的宿主目录 |
cd | 切换到用户的宿主目录 |
cd- | 切换到上一次执行cd命令的所在目录 |