linux编程判断该名称是否为档案,01 Linux档案与目录管理(示例代码)

1. 目录与路径

1.1绝对路径和相对路径

绝对路径:一定有根目录/写起,例如:/usr/share/doc

相对路径:不是由根目录/写起,例如:由/usr/share/doc要到/usr/share/man, 可以使用如下命令

f34a2ca1fcc548b18440114a19226e5e.jpg

相对路径意指:相对于当前工作目录的路径

.代表当前目录;..代表上级目录

1.2 cd 变换目录

Cd是change directory 的缩写,是用来变换工作目录的指令。

55a0e5f6f8ff4b6395d7b4cafc9626a8.jpg

Cd – 回到刚刚的那个目录也就是/usr/share/doc

Cd .. 回到上级目录

TIPs:Linux默认指令列默认模式(bash shell)具有档案自动补齐功能,可以使用[Tab]键来达成你目录的完整性

1.3 pwd 显示目前所在的目录

Pwd是print working directory,显示当前目录所在的路径

051fc9d5215d47deb6fc18c0fe0ba4a8.jpg

#pwd –P 显示真正的目录,而不是链接目录,例如/var/mail目录指向的是/var/spool/mail(链接目录相当于windows下的快捷方式)

51b4301c500641ba9cf02cfb95039b4d.jpg

1.4 mkdir 建立新目录

#mkdir 目录名

#mkdir –p 目录1/目录2/目录3…. (创建递归目录,子目录,子子目录)

9c65ba060f6b4de2b838081d1a3a8d86.jpg

#mkdir –m 711 test0 (创建带权限的目录)

17bc841a0f3240368708c8eacdc0e298.jpg

1.5 rmdir 删除空目录

#rmdir 目录名

#rmdir –p目录1/目录2/目录3…. (删除递归目录,子目录,子子目录)

71129afba6304ebfa635cb19bd0307ed.jpg

#rmdir只能删除空目录

#touch filename(新建档案123)

a3ccd383ebcd44a69bd18450fc5c9c1d.jpg

#rm –r 非空目录(可以删除非空目录)

275666a2fe604d8d94b410f8b033f8bb.jpg

1.6 $PATH(必须大写)执行指令的路径

#ls 是查阅文件属性的指令,它位于/bin/ls(绝对路径),为什么我们在任何目录下都可以执行#ls指令呢?这是由于环境变量PATH所致。当我们执行ls指令时,系统会依照PATH的设定去每个PATH定义癿目录下搜寻文件名为ls的可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先被搜寻到的同名指令先被执行!

#echo $PATH (查看PATH定义的路径)

f1fd91798f9b40da9803d34fc6c19c2d.jpg

0ded2f3720c44c239dc96eae170ab8cf.jpg

PATH下的每个目录中间用冒号:隔开,每个目录是有先后顺序的。你可以发现不管是root还是普通用户sky,PATH下都有/bin目录,所以在任何路径下都可以通过PATH来找到/bin/ls来执行ls指令。

1.7 ls档案与目录的检视

8b0d3211bf4b49d9ba5e499227427df0.jpg

ls 最常被使用到的功能还是那个 -l 的选项,为此,很多distribution 在预设的情况中, 已经将 ll (L 的小写) 设定成为 ls -l 的意思了!其实,那个功能是 Bash shell 的 alias 功能

1.8 cp,rm,mv复制删除和移动

#cp 源文件 目标文件

#cp–i 源文件 目标文件(若目标已经存在,在覆盖时会询问动作的进行)

#cp–r 源文件 目标文件(递归复制目录)

#cp–a 源文件 目标文件(连同文件的属性一并复制过去)

#rm–f 档案或目录(强制删除)

#rm –i 档案或目录(删除前询问)

#rm –r 档案或目录(递归删除)

#mv移动档案与目录或更改名称

e7dcab926d6449ee9721b967c2d324c5.jpg

2. 档案内容查阅

2.1 cat 由第一行开始显示档案内容

cat 是 Concatenate (连续)的简写, 主要的功能是将一个档案的内容连续印出在屏幕上面!

157927e9a6eb4e32a57fc775943d942b.jpg

2.2 tac从最后一行开始显示

2.3 nl 显示的时候,顺道显示出行号

2.4 more 分页显示档案内容

2.5 less 与more类似,但是可以往前翻页

c7b26b6247e74a9398fb11ed884c0cb6.jpg

2.6 head 只看头几行,默认显示10行

f5403b617f8e4d1689ea78804ab98b8c.jpg

b2de44dbcd7e4024aa64802b1fcc619c.jpg

2765e5a9a71345b3b0f74b0837116e7b.jpg

可以看到man.config一共有152行

#head –n -100 /ect/man.config        列出前面的52行,后面的100行不显示

