Linux文件操作

1.目录相关操作

特殊目录

.   代表此层目录

..   代表上一层目录

–    前一个工作目录

~    代表“当前用户”所在的主目录

~account     代表“account”这个用户的主目录

下面我们来谈谈几个常见的处理目录的命令:

cd    切换目录

pwd  [-p]   显示当前目录

参数:-p 显示当前的路径,而非使用连接(link)的路径(显示连接源的路径)

mkdir  [-mp]   新建一个新的目录

参数:-m 设置权限

-p 递归创建路径,没有的路径也会一并创建

rmdir [-p]     删除一个目录

参数:-p 连同上一层“空”目录也一起删除

2.环境变量$PATH

查看环境变量  echo $PATH

PATH(一定是大写)这个变量内容是由一堆目录所组成,每个目录中间用冒号(:)来隔开,每个目录是有“顺序”之分的。

疑问:如果我有两个ls命令在不同的目录中,例如/usr/local/bin/ls 和 /bin/ls ,那么当我执行ls的时候,是哪个ls被执行?

答:echo $PATH,看哪个目录在前面,则哪个目录下的命令先被执行。因为Linux是按环境变量的配置顺序,查找命令的。

为了安全起见,建议 不要将“.”当前目录加入到PATH

3.文件相关操作

ls 参数很多,只需记住几个常用

参数:

-a    全部的文件(包括隐藏文件)

-A     全部的文件(不包括隐藏文件)

-d     只列出目录

-f     直接列出结果,而不进行排序(默认会以文件名排序)

-F    根据文件、目录等信息 给予附加数据结构,如:*可执行文件    / 目录    = socket文件    | FIFO文件

-h    将文件容量以较易读的方式(如:GB、KB等)列出来

-i     列出inode号码

-l    列出长数据串,包含文件的属性和权限等数据(常用)

-n     列出UID和GID,而非用户与用户组的名称

-r    将排序结果反向输出

-R    连同子目录内容一起列出

-S    以文件容量大小排序(大->小排序)

-t    以时间mtime排序(新->旧排序)

–full-time    显示完整时间

–time=(atime, ctime)     输出atime或ctime  (atime被读取的时间,ctime文件权限和属性被修改的时间)

cp 源文件  目标文件

参数

-a    将所有的属性全部复制,相当于 -pdr 的意思

-d     若源文件为link file,则只复制link file的属性而非文件本身

-f     强制复制

-i     覆盖时,会提示

-l    硬连接的文件文件创建,而非复制文件本身

-p    连同文件属性一起复制

-r    递归复制

-s    复制成为软链接,创建”软链接”

-u    若目标文件 比 源文件 旧,才会复制

最后需要注意的,如果源文件有两个以上,则最后一个目的文件一定是“目录”  


rm 文件

参数

-f    强制

-i    删除时提示

-r    递归


mv 

参数

-f    强制

-i    相同文件已经存在时,提示

-u    若目标文件已经,且目标文件较新,才会移动文件

其他:

basename 路径        取得路径的文件名

dirname 路径            取得目录名

查看文件内容

cat     由第一行开始显示文件内容

tac    从最后一行开始显示

nl    显示的时候,顺便输出行号

more    一页页的显示,只可往下翻页

less    一页页的显示,可以上下翻页

head    只看头几行

tail    只看后几行

od    以二进制的方式读取文件

touch    修改文件时间或创建文件

linux下面都会记录许多的时间参数,其中有3个主要的变动时间

mtime           “内容数据”更新的时间

ctime            “状态”更新的时间,权限和属性被更改了,都会更新这个时间

atime            当“该文件的内容被读取”时,就会更新这个时间

参数:

-a    仅修改访问时间

-c    仅修改文件的时间(包括atime、ctime、mtime),若该文件不存在则不创建新文件

-d    后面可以接欲修改的日期而不是当前的日期,也可以使用”–data=时间/日期”

-m    仅修改mtime

-t    后面可以接欲修改的时间而不是当前的时间,格式为 [YYYYMMDDhhmm]

注:

touch -m 文件  会改变mtime、ctime

touch -c 文件   会改变mtime、ctime、atime

umask 文件默认权限 

umask    数字形态的权限分数,分数指的是“该默认值需要减掉的权限”

umask -S     符号类型的方式显示权限

文件隐藏属性chattr,lsattr

chattr [+-=] [ASacdistu] 文件或目录

参数就解析2个重要的,a和i

a    当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。案例:log文件,只能追加内容,不能删除内容,就可以使用+a属性

i    它可以让一个文件“不能删除、不能改名、不能设置连接、不能修改数据”,即无法改动这个文件,对于系统安全性有相当大的作用,只有root才能设置这个属性

lsattr 显示文件的隐藏属性

参数

-a     将隐藏文件也显示出来

-d    如果接的是目录,仅列出目录本身的属性

-R    连同子目录的数据也一并列出来

对于文件的特殊权限SUID、SGID、SBIT,还不理解,暂时未做分析

file 查看文件类型

如果你想知道某个文件的基本数据,例如是属性ASCCII 或是 data文件,或者是binary,且其中有没有使用到动态函数库等等的信息,就可以利用file这个命令来查看。

5.查找文件

which [-a] 命令名

查询脚本文件名  -a 将所有在PATH环境变量中可以找到的命令都列出来

疑问:为什么cd这个命令无法被找到呢?

答:因为cd是bash内置的命令


whereis [-bmsu] 文件

参数

-b    只找二进制格式的文件

-m   只找在说明文件manual 路径下的文件

-s    只找source 源文件

-u    查找不在上述三个选项当中的其他特殊文件


locate [-ir] keyword

查找包含keyword 的文件

参数

-i    忽略大小写的差异

-r    后面可接正则表达式的显示方式


通常find不是很常用,因为速度慢。通常我们都是先使用whereis 或 locate 来检查,如果真的找不到了,才用find来查找。

因为whereis 和 locate 是利用数据库来查找数据,所以相当快速,而且并没有实际查询硬盘,比较节省时间。

这个数据库保存系统内的所有文件信息,默认是每天创建一次,如需更新这个数据库,可以使用命令 updatedb


find [path] [option] 很强大的命令,这里只简单的介绍常用的

参数

-user name       查找name用户的文件

-group name    查找属于name组的文件

-name filename

6.权限与命令间的关系(极重要)

1.让用户进入某个目录,基本权限x

2.用户在某个目录可以读取文件,基本权限xr

3.用户可以修改一个文件,基本权限:文件rw,文件所在目录x

4.用户可以创建一个文件,基本权限:目录wx

5.用户进入某个目录并执该目录下的某个命令,基本权限:文件x,目录x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值