前言
Linux文件与目录的管理部分还有很多细节,在鸟哥的linux私房菜中都有提及,但是,第一遍熟悉,重点在命令上面,没有进行具体的深入,后面会不断丰富这些博客。
目录的相关操作
一些命令
mkdir 创建文件目录
mkdir创建一个目录,其实不止一种用法,还可以结合权限操作使用。
mkdir -m [权限码] [目录名称]
如上图所示:mkdir -m 777 testDir 之后,testDir的权限被赋予了,如果没有指定的权限码,文件夹的权限如下图所示,至于为什么是这个,这和umask有关
mkdir -p [路径名] 按照层级创建文件夹
rmdir 删除空的目录
rmdir -p [路径名] 按照层级删除文件夹名称
但是这个命令只能删除空的文件夹,不能删除有内容的文件夹。
执行文件路径的变量 $PATH
其实这个变量就类似于window下的环境变量
PATH这个变量的内容是由一堆目录所组成的,每个目录中用冒号来隔开。
文件与目录管理
这部分主要介绍文件的拷贝,删除,移动等等。
文件的检视——ls命令
这个命令算是比较熟悉了,这里不再详细介绍
复制、移动与删除——cp,mv,rm
复制文件 cp
cp [-adfilprsu] [来源文件] [目标文件] (destination),这个也是符合一般的命令格式,至于其中的选项这里只介绍几个常见的
-i 覆盖复制,如果目标文件存在,则在覆盖前先询问
-a 完全复制原来的文件,复制过后会发现新的文件创建时间也和原来的文件一样
这里暂时没有总结创建文件链接的操作。
rm——移除文件或目录
rm [-fir] [文件或者目录]
-f:force强制删除
-i:i其实是interation 即交互的意思,就是指操作前给用户提示
-r:递归删除
注意:
删除有‘-'文件名称的文件夹,直接删除会报错,因为带有-的文件夹会被系统误认为命令的选项,因此删除有这类名字的文件夹需要加上路径名。
mv——移动命令
mv [-fiu] [源文件] [目的文件]
mv指令还可以直接修改文件夹名称
mv指令还是可以同时拷贝多个文件到指定文件夹,但是最后一个参数一定是文件夹
文件内容查阅
cat——从第一行开始显示文件
tac——从最后一行开始显示文件(命令与cat相反)
nl—— 显示的时候顺道输出行号
more——一页一页的显示文件内容
这个命令还有指定的操作
less——在more的基础上,可以往前翻页显示文件内容
这个在工作中其实用的比较多这里不做详细操作
head——只看头几行
head [-n number] 文件 实例:head /etc/man_db.conf 默认显示10行,如果想显示多行需要指定 -n 和数值
head -n 20 /etc/man_db.conf
tail——查看后几行
tail [-n number] [文件名]
-n:后面接数值表示几行的意思
-f:表示持续侦测文件的输出,常用于实时日志的查看。
实例:
tail /etc/man_db.conf
tail -n 20 /etc/man_db.conf
tail -n +100 /etc/man_db.conf 查看man_db.conf文件100行以后的数据
od——查看非纯文本文件
od [-t TYPE] 文件
实例:od -t oCc /etc/issue
修改文件时间或建立新文件
touch——创建空文件与修改文件时间
touch [-acdmt] 文件
1、创建空文件
2、修改某个文件的日期(mtime,atime)
touch -d
linux中针对一个文件其实有三种时间描述,mtime——modify time(最后修改时间),ctime——status time(最后权限修改的时间),atime——access time(最后的访问时间)
文件与目录的默认权限与隐藏权限
umask——文件预设权限,指定目前用户在建立文件或目录时候的权限默认值。
就是指定在建立默认文件的权限,直接umask即可完成当前umask的查看
umask -S 也可以输出当前的用户创建文件夹权限列表
这个现实的是文件夹的默认权限,不是文件的,文件在此基础上没有x的权限。
可以看到之前创建的文件夹和文件的默认权限,都是umask指定的,如果修改umask的值,可以直接在umask后面输入数据,例如:umask 222,这里的计算方式,是在原有的421基础上做减法。
指令与文件的搜寻
指令文件搜索
搜索相应的指令文件所在的目录,用which,which -a [command]——列出所有指令所在的目录
目录文件搜索
一般用whereis和locate进行查找,通常find还不是很常用
whereis [-lbmsu] 文件或目录名
whereis 只查询几个特定的目录而已,并没有全系统去查询,通常指查询/bin/sbin 目录和/usr/share/man目录。
locate [-ir] keyword
locate 直接在后面输入部分的文件名就可以了,但是这个命令找寻的数据是由已建立的数据库 /var/lib/mlocate 里面的数据所搜寻到的,所以不用直接去硬盘中度数据。如果用户新建的文件没有及时更新到 /var/lib/mlocate/中,当然文件就是找不到的。如下实例可以说明:
updatedb,就是更新数据库的命令,这个命令就是直接更新 /var/lib/mlocate内的数据库