2.7 tail 只看尾巴几行

#tail –n -100 /etc/man.config        列出100行后面的所有内容,也就是100-152行,前面的99行不会显示。

如果要显示/etc/man.config第11行到第20行,如何实现呢?

9e2198542ab44221a0ae4548c4ba340f.jpg

2.8 od 以二进制的方式读取档案内容

执行文档通常是binary file 二进制格式,如果用上面的指令读取其内容时,会显示乱码,这是就要用到od指令

35f90822dd0b44e2930b85f83bc18631.jpg

例:将/usr/bin/passwd的内容以8进制存储值与ASCII的对照表显示

0b18b17d9d224cf2a939743cc1e35282.jpg

3. 档案时间与新建档案

3.1档案的时间参数Modification time(mtime)--档案内容更改的时间

Status time(ctime)--档案权限或属性更改的时间

Access time(atime)--档案的内容被取用的时间,比如cat

cba5114a07cd47dbb344c33f25706cce.jpg

3.2 创建档案

3.3 修改档案时间

4. 档案与目录的默认权限与隐藏权限

档案的权限有rwx读写执行;目录的属性有d – l 目录、档案、链接档案等

4.1 chgrp 更改档案目录的所属群组

#chgrp [-R] 组名 档案目录名 // -R表示递归,目录的子目录,子子目录

4.2 chown 更改档案目录的拥有者

#chown [-R] 拥有者 档案目录

#chown [-R] 拥有者:组名 档案目录 //同时更改拥有者和所属组

4.3 chmod 更改档案目录的权限#chmod [-R] xyz 档案目录 // x,y,z分别代表拥有者,所属组,其他用户的权限,比如x=7(r+w+x),r=4,w=2,x=1

#chmod [-R] u=rwx,go=rx 档案目录 //u=user;g=group;o=other;a=all

#chmod [-R] a+w 档案目录 //+代表增加权限,-代表删除权限,=代表赋予权限,a+w这里表示所有用户都增加w写的权限

实例:

在/tpm下创建test目录,在test目录下创建123文本档案,我们可以看到在root用户下创建的档案和目录,所属主和所属组都是root,这里我们将test目录及其目录下的所有档案目录(这里只有123档案)的所属主设置成sky,所属组设置成user组。并且除了自己sky以外的其他用户只有读和操作的权限。

切换到普通用户sky,并编辑123档案,编辑内容"hello my Linux"

切换到普通用户tyang3,可以查看/tmp/test下的档案,但是无权更改写里面的内容

切换到sky用户,除了自己以外,其他用户对test目录的权限只有r只读的权限

再切换到其他用户tyang3,无法访问sky用户的test目录及查看其内部的档案

将/tmp/test目录权限更改为对其他用户只有x执行的权限,我们发现其他用户tyang3可以进入目录,但是无法查看目录内的档案

1ad6b0c4d80646169a8e3783d1c97fa5.jpg

总结:

r--: 用户无法进入目录,也无法访问目录内的档案

--x: 用户可以进入目录,但是无权操作,比如ls,cp

r-x: 用户可以进入目录,也可以进行操作,但是无法修改目录内档案的内容

4.4 umask档案预设权限

当我们创建档案或目录时,都会有个默认的权限,umask的分数指的是默认值需要减掉的权限,r,w,x分别是4、2、1分#umask        //数字形态的权限设定分数,第一组数字是特殊权限用的,其他三组为用户权限

#umask –S        //符号类型显示设定的权限

24d99a00458e464b8d9bcfb4c2286cf1.jpg创建档案

创建档案时,预设是没有可执行X权限,只有rw的权限,即-rw-rw-rw-,所以umask最大的分值是666分

创建目录

创建目录时,权限默认值是drwxrwxrwx,所以umask最大分值是777分

如上图所示,root管理员umask默认值是0022,我们只看后三位022,

Root管理员创建档案时,所属主user不减权限(0),所属组group减掉w权限(2),其他用户也减掉w权限(2),所以最后创建的档案权限是-rw-r—r--

Root管理员创建目录时,所属主user不减权限(0),所属组group减掉w权限(2),其他用户也减掉w权限(2),所以最后创建的目录权限是drwxr-xr-x

10bf1f7d3c48485798334c84d5506ab9.jpg

Bingo!Bingo!完全正确,有兴趣的同仁可以切换到普通用户进行测试。

如何修改umask的默认值?

#umask 修改值

Root管理员的umask默认是022,而普通用户umask默认是002

4.5 chattr档案的隐藏属性

用法:#chattr [+—=] [ASacdistu] 档案或目录

实例:创建attrtest档案,并添加i的属性(不能删除、改名、创建链接)

取消档案i的权限

4.6 lsattr 显示档案的隐藏属性

4.7 档案的特殊权限

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值