创建链接文件-In
为文件或目录建立链接文件,类似于Windows系统的快捷方式
链接文件类型
-
软链接(Symbolic Link):
软链接,也称为符号链接,是一种特殊的文件类型,它并不直接指向文件或目录的i节点,而是指向一个路径名。这意味着,软链接可以跨文件系统链接到另一个文件或目录。当你访问一个软链接时,操作系统会自动重定向到目标文件或目录。软链接的特点包括:
- 可以跨文件系统链接。
- 链接的是路径,而不是文件本身。
- 如果目标文件被移动或删除,软链接将失效。
- 适用于文件或目录。
-
硬链接(Hard Link):
硬链接是指两个或多个文件共享相同的i节点和存储空间。这意味着,硬链接指向的是文件的物理数据,而不是路径名。因此,硬链接不能跨文件系统创建,也不能链接到目录(在大多数文件系统中)。硬链接的特点包括:
- 链接的是文件的物理数据,而不是路径。
- 不能跨文件系统链接。
- 链接数不会增加文件的存储空间占用。
- 适用于文件,不适用于目录(除非是特殊文件系统支持)。
- 如果目标文件被删除,硬链接仍然有效,因为它们指向相同的i节点。
创建软链接:ln [选项] <源文件> <目标文件>
创建硬链接:ln [选项] <源文件> <目标文件>
示例
In -s /bin/bzip2 /bin/wx/
数据对应在硬件里边的唯一标识是inode号,不是文件名。
inode号存储是有上限的
复制文件或目录-cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp {选项} 源文件或目录 目标文件或目录
cp的常用选项 | - |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,而直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录。 |
-a | 块完整保留所有的信息包括连接文件,可以直接复制目录 |
注意 | 复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在。 |
补充:
rsync-增量复制
rsync可以跨主机复制
删除文件或目录-rm
rm的常用选项 | - |
---|---|
-f | 删除文件或目录时不进行提醒,而直接强制删除。 |
-i | 删除文件或目录时提醒用户确认。(y表示删除,n表示不删除) |
-r | 删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用) |
注意 | 不要直接删除系统中已有的目录或配置文件,以避免出现意外故障。 |
查找文件-find
命令的特点:精确查找 实时查找 遍历(慢) 支持查找条件较多
find [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;默认为当前目录
查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“* ”及“? ”通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找,一般使用“+ ”、“- ”号设置超过或小于指定的大小作为查找条件,常用的容量单位包括 kB(注意 k 是小写)、MB、GB(M和G要大写!) |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将文件以分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 |
查找opt目录下,所有大于1G的文件,然后把他们移动到etc目录下:
find /opt/ -size +1G -type f -exec mv{} /etc ;
或与且的优先级
o or, 或者,满足一个条件即可。
a and,并且,同时满足两个条件。
其他指令
mv -用于移动或重命名文件和目录
基本用法
mv [选项] 源文件或目录 目标文件或目录
常用选项
-f
:强制移动,如果目标文件已存在,则覆盖它。-i
:交互式模式,如果目标文件已存在,询问用户是否覆盖。-u
:仅当源文件比目标文件新时才进行移动。-v
:详细模式,显示正在进行的操作。
示例
- 将文件从当前目录移动到另一个目录:
mv source.txt /path/to/destination/
- 重命名文件:
mv old_name.txt new_name.txt
- 将目录及其内容移动到另一个目录:
mv source_directory /path/to/destination/
- 交互式模式移动文件,如果目标文件已存在,则询问用户是否覆盖:
mv -i source.txt /path/to/destination/
df(disk free)-用于显示磁盘空间的使用情况
基本用法
df [选项] [文件或目录]
如果不指定文件或目录,df
会默认显示当前工作目录的文件系统信息。
常用选项
-a
:显示所有文件系统的磁盘空间使用情况。-h
:以人类可读的格式显示磁盘空间使用情况(如 K、M、G 等)。-i
:显示文件系统的 inode 使用情况。-k
:以 1K 为单位显示磁盘空间使用情况。-m
:以 1M 为单位显示磁盘空间使用情况。-T
:显示文件系统的类型。-t
:仅显示指定类型的文件系统。-x
:排除指定类型的文件系统。
示例
- 显示当前工作目录的文件系统磁盘空间使用情况:
输出可能包含文件系统、大小、已用、可用、已用百分比和挂载点等信息。df
- 以人类可读的格式显示所有文件系统的磁盘空间使用情况:
df -ah
- 显示指定目录(如
/home/user
)的文件系统磁盘空间使用情况:df /home/user
总之,df
指令是一个实用的命令行工具,可以帮助你查看磁盘空间的使用情况,以便了解文件系统的状态和管理磁盘空间。
which-用于查找并显示特定命令的可执行文件路径
当你在命令行中输入一个命令时,shell 会根据环境变量 PATH
中列出的目录顺序搜索可执行文件。which
命令可以帮助你找到这个可执行文件的确切位置。
基本用法
which [选项] 命令名
例如,要找出 ls
命令的可执行文件路径,可以运行:
which ls
常用选项
-a
:显示所有匹配的可执行文件路径,而不仅仅是第一个找到的。-n
:显示匹配的可执行文件的完整路径的长度(以字符为单位)。-p
:与-n
类似,但显示的是路径名的长度,不包括任何前缀(如/usr/bin/
)。-q
:以空字符串形式输出匹配的可执行文件路径。
示例
- 查找
ls
命令的可执行文件路径:
输出可能类似于:which ls
/bin/ls
。 - 查找所有匹配的
python
命令路径:which -a python
输出可能包含多个路径,如:/usr/bin/python
和 /usr/local/bin/python
。
总之,which
指令是一个实用的命令行工具,可以帮助你在系统中找到特定命令的可执行文件路径。这对于调试环境变量设置、查找命令来源或了解系统中的可执行文件位置非常有用。
wc(word count,单词计数)-用于统计文件或文本中字符数、单词数和行数的命令行工具
以下是 wc
命令的基本用法:
wc [选项] <文件>
wc
命令的一些常用选项包括:
-c
:统计字符数(字节数)。-l
:统计行数。-w
:统计单词数。-m
:统计字符数(与-c
类似,但在多字节编码环境中可能有所不同)。-L
:显示最长行的长度。
示例:
-
统计文件中的字符数、单词数和行数:
wc file.txt
输出可能类似于:
100 file.txt
,其中 100 是字符数。 -
统计文件中的行数:
wc -l file.txt
输出可能类似于:
10 file.txt
,其中 10 是行数。 -
统计文件中的单词数:
wc -w file.txt
输出可能类似于:
20 file.txt
,其中 20 是单词数。 -
同时统计多个文件的字符数、单词数和行数:
wc file1.txt file2.txt
输出可能类似于:
100 file1.txt 150 file2.txt 250 total
补充:
具体分区给文件、目录共享出空间来装东西的技术叫挂载
挂载并不局限于文件和磁盘
管道:把前面指令的处理结果作为参数交给后边处理。影响的是两个不同进程之间的桥梁,所以管道符用来连接
|
和exec
的区别:
目的:管道符用于连接多个命令,使一个命令的输出成为另一个命令的输入;exec 用于在当前进程中替换一个新的程序映像。
上下文:管道符在 shell 中使用,用于组合多个命令;exec 在编程中使用(如 C 语言),用于在当前进程上下文中启动新程序。
资源管理:管道符创建的是独立的进程,它们有各自的资源和地址空间;exec 替换当前进程的映像,新程序将接管进程资源。
并发性:管道符通常用于实现并行处理,因为每个命令都在单独的进程中运行;exec 用于在当前进程中执行新程序,不会创建新进程。
完整的任务分为三个步骤来的,标准输入,执行,标准输出。
“”表示以字符串的形式,以及一个整体
\在find里的结尾表示转义符,使得后边的;不具备特殊含义
标准输入(stdin):标准输入是程序接收输入数据的默认来源。在大多数情况下,标准输入与键盘输入关联。当你从键盘输入数据时,数据会通过标准输入流传递给程序。标准输入的文件描述符是 0。
执行:
标准输出(stdout):标准输出是程序发送输出数据的默认目标。在大多数情况下,标准输出与屏幕(终端)关联。当程序向标准输出写入数据时,数据会显示在屏幕上。标准输出的文件描述符是 1。
标准错误(Standard Error,简称 stderr):它是程序发送错误信息的独立通道。标准错误与标准输出分开,允许错误信息即使在标准输出被重定向时也能显示在屏幕上。标准错误的文件描述符是 2。
进程:进程是计算机中的一个程序实例,它表示正在运行的程序的当前状态
线程:线程是进程中的一个独立执行单元。一个进程可以包含多个线程,这些线程共享进程的资源(如内存、文件句柄等),但每个线程有自己的执行堆栈和局部变量。线程允许在同一进程中并行执行多个任务,从而提高程序的运行效率。
结束任务是杀死进程。
通常来说,一个程序只有一个主进程(master进程),可以有多个子进程和线程,进程之间的资源是不共享的。(ps:进程是怎么创建出来的:主要是以fork方式派生出来的。中间主要消耗的资源是CPU资源。)
进程之间可以通讯,可以通过管道符的方式,即将前面的进程的标准输出作为标准输入然后执行,最终进行标准输出打印在终端上
ctime (Change Time):这是文件内容最后一次被更改的时间。这包括文件的创建、编辑或重命名等操作。注意,某些操作系统可能将 ctime 用于其他目的,例如记录元数据更改的时间。
mtime (Modification Time):这是文件内容最后一次被修改的时间。这通常是指文件内容被写入的时间,但不包括文件的创建时间。在许多情况下,mtime 和 ctime 可能是相同的,尤其是当文件创建后只被修改过一次时。
atime (Access Time):这是文件最后一次被访问的时间。这包括读取文件、执行文件(如果是可执行的)或对其进行其他形式的数据访问操作。