任何设备在linux下都是文件。
文件即包括windows下的文件又包括windows下的目录,还包括windows下的设备。
一、文件权限的意义
r:可以读这个文件的具体内容;
w:可以编辑这个文件的内容,包括增加删除文件的具体内容 但不包括删除该文件;
x:文件就具有了可执行的权限-------注意:这里和window不一样,在win中,文件的可执行权限是通过扩展名表现出来的,如exe、bat等,但是在linux中文件的可执行权限是通过这个x决定的,与文件名没有什么关系。
rwx权限都是对文件内容而言的,因为文件的inode和block中并没有文件名,所以这些权限跟涉及到文件名的删除没有关系
二、目录权限的意义
r:可以查看此目录下的完整文件列表信息。当有r权限时,你可以读取该目录下所有文件的文件名
-????????? ? ? ? ? ? test
d????????? ? ? ? ? ? test1
d????????? ? ? ? ? ? test2
d????????? ? ? ? ? ? test3
w:可以对此目录下的所有的文件及目录进行相关的更改 具体权利如下:
可以在此目录下创建新的文件或目录;
可以在此目录下删除存在的文件或目录(不论该文件的权限是什么,这点要格外注意!!!!)
可以重命名及改变文件或目录的位置。
x:目录没有可执行的权限,因此目录中x的功能就是允许别的用户进入这个目录。
假如你想制作一个只读文件
需要保证对文件的权限是4
对文件所在文件夹的权限是r_x
因为没有x 则无法进入该文件读取文件的内容,有了w则用户可以将该文件删除
磁盘格式化后文件系统就将inode和block规划好了,除非有改变磁盘大小或者格式的操作,否则inode和block不在变化。
在linux下 新建一个目录时,ext2会分配一个inode和至少一个block给该目录。
其中 inode记录该目录的相关权限与属性,以及那些分配给该目录的block块号。
block记录了这个目录下的文件名和该文件名占用的inode
新建一个文件时,ext2会首先找到该文件所在的目录,
分配一个inode和 该文件大小所需的block给该文件,并且在该目录的block中记录下文件名和该文件名占用的inode。
inode中记录了文件的属性(不包括文件名)以及该文件实际存放在的block的号码(三级)
由以上说明可知
1 当读取一个文件时,必然要先读取其目录的inode 找到目录所占的block 从而找到 文件所在的inode,再跟据inode的三级索引找到实际的文件。
2 文件名只与所在目录有关 而文件的属性和此文件的inode有关。
不同的文件名可以指向同一个inode 这就时所谓的hard link (连接字段的含义就是有多少不同的文件名都连接到了这个inode)
软连接是 建立一个指向相应文件名的连接, 当那个文件名被删除的时候,整个路径就不通了。
对于awk和Bash来说,他们使用的是不同的string索引系统;
bash的第一个字符从0开始记录;
awk的第一个字符从1开始记录;
#012345678 ------------Bash
#123456789 -------------Awk
以下是案例说明:
[root@Slave02 shell]# vi substring-extraction.sh #!/bin/bash String=23skidoo1 echo ${String:2:4} echo |awk '{ print substr("'"${String}"'",3,4) }' exit 0 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "substring-extraction.sh" [New] 8L, 108C written [root@Slave02 shell]# sh substring-extraction.sh skid skid [root@Slave02 shell]#
使用变量的前缀来匹配前面声明过的所有变量;
如:
[root@Slave02 shell]# xyz23=watever [root@Slave02 shell]# xyz24=asdf [root@Slave02 shell]# echo " a=${!xyz*}" a=xyz23 xyz24 [root@Slave02 shell]# echo "a=${!xyz@}" a=xyz23 xyz24 [root@Slave02 shell]#
抛骰子游戏;
SPOTS=6 -----取模为6,范围在0-5
die1=0
die2=0
------------2个变量名称,保证每个平面选择的数字记录相同
let "die1 = $RANDOM % $SPOTS +1"
let "die2 = $RANDOM % $SPOTS +1"
let "throw = $die1 + $die2"
echo "Throw of the dice = $throw"
echo
exit 0
以下验证结果:
Random number greater than 200 --- 25552 Throw of the dice = 5 [root@Slave02 shell]#
random number less than 500 --- 0 Random number greater than 200 --- 9765 Throw of the dice = 2 [root@Slave02 shell]#
Random number greater than 200 --- 31180 Throw of the dice = 10 [root@Slave02 shell]#