一、软连接和硬链接的区别
软链接
概念:符号链接又叫软链接,和原文件不是一个文件,例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。软链接有自己的inode,是Linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。符号链接可以跨越文件系统,也可以为目录建立。
- 可以应用于目录
- 可以跨文件系统
- 不会增加被链接文件的链接次数
- 大小为指定的绝对路径所包含的字符总数
- 有自己的inode号
- 权限无关紧要
文字描述:
先建立原文件 file3 ,使用 echo 命令将12345输入到原文件中,使用命令ln -s给原文件file3 创建一个软链接 file_svmbolic,然后访问 file_svmbolic 发现和原文件内容一致;使用 stat 命令查看原文件 file3 和软链接 file_svmbolic 的状态时会发现两个的 inode 号不同;随后删除原文件file3 ,再次访问软链接时发现无法访问 file3。
代码展示:
画图展示 :
硬链接
概念:只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬件不会被破坏,因为它所引用的是文件的物理数据而不是文件在结构中的位置。
文字描述:
先使用 touch 命令建立原文件 file4 以及 ln 命令建立硬链接 file_hard ,建立好后使用 stat 命令查看原文件的状态,此时 link 的数量为2,则说明硬链接建立成功;随后使用 echo 命令将67890输入到原文件中,使用 cat 命令查看当前文件的内容为67890;强制删除原文件后,继续访问硬链接 file_hard,此时的内容与原文件的内容一致,说明硬链接可以访问原文件并且删除一个硬链接文件并不影响其他有相同 inode 号的文件。
代码展示:
画图展示:
二、一级目录的解释
选项 | 英文及翻译 | 描述 |
/ | Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录 | |
/boot | boot引导 | 存放系统启动时所需的文件,这些文件若损坏常会导致系统无法启动,一般不要改动 |
/root | root根 | 超级用户的个人目录,普通用户没有权限访问 |
/home | home家 | 存放一般用户的个人目录 |
/bin | binary二进制 | 存放普通用户可执行的程序或命令 |
/sbin | system binary 系统管理员专用二进制 | 和/bin类似,这些文件往往用来进行系统管理,只有root可使用 |
/lib | library库 | 存放系统的各种库文件 |
/lib64 | library库 | 存放系统本身需要用到64位程序的共享函数库 |
/usr | Unix Software Resource操作系统软件资源 | 一般用户程序安装所在的目录,用于安装各种应用程序 |
/opt | optional可选择 | 该目录通常提供给较大型的第三方应用程序使用,例如Sun Staroffice、Corel WordPerfect,这可避免将文件分散至整个文件系统 |
/etc | etcetera等等 | 存放了系统管理时要用到的各种配置文件和子目录 |
/var | variable可变的 | 通常各种系统日志文件放在这里 |
/run | run运行 | 保存自系统启动以来描述系统信息的文件 |
/dev | device设备 | 包含所有的设备文件 |
/mnt和/media | mount/media嵌入 | 可以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点 |
/tmp | temporary临时的 | 用来存放不同程序执行时产生的临时文件 |
/srv | server服务 | 服务启动之后需要访问的数据目录 |
/sys | system系统 | 本目录是将内核的一些信息映射文件,以供应用程序所用 |
/proc | process进程 | 可以在这个目录下获取系统信息,这些信息是在内存中由系统自己产生的 |
三、重定向
标准输入(stdin):代码为0
标准输出(stdout):代码为1
标准错误输出(stderr):代码为2
使用形式:
- > 以覆盖的形式写入到指定文件中
将当前的时间覆盖到 file1.txt 这个文件中
- >> 将命令执行后的正确输出信息追加到或者重定向到文件当中
在刚才覆盖的命令的基础上,将更新后的时间追加到上一次时间的末尾
- 2> 使用错误流将错误信息重定向到文件中
将不存在的aaaaaa错误信息重定向到 file1.txt文件中
- 2>> 将错误的输出信息追加到末尾,存在会追加
将不存在的bbbbbb错误信息追加到上一个错误信息aaaaaa末尾
- &>或>& 标准输出和标准错误输出都重定向到一个文件下
将正确和错误的信息都输到相同的位置
注:&:这个比较特殊的写法是为两边都是重定向文件描述符定制的,例如“2>&1” 的含义就是把标准错误输出(2)整合到标准输出(1)末尾,而标准输出(1)因为没有重定向所以默认输出到控制台上,所以当使用该指令你可以看到的是错误以及标准输出都输出到指定文件
- 将1重定向到文件,将2重定向到1
- 将2重定向到文件,将1重定向到2
- 将文件从定向到0
- cat 从标准输入读取内容,然后输出到文件中
四、使用文件描述符重定向
cmd >&n:把输出送到文件描述符 n
cmd m>&n:把输出到文件符 m 的信息重定向到文件描述符 n
cmd >&-:关闭标准输出
cmd <&n:输入来自文件描述符 n
cmd m<&n:m 来自文件描述符 n
cmd <&-:关闭标准输入
cmd <&n-:移动输入文件描述符 n 而非复制它
cmd >&n-:移动输出文件描述符 n 而非复制它
2>&1:将标准错误输出重定向到标准输出
五、创建文件、删除文件、创建目录、删除目录
- 创建文件:touch文件名
- 删除文件:rm 文件名
使用 ls -l 命令查看已经创建好的问价,从此图可以看出,已经使用 rm 命令将 file 文件删除掉
- 创建目录:mkdir text_dir
使用 cd 命令切换目录,在使用 pwd 命令查看当前目录,可以看见用 mkdir 所创建的目录
- 创建嵌套目录:可以使用选项 -p创建嵌套目录结构。如果父目录不存在,它将自行创建;若要创建目录结构或要确保目录路径存在时:mkdir -p dir1/dir2/dir3/dir4
- 删除文件及目录:rm
rm命令的用法: rm -操作符 文件路径
-d:直接把欲删除的目录的硬链接数据删除成0,删除该目录
-f:强制删除文件或目录(没有提示)
-i:删除已有文件或目录之前先询问用户(默认设置)
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理(删除目录时必须要加)
-preserve-root:不对根目录进行递归操作
-v:显示指令的详细执行过程
六、cp命令
- 复制文件粘贴重命名
- 复制文件到目录重命名
- 复制目录到目录
- 复制文件到目录且不改变文件属性
七、mv命令的使用
mv的过程中是先cp,cp完成之后再将原来的文件进行删除。
命令参数:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t :–target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。