Linux是一种开源操作系统,它提供了许多功能强大而灵活的工具和命令,以及一个稳定可靠的运行环境。与其他常见的操作系统不同,Linux可以通过命令行终端来执行操作,这让初学者可能会有一些陌生和不熟悉的感觉。然而,一旦掌握了这些基本操作,您将能够更有效地管理文件和目录、配置系统设置、执行任务等。在本博客中,我们将逐步介绍一些最常用的Linux基本操作
目录
-a 列举每一个文件的大小-s 只显示总大小-d 指定显示目录的层级 -d 2 只显示到第二层目录
1Linux基本命令
1.1Shell
总体而言,Shell作为Linux系统的一个重要组成部分,为用户提供了一个与底层内核交互的接口。无论是通过命令行操作,还是编写脚本自动化任务,Shell都在用户与系统之间架起了一座桥梁,提供了灵活且强大的操作控制能力。
1.2内部命令和外部命令的概念
- Shell的作用可以总结为以下几个方面
-
命令解释器:Shell可以解释用户输入的命令,并将其转化为底层系统调用或其他应用程序的调用。它起到了一个解析器的作用,将用户的指令转化为计算机可以理解和执行的形式。
-
用户交互:Shell提供了一种交互式的方式,用户可以通过命令行与系统进行交互。用户可以输入命令,获得相应的输出结果,也可以接收系统的提示和信息。
-
脚本编程:Shell脚本是一种简单而强大的编程语言,可以编写一系列的命令和逻辑,用于自动化执行任务和操作。通过编写脚本,用户可以批处理处理大量的文件、配置系统设置、执行定时任务等。
-
系统管理:作为一种系统管理工具,Shell允许用户管理文件、目录和权限,控制和监视进程,配置网络和服务等。用户可以通过使用特定的命令和工具来操作和管理系统资源。
-
扩展和定制:Shell提供了丰富的工具和功能,用户可以根据自己的需求进行扩展和定制。例如,可以编写自定义的Shell函数和别名,创建shell脚本库,以及配置和调整shell的特性和行为。
在Shell中,内部命令(Built-in Commands)和外部命令(External Commands)是用于执行不同操作的两种类型的命令。
内部命令是由Shell程序本身提供的命令。这些命令直接内置在Shell的可执行文件中,作为Shell的一部分而存在,因此无需创建新的进程进行执行。内部命令执行速度较快,因为它们与Shell运行在同一个进程中,并且直接通过Shell的函数或指令进行处理。一些常见的内部命令包括cd(切换目录),echo(输出文本),alias(创建命令别名),export(设置环境变量)等。通过使用Shell自带的内部命令,可以执行一些基本的系统操作和Shell管理任务。
外部命令是由独立的可执行文件或程序提供的命令。这些命令通常位于系统的指定目录中(例如/bin、/usr/bin等),在执行时需要通过创建新的进程并加载相应的可执行文件来运行。外部命令执行速度可能较慢,因为需要频繁进行进程创建和文件加载。一些例子包括ls(列出文件和目录),grep(查找匹配的文本),rm(删除文件)等。外部命令提供了非常丰富的功能,可以满足更复杂的操作需求。
通过使用明确的命令名称,可以确定给定命令是内部命令还是外部命令。在命令行中,可以使用type命令或which命令来检查命令的类型。例如,type cd 将显示cd is a shell builtin,表示cd是内部命令。type ls将显示ls is /bin/ls,表示ls是外部命令。
1.3命令的执行过程
在Linux中,当你执行一个命令时,系统会按照以下的执行过程来解析和执行该命令:
-
命令解析:Shell(如Bash)会首先解析你输入的命令。它会分析命令中的关键字、参数和操作符,确定要执行的命令及其相关的参数。
-
命令搜索:一旦解析了命令,接下来系统会开始搜索要执行的命令。它会按照预定义的顺序,在一系列特定的目录(比如
/bin
、/usr/bin
等)中查找命令的可执行文件。这个搜索路径通常包括系统环境变量PATH中定义的目录。 -
命令执行:一旦找到了命令的可执行文件,系统会创建一个新的进程,并加载该可执行文件到该进程的内存中。然后,将命令行中的参数传递给该进程,并开始执行该命令。这个新的进程在独立的执行环境中运行,并根据命令的功能进行相应的操作。
-
查找命令的快捷方式(哈希表):为了提高效率,Shell会将最近执行过的命令和可执行文件的路径保存在一个哈希表(Hash Table)中。这个哈希表可以加速之后对相同命令的查找。当你再次执行之前执行过的命令时,Shell会直接从哈希表中获取该命令的路径,而无需重新进行完整的搜索。
总结来说,Linux命令的执行过程涉及命令解析、命令搜索、命令执行和哈希表查询(如果适用)。这个过程让系统能够找到并执行你输入的命令,从而实现所需的功能和操作。
1.4基本命令的介绍
1.cd 目标位置 change directory
命令 | 效果 |
---|---|
cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头(自己) | 表示以当前的工作目录作为起点(已点开头的是) |
两个点号“..”开头(上一级) | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
~ky18 (有个用户叫ky18 家目录为起点) | 表示以指定用户的宿主目录作为起点 |
2.pwd 显示当前目录
3.ls 列处此目录文件
-a 显示隐藏文件
-l 长格式显示, 显示详细信息
-d 只显示当前目录信息,不显示目录下的文件
-h 人性化显示
-R 递归
-t 按时间排序
-r 倒序
-S 按大小
-i 显示inode号
4.du 统计文件占磁盘大小
du与ll都能看文件大小,ll是看文件实际大小,而du是看文件占用磁盘多少,以4kB为一个量子,4kB是最小单位
-a 列举每一个文件的大小
-s 只显示总大小
-d 指定显示目录的层级 -d 2 只显示到第二层目录
cp 复制
-r 递归 复制文件夹一定要加 -r 选项
-p 保留属性
-f 强制复制不提示
-a 更强大的保留属性 比较万金油
-i 提示有同名
-v 显示过程
ln 链接
ln -s 软链接 源文件路径 目的文件
ln 硬链接 源文件路径 目的文件
软硬链接的区别 :
硬连接创建的链接与原始文件是共享数据块的完全相同文件副本,而软连接创建的链接是指向原始文件或目录的路径。硬连接只能针对文件,软连接可以指向文件或目录。硬连接与原始文件共享相同的inode号,软连接与原始文件具有不同的inode号。删除硬连接不会影响其他硬连接或原始文件,但删除软连接或原始文件将会断开软连接的有效性。
mv 改名和 移动
源文件 路径 不变 是改名
源文件 路径 改变 是移动
find (重点难点)
find 查找范围 查找选项 查找条件 处理动作
find 查找范围 查找选项 查找条件 处理动作
查找选项
-name 名字
-type 文件类型
-size 文件大小
-mtime 文件时间
-maxdepth 2 最大层级
-mindepth 2 最小层级
处理动作
-delete 删除
-ls 显示详细信息
-exec 连接符
-ok 连接符
命令格式
find / -name "*.txt" -exec cp或mv或rm {} /mnt \;
-exec是连接符
-name是查找选项
/查找范围,这里是根目录
"*.txt"这里是指 尾巴是.txt的文件
cp mv rm 等是指处理命令
/mnt 处理到的目的目录
\;是终止符
{}指代被找出的文件
mkdir 建立目录文件夹
-p 递归建立
-v 显示过程
touch 创建空文件
如果文件名不存在 建立新的空文件
如果名存在 刷新文件时间
rm -rf 递归删除
-r 递归
-f 强制
注意:删除软链接时不要加/否则会删除软连接源文件!!!!!
1.5通配符
通配符主要是用于寻找文件名
符号 | 效果 |
---|---|
? | 匹配一个字符 f?.txt |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a..z} | a b c ...z |
{A..Z} | A B C .....Z |
[123]([此处括号里值代表一个字符]) | 取其中之一有就显示没有也无所谓 |
[a-z]单个小写字母 | 范围需要注意 |
[0-9]单个数字 | 匹配数字范围(0123456789) |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhou] | 匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |