chmod、chown、find、od、touch
chmod
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
u 表示该文件的拥有者user
g 表示与该文件的拥有者属于同一个群体(group)者
o 表示其他以外的other
a 表示这三者皆是all
+ 表示增加权限
- 表示取消权限
= 表示唯一设定权限
r 表示可读取
w 表示可写入
x 表示可执行
X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c 若该文件权限确实已经更改,才显示其更改动作
-f 若该文件权限无法被更改也不要显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help 显示辅助说明
–version 显示版本
实例:
将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将文件 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该文件拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
chmod 777 file
语法为:
chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
chmod a=rwx file`
chmod 777 file`
chmod ug=rwx,o=x file
chmod 771 file
chown
利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。 。
一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限可以自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。
使用权限 : root
语法:
chown [-cfhvR] [--help] [--version] user[:group] file...
参数 :
user 新的文件拥有者的使用者 ID
group 新的文件拥有者的使用者组(group)
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-v 显示详细的处理信息
-R 处理指定目录以及其子目录下的所有文件
实例:
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将目前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
find
用来在指定目录下查找文件。
语法:
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过 +10为10分钟前 -10为10分钟内
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
实例:
将目前目录及其子目录下所有延伸档名是 txt的文件列出来。
-name/ -iname 文件名称符合 name 的文件
find . -name "*.txt"
将目前目录其其下子目录中所有一般文件列出
-type c 文件类型是 c 的文件
f 一般文件
find . -type f
将目前目录及其子目录下所有最近 10 天内更新过的文件列出
-ctime n 在过去n天内被修改过的文件
find . -ctime -10
将目前目录及其子目录下所有最近 20 分钟被读取过的文件列出
-amin n 在过去 n 分钟内被读取过
find . -amin -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
-type c 文件类型是 c 的文件
-mtime n 在n天前被修改的文件
find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
-type c 文件类型是 c 的文件
find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
-type c 文件类型是 c 的文件
-size n 文件大小 是 n 单位,
find / -type f -size 0 -exec ls -l {} \;
od
od用于输出文件内容。
od指令会读取所给予的文件的内容,可以以八进制、十进制、十六进制和ASCII码来显示文件或者流,它们对于访问或可视地检查文件中不能直接显示在终端上的字符很有用。
语法:
od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][--help][--version][文件...]
选项:
-A 地址进制: 按指定的进制显示地址信息;
-j,–skip-bytes=BYTES:跳过指定数目的字节;
-N,–read-bytes=BYTES:输出指定字节数;
-S, --strings[=BYTES]:输出长度不小于指定字节数的字符串;
-v,–output-duplicates:输出时不省略重复的数据;
-w,–width=:设置每行显示的字节数,od默认每行显示16字节。如果选项–width不跟数字
-t 显示格式: 指定数据的显示格式;
-A 指定地址进制包括:
o 八进制(系统默认值)
d 十进制
x 十六进制
n 不打印位移值
-t 指定数据的显示格式,主要参数有:
c ASCII字符或反斜杠序列(如\n)
d 有符号十进制数
f 浮点数
o 八进制(系统默认值)
u 无符号十进制数
x 十六进制数
参数
缩写 格式规范 说明
-a -t a 输出命名字符。
-b -t o1 输出八进制字节。
-c -t c 输出可打印的单字节字符,C反斜杠转义或3位八进制序列。
-d -t u2 输出无符号十进制数(双字节)。
-f -t fF 输出浮点型。
-i -t dI(大写I) 输出十进制整数。
-l -t dL 输出十进制长整型。
-o -t o2 输出八进制字节(双字节)。
-s -t d2 输出十进制数(双字节)。
-x -t x2 输出十六进制数(双字节)。
实例:
创建 tmp 文件:
echo abcdef g > tmp
cat tmp
使用 od 命令:
-b 输出八进制字节。
od -b tmp
使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节:
-c 输出可打印的单字节字符
od -c tmp
使用ASCII码进行输出,注意其中包括转义字符
od -t d1 tmp
使用单字节十进制进行解释
od -A d -c tmp
touch
用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
语法
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
参数说明:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
实例:
使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令:
touch testfile #修改文件的时间属性
首先,使用ls命令查看testfile文件的属性,如下所示:
ls -l testfile #查看文件的时间属性
#原来文件的修改时间为16:09
-rw-r–r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:
touch testfile #修改文件时间属性为当前系统时间
ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:
touch file #创建一个名为“file”的新的空白文件