Linux基础第2弹

Posted buling_buling_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础第2弹相关的知识,希望对你有一定的参考价值。

Linux文件与目录

一、文件的时间、隐藏属性及特殊权限

1、 文件的时间

1 文件的三个时间(ACM)

(1)atime :access time (内容被取用时(打印查看等操作),更新这个读取时间)
(2)ctime :status/change time ;(权限、属性所有者改动时,更新的时间)
(3)modify time(内容数据改动时,更新这个时间)注:通过“ ls -la ”中看到的那个时间
(4)通过“ stat file ”命令可以看到三个时间
在这里插入图片描述
在这里插入图片描述

2 修改文件的时间与新建文件

touch [options] <file>

touch filename //文件不存在时,会自动创建;文件存在时,将ACM统一为当前时间

【optios】:

-a仅修改访问时间
-m仅修改mtime
-r将第一个文件的时间应用到第二个文件上

2、 文件的隐藏属性

1 查看文件的隐藏属性

lsattr [options] <file_or_dir>
【options】:

-a打印隐藏文件的隐藏属性
-d如果是目录仅打印目录信息
-R递归

在这里插入图片描述

2 修改文件的隐藏属性

chattr [+ - =] [options] <file_or _dir>
【options】:

A不修改atime
S同步写入
a只能追加数据
c自动压缩解压
d不会被dump程序备份
i不能删除、修改、建立连接
s文件删除时,直接从磁盘删除(比" rm"还要狠)
u文件删除时,数据内容存在磁盘

3、 文件的特殊权限(多用户合作时用的多)

SUIDset_uid用户在执行该程序时获取程序所有者权限
SGIDset_gid用户在该目录里,有效组变成所属组
SBIDsticky bits在该目录下,用户只能删除自己创建的文件

二、命令及文件的定位查找

1、 which(寻找可执行文件)

“which filename”
查找PATH路径下所有的可执行文件
在这里插入图片描述

2、 whereis(寻找特定文件)

whereis [options] <file_or_dir>
【options】:

-b找二进制文件
-m在manual路径下的文件
-ssource源文件
-u其他文件

3、 locate(搜索文件(可部分查找)(模糊定位))

locate 【options】 <keywords>
注意:当你新建一个文件时,需要执行命令“ sudo uodatedb ”之后,才能locate该文件

4、 find(多样化高级查找)

find [path] [options] [action]

1 与时间相关的参数

【options】:-mtime

nn天之前的”一天之内“修改的文件
-nn天之内的包含n,修改的文件
+nn天之前,不包含n,修改的文化

注意:三者互不重叠

【options】:–newer file : 比file还要新的文件

2 与用户或用户组相关的参数
-uid n用户uid 为n
-gid n群组gid为 n
-user name用户名为 name
-group name群组名为name
nouser、文件所有者不存在
nogroup文件所有组不存在

在这里插入图片描述
在这里插入图片描述
这里因为用户名为“wudi”与对应的”uid“是一致的所以找到的结果是一样的。

3 与文件权限及名称相关的参数
-name filename文件名为filename
-size [+ -] SIZE查找比SIZE大或者小的文件
-type TYPEf b c d l s p

找到文件夹中以" .txt "结尾的并且大小大于0的文件
在这里插入图片描述

随堂练习

1、求指定后缀名的文件总个数的命令:

find . -name "*.cpp" | wc -l//求当前目录下所有以.cpp结尾的文件的总个数

2、求指定目录下.cpp文件代码总行数以及单个文件的行数?

find . -name "*.cpp" | xargs wc -l //求当前目录下所有以.cpp结尾的代码总行数及单个文件行数

3、求所有c、cpp、sh、h文件个数

find . -name "*.c" -o -name "*.cpp" -o -name "*.sh" -o -name "*.h" | wc -l //-o起连接作用

4、求所有c、cpp、sh、h文件代码总行数及单个文件行数

find . -name "*.c" -o -name "*.cpp" -o -name "*.sh" -o -name "*.h" |xargs   wc -l //-o起连接作用

5、 统计当前文件夹下文件的个数

ls -l |grep "^-" | wc -l  //目录个数的话为”^d“

6、 统计当前文件夹下文件的个数(包括子文件夹里的)

ls -lR |grep "^-" | wc -l

以上是关于Linux基础第2弹的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础第2弹

[vscode]--HTML代码片段(基础版,reactvuejquery)

如何知道何时调用了`navController.popBackStack()`?

android键盘弹出问题

Python书单第 2 弹!

如何阻止片段一直弹出到根片段? [导航组件]