Linux学习——浅入文件管理(二)
文件系统层次结构梳理
在Linux中,文件系统可以被看作是一颗颠倒的树,树根在顶部,下方为各级文件目录及子目录的分支。
根目录(/)整个文件系统的起点,所有其他目录均挂载在其下。例如,硬盘分区、USB设备等通过挂载到/mnt或media等子目录接入系统
其他重要目录如下
/boot开始启动过程所需的文件
/dev供系统用于访问硬件的特殊设备文件
/etc特定于系统的配置文件
/home供普通用户存储其个人数据和配置文件的主目录
/root管理超级用户root的主目录
/run主要用来存放系统运行时产生的数据
/tmp供临时文件使用的全局可写空间,10天内未访问,更改或者修改的文件将自动从该目录中删除。
/usr安装的软件,共享的库(包括文件)和只读程序数据。
/usr/bin用户命令
/usr/sbin系统管理命令
/usr/local本地自定义软件
文件目录相关操作
pwd显示当前目录的完整路径
cd用来更改shell的当前工作目录,若后面未跟参数,则切换至你的主目录
cd -可以进入到用户进入当前目录之前的上一个目录
cd .进入当前目录,省去了书写绝对路径的必要
cd..进入上一级目录,而不必知道上一级目录的确切名称
绝对路径为完整的路径名称,而相对路径为对当前目录下属目录的访问路径,相对路径不以/开头
如系统消息日志文件的绝对路径为/var/log/messages当我们在var目录中时我们要切换访问其下属目录即可直接输入cd log/messages即可。
ls命令用来显示文件的属性,常用的选项有- l(长列表模式),- a(包含隐藏文件在内的所有文件),- R(递归模式,包含所有子目录的内容)
touch可将文件的时间戳更新为当前的日期和时间,而不进行其他修改,此命令还可以创建空文件,touch命令加上不存在的文件名会导致创建该文件。
~可以作为一个参数与其他命令组合使用,以为了更好地与主目录进行交互。
命令行文件管理相关操作
创建目录操作:mkdir在你的当前目录下进行目录的创建
mkdir -p 父级目录名/子目录1/子目录2/子目录3
cp可用来复制文件,在当前目录或指定目录中创建新文件。它也可将多个文件复制到某一目录中,注意,如果目标文件已经存在,则会直接覆盖它。
cp -r可用来复制及其子目录
cp在复制多个文件时,最后一个参数必须为目录。默认情况下, cp 不复制目录,而会忽略它们。
如 $ cp thesis_chapter1 thesis_chapter2thesis projectx末尾的thesis和projectx为目录,thesis目录复制失败,但是thesis_chapter1 thesis_chapter2都复制成功进入了projectx目录下。
mv命令可将文件从一个位置移动到另一个位置,如果位置相同,则实际上是重命名。
删除文件和目录的相关操作
rm命令删除文件
rm -r递归删除
rm -rf强制递归删除
rmdir仅仅删除空目录
注意,rm没有取消删除的功能,也没有回收站,数据宝贵,请谨慎操作!
硬链接与软链接
有两种方法可以做到创建指向同一文件的多个名称,那就是硬链接和软连接
硬链接
新的硬链接与原始文件的一切属性和内容完全相同,并同步更新。
使用ln命令为现有文件创建新的硬链接
例 $ ln newfile.txt /tmp/newfile-hlink2.txt
这样就创建了一个对newfile-hlink2.txt的硬链接
只有两个文件都位于一个文件系统时,才可以使用硬链接
ls -l可以显示硬链接数量
ls -il filename可以查看文件的inode(索引节点编号),如果两个文件具有相同的inode,则表示它们二者硬链接彼此,同时,即使原始文件被删除,只要还存在一个硬链接,则该文件的内容依然可用,只有删除了最后一个硬链接,才表示该数据在存储中删除。
软链接
ln -s可以创建软链接,也称为符号链接,软链接不是常规文件,而是指向现有文件或者目录的特殊类型的文件。
其相比硬链接的有一定的优势:
1,可以链接位于不同文件系统上的两个文件
2,可以指向目录或者特殊文件,而不局限于常规文件
但是,当原始文件被删除后,软链接依然会指向该文件,指向缺失文件的软链接被称为“悬挂的软链接”。
二者的具体作用和关系可以见笔者的另一篇文章:你真的理解了硬链接和软链接吗?_symlink 是硬链接吗-CSDN博客
命令行扩展
常用扩展
波浪符扩展
~可以匹配当前用户的主目录
大括号符{}扩展
同时其可以嵌套使用,比如echo file{a{1,2},b}.txt
结果为filea1.txt filea2.txt fileb.txt
变量扩展
通过变量,可以从命令行或在shell 脚本内轻松访问和修改存储的数据
例 $ USERNAME=operator
$ echo $USERNAME
结果为
operator
命令替换
$(command)表示命令替换
例如 $ echo today is $(date +%A)
结果为
Today is Wednesday
‘command’也可以表示命令替换,但不推荐使用
防止参数被扩展
反斜杠(\) 是Bash shell 中的转义字符,可以防止紧随其后的字符被扩展
如果要保护较长的字符串,则使用单引号 (‘) 或双引号 (“) 来括起字符串, 它们的作用略有不同,单引号将阻止所有shell 扩展,双引号则阻止大部 分shell 扩展
双引号可以阻止通配和shell 扩展,但依然允许命令和变量替换
单引号则可以按字面解译所有的文本