一,Linux文件权限概念
ls是“list”的意思,重点在显示文件的文件名与相关属性。而参数“-al”则表示列出所有的文件详细的权限与属性(包括隐藏文件,就是文件名第一个字符为“.”的文件)。
第一个字符代表这个文件是“目录、文件或链接文件等”
- 若是[d]则是目录,若是[-]则是文件,[l]表示链接文件(linkfile)。
- 若是[b]则表示设备文件里面的可供存储的接口设备。
- 若是[c]则表示设备文件里面的串行端口设备,例如键盘、鼠标。
二,如何改变文件属性与权限
- 改变所属用户组:chgrp(change group的简称)
命令格式:chgrp [-R] dirname/filename …
-R:进行递归(recursive)持续更改,也即联通子目录小的所有文件、目录
栗子:chgrp users install.log #改变install.log文件的用户组为users - 改变文件所有者:chown(change owner)
命令格式:chown [-R] 账号名称 文件或目录
栗子:chown bin install.log #将install.log的所有者改为bin这个账号 - 改变权限:chmod
Linux文件的基本权限就有9个,分别是owner、group、others三种身份各有自己的read、write、execute权限。其中,我们可以使用数字来代表各个权限:
(1)r:4
(2)w:2
(3)x:1
命令格式:chmod [-R] xyz 文件或目录
chmod 777 .bashrc #将.bashrc这个文件的权限都设置启用。
三,目录的相关操作
- 切换目录的命令是cd,下面这些比较特殊的目录要记下来:
(1). 代表此层目录
(2).. 代表上一层目录
(3)- 代表前一个工作目录
(4)~ 代表“目前用户身份”所在的主文件夹 - 常见的处理目录的命令:
(1)cd:切换目录(Change Directory的缩写)
(2)pwd:显示当前目录(Print Working Directory的缩写)
(3)mkdir:新建一个新的目录(make directory的缩写)
(4)rmdir:删除一个空的目录
四,文件与目录管理
- 查看文件与目录:ls
(1)命令格式:
ls [-aAdfFhilnrRSt] 目录名称
ls [–color={never,auto,alaways}] 目录名称
ls [–full-time] 目录名称
(2)参数:
-a:全部的文件,连同隐藏文件一起列出来(常用)
-A:列出全部的文件,连同隐藏文件,但不包括.与..这两个目录
-d:仅列出目录本身,而不是列出目录内的文件数据(常用)
-h:将文件容量已人类较已读的方式(GB,KB等)列出来
-i:列出inode号码
-l:列出长数据串,包含文件的属性与权限等数据(常用)
–color=never:不要依据文件特性给予颜色显示
–color=always:显示颜色
–color=auto:让系统自行依据设置来判断是否给予颜色
–full-time:以完整的时间模式输出 - 复制、删除与移动:cp,rm,mv
(1)cp(复制文件或目录)
命令格式:
cp [-adfilprsu] 源文件 目标文件
cp [options] source1 source2 … directory
参数:
-a:相当于-pdr的意思(常用)
-d:若源文件为连接文件的属性,则复制连接文件属性而非文件本身
-f:强制(force)的意思若目标文件已经存在且无法开启,则删除后再尝试一次
-i:若目标文件已经存在时,在覆盖时会先询问操作在进行(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
-r:递归持续复制,用于目录的赋值行为(常用)
最后需要注意的是,若源文件有两个以上,则最后一个目的文件一定要是目录才行。
(2)rm(移除文件或目录)
命令格式:rm [-fir] 文件或目录
参数:
-f:就是force的意思,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问用户是否操作
-r:递归删除。最常用在目录的删除了,但,这是非常危险的参数!!!
(3)mv(移动文件与目录,或更名)
命令格式:
mv [-fiu] source destination
mv [options] source1 source2 … directory
参数:
-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i:若目标文件已经存在时,就会询问是否覆盖
-u:若目标文件已经存在,且source比较新,才会更新 - 文件内容查阅
cat:由第一行开始显示文件内容
tac:从最后一行开始显示,可以看出tac是cat的倒写形式
nl:显示的时候,顺便输出行号
more:一页一页的显示文件内容
less:与more类似,但是比more更好的是,它可以往前翻页
head:会看头几行
tail:只看结尾几行
od:以二进制的方式读取文件内容 - 修改文件或创建新文件:touch
命令格式:touch [-acdmt] 文件
参数:
-a:仅修改访问时间
-c:仅修改文件的时间,若该文件不存在则不创建新文件
-d:后面可以接欲修改的日期而不用目前的日期,也可以使用–date=”日期或时间”
-m:仅修改mtime
-t:后面可以接欲修改的时间而不用目前的时间,格式为[YYMMDDhhmm] - 文件默认权限:umask
(1)若用户创建“文件”则默认没有可执行权限,也就是最大为666;若用户新建目录,则由于x与是否可以进入此目录有关,因此默认为所有777
(2)umask就是指定“目前用户在新建文件或目录时候的权限默认值”,需要注意的是,umask的分数指的是“该默认值需要减掉的权限” - 命令与文件的查询
(1)which(寻找“执行文件”):which [-a] command
-a:将所有由PATH目录中可以找到的命令均列出,而不只第一个被找到的命令名称
which ifconfig(2)whereis(寻找特定文件)
whereis [-bmsu] 文件或目录名
-b:只找二进制格式的文件
-m:只找在说明文件manual路径下的文件
-s:只找source源文件
-u:查找不在上述三个选项当中的其他特殊文件
(3)locate
有的时候使用上面两个命令会发现,会找到已经被删除的文件,而且也找不到最新的刚才创建的文件。
locate [-ir] keyword
-i:忽略大小写的差异
-r:后面可接正则表达式的显示方式
这个locate的使用更简单,直接在后面输入“文件的部分名称”后就能得到结果。(4)find
find [PATH] [option] [action]
与时间有关的参数:共有-atime,-ctime,-mtime。下面以-mtime说明:
-mtime n: n为数字,意义为在n天前的那“一天之内”被更改过的文件
-mtime +n: 列出在n天之前(不含n天本身)被更改过的文件名
-mtime -n: 列出在n天之内(含n天本身)被更改过的文件名
-newer file: file为一个存在的文件,列出比file还要新的文件名
比如:
find / -mtime 0 #将过去系统上面24小时内有改动的文件列出
find /home -user leo #查找/home下面属于leo的文件
find / -nouser #查找系统中不属于任何人的文件参考自:Linux私房菜基础学习篇