linux文件和目录管理
文件管理主要命令
cd 切换目录
pwd 显示当前目录
mkdir 新建目录
rmdir 删除空目录
. 代表当层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表用户身份所在的主文件夹
~account 代表account这个用户的主文件夹
文件管理类的命令
ls [-aAdfFhilnrRst] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称
-a 全部文件,隐藏文件也一起列出
-A 全部文件,隐藏文件也列出,不包括. 和..两个目录
-d 列出目录本身,文件数据不列出
-f 直接列出结果,不排序
-F 根据文件,目录等给予附加的目录结构,比如 *:代表可执行文件,/: 代表目录 ,=:代表socket文件 ,|:代表FIFO文件
-h 文件容量已人类易读的方式列出来
-i 列出inode号码
-l 列出场数据传,包含文件和权限,比较蝉蛹
-n 列出UID和GID,非用户与用户组的名称
-r 排序结果反响输出
-R 目录的子目录也显示出来
-S 文件容量大小排序,不是文件名排序
-t 时间排序,不是文件名
--color=never 必要根据文件特性给予颜色显示
--color=always 显示颜色
--color=auto 让系统自行根据设置判断是否给予颜色
--full-time 用完整的时间模式输出
--time 输出访问时间或者改变权限属性时间,不是内容更改时间
cp 复制文件或者目录
基本格式
- cp [-adfilprsu] 源文件(source) 目标文件(destination)
2.cp [options] source1 source2 ... directory
-a 相当于pdr的意思
-d 如果源文件为连接文件属性(link file) 复制连接文件属性,非本身
-f 强制,如果目标文件已经存在,并且无法开启,那么删除目标文件在尝试一次
-i 如果目标文件已经存在,覆盖的时候会先询问操作的先行,比较常用
-l 进行硬连接(hard link)的创建,而非复制文件本身
-p 连同文件属性一起复制过去,而非使用默认属性
-r 递归持续复制,用于目录的复制行为
-s 复制成为括号的链接文件
-u 若destination比source旧才更新,否则不更新
cp不加任何参数,复制的是源文件,而非连接文件
复制文件注意一下几点
1.是否需要保证来源文件信息
2.源文件是否为软连接文件
3.源文件是否为特殊文件
4.源文件是否为目录
rm(移除文件或者目录)
基本格式
rm [-fir] 文件或者目录
-f force的意思,忽略不存在的文件,不会出现警告
-i 互动模式,删除之前会询问用户是否操作
-r 递归删除,相当危险,最常用的目录删除
mv (移动文件与目录,或更名)
-f 强制的意思,如果目标文件存在,不会询问直接覆盖
-i 目标文件存在,会询问是否覆盖
-u 如果目标文件存在,source比较新,会更新目标文件
文件内容查阅
cat 从第一行显示文件内容
tac 从最后一行开始显示文件内容,tac是cat的倒写
nl 显示的时候,顺便输出行号
more 一页一页显示文件内容
less 相对more的又是,可以往前翻页
head 只看投机航
tail 只看结尾几行
od 用二进制的方式读取文件内容
1.cat命令
格式 cat [-AbEnTv]
-A : 相当-vET的整合参数,可列出特殊字符,而不是空白
-b:列出行号,仅针对非空白做行号显示,空白行不标记行号
-E:将结尾的断行字符$显示出来
-n:打印出行号,空白也会有行号
-T:将tab按键用^I 显示出来
-v:列出一些看不出来的特殊字符
2.nl 命令
格式:nl [-bnw] 文件
-b:指定行号的指定方式
-b a :表示无论是否为空行,也同样列出行号,类似cat -n
-b t :如果有空行,空的哪一行不要列出行号
-n:列出行号的表示方法
-n ln:行号在屏幕的最左边演示
-n rn:行号在屏幕的最右边显示
-n rz:行号在最左边,加0显示
ex:nl -b a -n rz filename
3.more命令
格式 :more filename
空格:向下翻一页
enter:下滚动一行
/字符串:显示内容中,向下查询字符串这个关键字
:f :立刻显示文件名和目前显示的行数
q :立即离开,不再显示文件内容
b:往回翻页,只对文件有用,对管道无用
4.less命令
格式:less filename
pagedown:向下翻一页
pageup:向上翻一页
enter:下滚动一行
/字符串:显示内容中,向下查询字符串这个关键字
?字符串:显示内容中,向上查询字符串这个关键字
n:重复前一个查询
N:反响重复前一个查询
:f :立刻显示文件名和目前显示的行数
q :立即离开,不再显示文件内容
5.数据选取,head命令
格式:head [-n number] 文件
-n:后面接数字,代表显示几行的意思
6.数据选取, tail命令(常用)
-n :代表显示几行
-f:表示持续检测后面所接的文件名,要等到按下ctrl-c才会结束tail的检测
exp:如果不知道文件有几行,但是执行列出1000行以后的数据
tail -n +1000 filename
7.od [-t type] 文件
-t : 后面可以接很多类型为type的输出
a:使用默认的字符来输出
c:使用ascii字符来输出
d:使用十进制来输出数据,每个证书占用size bytes
f:使用浮点数来输出数据,
o:使用八进制输出数据
x:使用十六进制来输出数据
od -t oCc filename表示将内容和ascll中的内容进行比较
8.touch命令
格式: touch [-acdmt] 文件
-a :仅修改访问时间
-c :仅修改文件时间,如果文件不存在则不创建新文件
-d:后面可以接与修改的日期而不用目前的日期,也可以使用--date=“日期或者时间”
-m:仅修改mtime
-t:后面接与修改的时间而不用目前的时间
范例一:新建一个空的文件并且查看时间
9.umask
表示的是修改默认创建文件的权限接口
直接输入表示查看默认创建文件的给予权限
ex 022 表示在group和other被拿掉w权限
要改变权限只需要
umask 002
表示拿掉other的w权限
每个选项总和为6
10.文件隐藏属性 chattr(设置文件的隐藏属性,理解为changeattribute)
格式:chattr [+-= ] [ASacdistu] 文件或目录名称
+:增加某一个特殊参数,其他原本存在的参数不动
-:减少某一个特殊参数,其他原本存在的参数不动
=:仅有后面接的参数
A:当设置了A这个属性的时候,如果你访问这个目录或者文件时,他的访问时间atime将不会被修改,可避免i/o慢的机器过渡访问磁盘,对速度慢的计算机有帮助
S:一般文件是异步写入磁盘,如果加上这个属性,进行任何文件的修改,这个改动会同步写入磁盘中
a:设置a之后,这个文件只能增加数据,不能删除也修改数据,只有root才能设置这个属性
c:这个属性设置之后,将会自动将这个文件压缩,读取的时候会自动解压,存储的时候,将会进行先压缩再存储
d:dump程序被执行的时候,设置d属性可以将该文件不会被dump备份
i:最无敌的参数,可以让一个文件,不能被删除,改名,设置连接也无法写入,添加数据,对系统安全帮助特别大,只有root可以设置这个属性
s:文件中设置了s属性,如果这个文件被删除,将会完全从这个磁盘空间中删除
u:和s相反,当使用u配置文件,如果文件被删除了,数据的内容其实还在磁盘中,可以使用来找回文件
exp:chattr +i filename
让这个文件不能被删除
10.lsattr(理解为listattribute)显示文件隐藏属性
格式:lsattr [-adR] 文件或者目录
-a :将隐藏文件的属性也展示出来
-d:如果连接的是目录,仅仅列出目录本身的属性
-R:子目录的属性也展示出来
文件特殊权限SUID,SGID,SBIT
1.SUID
1.1 这个权限仅仅对二进制程序有效
1.2 执行者对改程序要有x的执行权限
1.3.本权限只在执行过程中有效
1.4执行者需要有程序所有者的权限
2.SGID
可以针对文件或者目录设置
2.1 对二进制程序有用
2.2 程序执行者对该程序来说,需要有x权限
2.3 执行者执行过程中会获得程序用户组支持
3.StickyBit
针对目录有效,对文件已经没有效果
当用户对这个目录有wx权限
用户在该目录下创建文件或者目录仅有自己和root可以删除该文件
设置使用chmod,修改权限来设置,exp:chmod 4755 filename
4为 SUID
2为 SGID
1为 SBIT
文件相关
一.查看文件类型 file
exp : file filename 必须为当前路径下文件,或者为全路径
二.命令和文件的查询
1.脚本文件名的查询 which
寻找执行文件
which [-a] command
-a:将所有由path目录中可以找到的命令均列出,而不止第一个被找到的命令名称
2.文件名的查找 whereis [-bmsu] filename
-b:只找二进制格式的文件
-m:只找在说明文件路径下的文件
-s:只找source源文件
-u:查找不在上述三个选项的特殊文件
以后也会有find这个查询文件的命令,但是find使用的时间会相对多很多,因为find是直接查找硬盘,如果你的硬盘老旧,那就要等很久,whereis可以加入参数查找相关的数据,如果你要找可执行的文件,那么加上-b就可以了,不加参数会展示所有数据
2.1 同样是查找文件的命令
locate [-ir] keyword
-i 忽略大小写的差异
-r 后面可以接正则表达式的显示方程式
locate寻找的数据是由已经创建的数据库/var/lib/mlocate/里面的数据库里面找到了,所以不用查询硬盘,这个数据库每天更新一次
如果要手动更新,那么输入,updatedb就可以了
2.2 find 查找文件
find [path] [option] [action]
参数:
- 与时间有关的参数,有 -atime,-ctime,-mtime
-mtime n :n位数字,意义为在n天之前的“一天之内”被更改过的文件名
-mtime +n :列出在n天之前,不含本身,被更改过的文件名
-mtime -n 列出在n天之内,含本身,被更改过的文件名
-newer file : file为一个存在的文件,列出比这个文件更新的文件名
exp: find / -mtime 0
find /etc -newer /etc/passwd
比如+4代表,大于等于五天之前的文件名
-4代表小于等于4天内的文件名
4表示4-5天的哪一天的名字
2.和用户和组名有关的参数
-uid n:n为数字,数字是用户的账号id,即uid
-gid n:n为数字,这个数字是用户组名的ID,即GID,这个GID记录在 /etc/group中
-user name: name为用户账号名称
-group name:name为用户组名,例如users
-nouser :找寻文件所有者不存在的人
-no group :找寻用户组不存在的文件
- 和文件名有关的操作
-name filename:查找文件名为filename的文件
-size [+-] SIZE :查找比size还要大 + 或者小 - 的文件,这个size的规格有:
c:代表byte,k:代表1024yes,所以要找比50k还大的文件就是,-size +50k
-type TYPE: 查找文件的类型为type的,类型主要有,一般正规文件 f,设备文件 b,c
目录 d,连接文件l,socket s,以及fifo p等属性
-perm -mode:查找文件权限,刚好等于mode 的文件,这个mode为类似chmod 的属性值,举例来说 -rwsr-xr-x的属性为4755
-perm+mode:查找文件权限,包含任一mode的权限的文件,举例来说,我们查找 -rwxr-xr-x,即-perm +755时,但一个文件属性为 -rw-------也会被列出来,因为有-rw属性存在