内容提要
-
文件系统(了解)
-
目录操作(掌握)
-
文件操作(掌握)
文件系统
Linux本质上就是一个文件系统。Linux文件系统是操作系统组织、存取、保存数据的一种手段。整体采用层级式的倒状目录结构。
倒状树结构中的目录
/
:根目录(根路径),Linux中的绝对路径就是由这个开始。
/bin
:主要存放系统普通指令
/boot
:主要存放系统的引导程序
/dev
:存放硬件设备对应的文件(Linux应用开发阶段,访问其中的文件)
/etc
:存放系统和应用程序的配置文件(如:profile
)
/home
:家目录,存放当前系统下所有用户对应的目录。
/lib
:存放系统和应用程序的依赖库。
/proc
:存放系统运行时的运行信息。
/usr
:是软件的默认安装路径。
/var
:存放缓存、备份文件。
/cdrom
:光驱挂载点(通常用于挂载光盘)
/mnt
:用于系统文件系统的挂载目录,举例:/mnt/hgfs
可用于挂载共享目录,/mnt/udisk
可用于挂载U盘..
/sbin
:用于存放一些特权指令,通常只有系统管理员(root)才能执行。
路径的概念
-
绝对路径:以根路径(
/
)为参考点描述的路径,称之为绝对路径。举例:
// windows系统 D:\\YQ\\Code\\demo01.c // linux系统 /mnt/hgfs/linuxc/demo01.c
-
相对路径:以当前目录(
./
)为参考点描述的路径,称之为相对路径。举例:
cd /home -- 解释:绝对路径,切换到根路径下的home目录 cd ./st -- 解释:相对路径,切换到当前路径下的st目录(假设当前在/home目录下,则切换后为/home/st) cd st -- 解释:相对路径,等价于上面的写法,一般推荐这种写法,因为简单
Linux系统文件类型
说明:
d
:目录(文件夹)
-
:普通文件
l
:符号链接(类似于 Windows 中的快捷方式)
c
:字符设备文件,通常用于与字符设备(如串口、终端等)进行交互
b
:块设备文件(大容量磁盘等),用于与块设备(如硬盘、U 盘等)进行交互
s
:套接字文件,用于进程间通信
p
:管道文件,用于进程间通信
目录操作
指令
语法:
指令 [选项] [操作的文件或者目录]
注意:语法中加入[],就表示方括号括起来的内容可选。
pwd
说明:查看当前所在目录的绝对路径
执行者:所有用户
ls
说明:显示指定路径(默认是当前路径)下的文件或者目录。
执行者:所有用户
常用选项:
-
-a
:显示所有文件或目录(包含隐藏文件或目录,Linux中的隐藏目录或者文件一般以.
开头,如:.vimrc)
-
-
-l
:以长格式显示所有的文件或目录的详细信息(默认不含隐藏文件或目录),详细信息包括文件权限、硬链接数、所有者、所属组、文件大小(默认字节)、修改时间等。 -
-r
:将文件以相反次序显示(默认依照英文字母次序显示)【名称】 -
-t
:将文件以修改时间的先后次序显示【时间】
说明:多个参数可以共同出现,如:
ls -l -t -r -a 等价于
ls -ltra
说明:我们也可以指定具体的目录路径,如:
ls ./ 等价于
ls
ls /mnt/hgfs/linux
cd
说明:切换目录
执行者:所有用户
语法:
cd 目录路径
常用写法:
① cd ~
:切换倒当前登录用户的家目录,比如:若当前登录用户为st
,cd ~
就会切换到/home/st
下,等价于cd /home/st
。
② cd -
:返回上一次操作的工作目录(类似于windows中的返回上一步)
cd /home/st
cd /mnt/hgfs
cd -
结果:返回 /home/st/
③ cd /
:切换到根目录下
④ cd ./
:切换到当前目录下,一般此操作无实际意义。
⑤ cd ../
:切换到上一级目录,等价于cd ..
cd /home/st
cd /mnt/hgfs
cd ../
结果:返回 /mnt/
⑥ cd ../../
:切换到上两级目录,等价于cd ../..
,可以根据需要增加../
来切换到更上级的目录。
mkdir
说明:创建空目录(目录和文件夹是一个概念)
执行者:所有用户
语法:
mkdir 目录路径 -- 解释:创建一个目录
mkdir 目录路径列表 -- 解释:批量创建多个目录
举例:
备注:mkdir支持批量创建空目录。
选项:
-p
:可以创建多层目录(嵌套目录),若中间的目录不存在,会自动创建
语法:
mkdir -p 目录多层路径
举例:
rmdir
说明:删除空目录,仅限于删除空目录,支持批量删除。
语法:
rmdir 空目录路径
举例:
解释;*
是通配符,通配0到多个字符。test*
就是匹配以test开头的。*test
就是匹配以test结尾的。
touch
说明:创建新文件,如果文件已存在,则更新其访问和修改时间。
执行者:所有i用户
语法:
touch 文件路径 --解释:可以指定文件路径
举例:
rm
说明:
-
删除目录:需要借助选项
-r
递归删除,目录可以是空目录,也可以是非空目录 -
删除文件:无需借助选项
-r
,如果加了-r
,也没事。
说明:
① 查找:从外层逐步向内层查找
② 删除:从内层逐步向外层删除
举例:
说明:
文件删除,直接删除就可以了,目录删除或者目录 + 文件删除,需要使用选项 -r
进行递归删除。另外,使用rm -f
可以强制删除文件或目录,不进行确认提示,但使用时需谨慎,因为删除后数据无法恢复。
cp
说明:
-
复制文件或者目录(相当于拷贝 + 粘贴)
-
实现文件或者目录的重命名
执行者:所有用户
语法:
cp [选项] 被复制的目录或者文件路径 目的地地址
选项:
-r
:递归复制,复制目录中的所有内容,包括子目录和文件。
-i
:如果目的地路径下已经存在同名的目录或者文件,会交互提示(YES:完成替换,NO:取消拷贝)
举例:
mv
说明:
-
移动文件或者目录(相当于剪切+粘贴)
-
重命名文件或目录
执行者:所有用户
语法:
mv [选项] 被移动的目录或者文件路径 目的地地址
注意:
-
被移动文件名与目的地文件名不一致,就相当于重命名了
举例:
mv aa.txt ../b
解释:移动,将aa.txt移动到../b目录下
mv aa.txt ../b/bb.txt
解释:移动+重命名,将aa.txt移动到../b目录下并重命名为bb.txt(注意:不能将一个文件移入另一个文件)
mv aa.txt bb.txt
解释:重命名,将同一路径下的aa.txt重命名为bb.txt
mv aa.txt ../b/cc.txt
解释:移动 + 重命名(重命名的是目的地文件)
cp -r aa.txt ../b/cc.txt
解释:拷贝 + 重命名(重命名的是目的地文件)
备注:重命名是移动和拷贝在特殊情况下的产物。
文件操作
指令
cat
说明:查看文件内容,适合查看较小的文件
执行者:所有用户
语法:
cat [选项] 文件路径
选项:
-n:显示行号
举例:
cat /proc/cpuinfo
cat -n /proc/cpuinfo
more
说明:分页查看文件内容,当文件较大时使用
执行者:所有用户
语法:
more 文件路径
操作:
空格键
:向下翻一页
回车键
:向下翻一行
Q/q键
:退出查看
举例:
more /proc/cpuinfo
less
说明:分页查看文件内容,功能比more
更强大,支持向前和向后翻页等操作。
执行者:所有用户
语法:
less [选项] 文件路径
选项:
-M
:显示当前行的范围
操作:
空格键
:向下翻一页
B/b键
:向上翻一页
方向键↑↓
:向上向下翻一行
Q/q键
:退出
举例:
less -M /proc/cpuinfo
head
说明:查看文件的头部内容(默认10行)
执行者:所有用户
语法:
head [选项] 文件路径
选项:
-n
:从头开始显示n行内容(识别换行符)
举例:
head -n 5 /proc/cpuinfo -- 等价于
head -5 /proc/cpuinfo
tail
说明:查看文件的尾部内容(默认10行)
执行者:所有用户
语法:
tail [选项] 文件路径
选项:
-n
:从尾开始显示n行内容(识别换行符)
举例:
tail -n 5 /proc/cpuinfo -- 等价于
tail -5 /proc/cpuinfo
grep
说明:搜索文件内容,在文件中查找指定的字符序列(字符串)
执行者:所有用户
语法:
grep [选项] 要查找的字符序列 文件路径 -- 等价于
grep [选项] '要查找的字符序列' 文件路径
选项:
-n
:显示行号
-c
:统计搜索到行的数量(返回的是一个数值)
-i
:忽略大小写搜索,主要针对英文
举例:
grep -ni apicid /proc/cpuinfo
解释:显示行号和忽略大小写,在文件cpuinfo中查找apicid 等价于
grep -ni 'apicid' /proc/cpuinfo
grep -c 'apicid' /proc/cpuinfo
解释:显示搜索到的数量,和-n不能混合使用,因为两者冲突
特殊匹配:
-
^:行首匹配:匹配以指定字符序列开头的
举例:
grep -n '^cp' /proc/cpuinfo -- 解释:匹配以cp开头的字符序列
-
$:行尾匹配:匹配以指定字符序列结尾的
举例:
grep -n '[0-9]$' /proc/cpuinfo -- 解释:匹配以0~9的任意单个数字结尾的序列 [A-Za-z0-9]
find
说明:查找文件或目录(递归查找),从磁盘查找,精确性高,性能低。适合在需要精确查找文件时使用,但由于是遍历磁盘,所以速度较慢。
执行者:所有用户
语法:
find 检索路径 [选项] 参数
选项:
-name
:按照名称查找(默认区分大小写)
-iname
:按照名称查找,对英文忽略大小写
-size
:按照文件大小搜索,默认1个单位(注意:1个单位 = 512字节),可使用k
(KB)、M
(MB)、G
(GB)
等单位;
-type
:按照文件类型查找(d:目录,f:普通文件,l:符号链接,p:管道文件等)
举例:
find ./ -iname test1.txt
解释:在当前路径下包括其子目录中查找文件名为test1.txt的文件,文件名忽略大小写,以路径列表呈现
find / -size +3M
解释:在/目录下包括其子目录中查找文件大小超过3MB的文件,这里的 “+”表示超过 (字节数:1024 * 3 * 1024)
find / -size +3
解释:在/目录下包括其子目录中查找文件大小超过3个单位的文件,这里的 “+”表示超过 (字节数:512 * 3)
find / -size -3M
解释:在/目录下包括其子目录中查找文件大小不超过3MB的文件,这里的 -”表示不超过 (字节数:1024 * 3 * 1024)
locate
说明:快速查找文件或目录,从数据库查找,准确性低,性能高。该指令是从文件系统的数据库中查找,新创建的文件还没有在数据库中建立索引,用该指令是找不到的。
执行者:所有用户
语法:
locate [选项] 文件或目录
选项:
-c
:统计文件个数,返回的是一个数字
-i
:忽略大小写
范例:
sudo updatedb -- 首先将文件信息更新到数据库
locate -i test.c -- 从数据库获取所有文件
注意:默认情况下updatedb
每天更新一次,我们可以手动更新,指令:
[sudo] updatedb
which
说明:快速检索指令的位置
执行者:所有用户
语法:
which 指令名
举例:
which ls
echo
说明:将指定字符串输出到设备上,常用于将内容写入文件
执行者:所有用户
语法:
echo "字符串" > | >> 文件路径
说明:>
表示覆盖写入,会清空原文件内容;>>
表示追加写入,会在原文件内容后面添加新内容
范例:
echo "yueqian is good!" > yueqian.txt
echo "tixiaoshuai is good!" >> yueqian.txt
举例
|(管道)
说明:将前一个指令执行的结果作为后一个指令执行的条件(了解)
执行权限:所有用户
范例:
ls -l | grep ".txt$" // 以详细列表的形式显示文件名称为.txt结尾的文件
find /dev -type c | grep "2$" // 查找/dev下文件类型为c的以2结尾的所有文
计算机单位转换
1Byte = 8bit
1KB = 1024Byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
...