Linux文件和目录管理
一、绝对路径和相对路径
绝对路径:一定是从根目录写起的;例如:# cd /usr/local/mysql
相对路径:首先进入/home,再进入到test;#cd /home
#cd test
1.命令cd
(1)# cd:tmp(+目录名)
,则直接切换到tmp(该)目录下;
!只能加目录名,如果跟了文件名则会报错。
(2)# pwd
:返回内容则是显示当前所在目录;
(3)# cd.
:表示当前目录;
# cd..
:表示当前目录的上一级目录;
# cd -
:表示返回root目录;
2.命令mkdir
(1)# mkdir /tmp/123/test
:如果没有中间的123目录,则会报错;
(2) # mkdir -p /tmp/123/test
:-p表示如果就算其中的目录,也会直接强制创建
(3)# ls /tmp/123
:返回test;
(4) # ls -ld /tmp/123/test
:返回目录属性,创建时间等;-d:将目录像文件一样显示,而不是显示其下的文件;-l:列出文件的详细信息。
3.命令rmdir
删除空目录,后面可以是一个目录,也可以是多个目录(用空格分隔)。注意只能删除目录,不能删除文件。(这里也可以加-p,但是还是只能删除空目录)
# ls /tmp/123
test
# rmdir /tmp/123
会显示删除失败,目录非空
# rmdir tmp/123/test
# ls /tmp/123
#(已删除,无返回值)
4.命令rm
可通过命令man rm获取它的详细帮助信息。不仅可以删空目录,还可以删非空目录。
- -r :删除目录用的选项;(会询问你是否删除)
- -f:表示强制删除;(不会询问,直接删除。若目录本不存在,不会报错;若目录存在,会报错,所以最好加上r变成-rf)
rm -rf命令后面不能加“/”,否则会把系统文件全部删除!!
二、环境变量PATH
使用命令时,直接打出命令,而没有使用这些命令的绝对路径的原因是环境变量PATH在起作用。
1.了解PATH
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
这里的echo用来输出 $ PATH的值,$表示变量的前缀符号。
2.若更改了命令的路径到/root目录下,比如说ls的路径;
# mv /usr/bin/ls /root/
# ls
会报错,显示没有该文件或目录;
解决方法:①将/root这个路径加入到$/PATH中;
# PATH= $PATH:/root
②使用绝对路径;
# /root/ls
③将ls文件还原;
# mv /root/ls /usr/bin/
3.命令cp
复制的命令;如把test1复制成test2,则命令为cp test1 test2。
- -r:如果要复制一个目录,则必须加-r选项(类似与rm)。
- -i:安全选项,若遇到一个已存在的文件,会询问是否覆盖(与rm类似)。
- touch 111:创建这个文件,如果有这个文件的话则改变该文件的访问时间。
4.命令mv
命令格式为:mv 【选项】 【源文件或目录】 【目标文件或目录】。
(1)目标文件是目录或者文件,但该目录不存在;
# mkdir a b
ls
# a b
# mv a c
# ls
# b c
(2)目标文件是目录或者文件,但该目录存在;
# mkdir a b
# ls
# a b
# mv a b
# ls
# b
# ls b
# a
三、几个与文档相关的命令
1.命令cat
可不加任何选项,直接跟文件名,然后查看文件内容。
- -n:查看文件时,把行号也显示出来。
# echo ‘111 $’ > test
# echo ‘222 $’ >> test
# cat -n test
1 111
2 222
使用“>”时,若文件中有内容则会删除原内容编入新内容,而使用“>>”则不会删除原内容。
- -A:显示所有内容,摆阔特殊字符。
# cat -n test
111 $
222 $
2.命令tac
与cat相反,显示内容为行的倒叙。
# tac test
222
111
3.命令more
查看文本内容,后面直接跟文件名,内容过多可使用。按空格键可看下一屏,按Ctrl+D(+F)可向上(向下)翻屏。提前退出按q键即可。
4.命令less
作用与more一样,但命令比more多一些。空格翻页;j键向下移动一行;k键向上移动。使用more和less查看文件时,可按/键并输入你想搜索的字符串比如root,然后回车就可以查找了;如果时多个字符串,可按n键显示下一个。(可用?键代替/键。不同的是/时当前行向下搜索,而?是当前行向上搜索)
5.命令head
用于显示文件前10行,后面直接跟文件名;如果加-n选项,则显示前几行。
6.命令tail
用于显示文件后10行,后面直接跟文件名;如果加-n选项,则显示后几行。
#tail -f:动态显示文件最后10行。若文件内容不断增加可直观查看。
四、文件的所有者和所属组
所有者:文件的拥有者;
所属组:这个文件属于哪一个用户组;
如果想要一个test文件能被a、b看到,则把a、b拉到同一个所属组,在所属组内创造一个test文件即可;
五、Linux文件属性
- 第1列:①d:该文件为目录;
②-:该文件为普通文件;
③l:链接文件;(link file)
④b:块设备;例如磁盘分区;
⑤c:串行端口设备文件(字符设备文件);例如键盘、鼠标…
⑥s:套间字文件;用于进程之间的通信
文件类型后9位,每3位为一组。 - 第2列:表示该文件占用的节点,如果是目录,那这个数值与该目录下子目录数量有关。
- 第3列:表示该文件的所有者;
- 第4列:表示该文件的所属组;
- 第5列:表示该文件的大小。
- 第6、7、8列:表示文件最后一次被修改的时间;月份、日期、时间。
- 第9列:表示文件名。
六、更改文件的权限
1.命令chgrp
①更改文件所属组,格式为:chgrp 【组名】 【文件名】。
②更改目录所属组,格式为:chgrp 【组名】 【目录名】。 它只改变了目录本身,而目录下的文件并没有更改。如果想级联更改子目录及子文件,加-R选项即可实现。
2.命令chown
更改文件的所有者,格式为:chown 【-R】 【账户名 文件名】 或者 chown 【-R】 【账户名:组名 文件名】
3.命令chmod
①格式为:chmod 【×××(权限)】 【文件名】 或者 chmod 【u=…,o=…,g=…(属 性)】 【文件名】
②第一组代表的是这个文件的所有者对这个文件有什么样的权限
第二组代表的是这个文件的所有者同组的人对这个文件有什么样的权限
第三组代表除组以外的其他人对这个文件有什么样的权限
③更改文件权限,具体规则为:r(可读)=4,w(可写)=2,x(可执行)=1,-(没有这 个权限)=0。属性u、g和o来分别表示user、group和others,a代表all(全部)。
④-R选项的作用等同于chown命令的-R选项,也表示级联更改。
4.命令umask
默认情况下,目录的权限为755,普通文件的权限值为644。为什么呢?其实与umask有关。(目录777-(022)umask,文件666-(022)umask,注意要转换成字母做减法,比较精准不容易出错)
①改变文件默认权限,格式为:# umask ×××(×代表数字)。
②一般使用者为umask为002,root的umask为002。
5.修改文件的特殊属性
(1)命令chattr
命令chattr的格式为:chattr 【±=】 【文件或者目录名】,其中+、-、=分别代表增加、减少、设定。
- A:表示文件或目录的atime将不可修改;
- s:会将数据同步写入磁盘中;
- a:表示只能追加不能删除,非root用户不能设定该属性;
- ④c:表示自动压缩该文件,读取时会自动解压;
- ⑤i:表示文件不能删除、重命名、设定链接、写入以及新增数据。
(2)命令lsattr
用于读取文件或者目录的特殊权限,格式为:lsattr 【-aR】 【文件/目录名】
- -a:连同隐藏文件一同列出;
- -R:连同子目录的数据一同列出。
七、在Linux下搜索文件
1.用which命令查找可执行文件
只能用来查找PATH环境变量中出现的路径下的可执行文件。
# which vi
/usr/bin/vi
2.用whereis命令查找文件
通过预先生成的一个文件列表库查找与给出的文件名相关的文件,格式为whereis 【-bms】 【文件名称】。
- -b:只查找二进制文件;
- -m:只查找帮助文件(在man目录下的文件);
- -s:只查找源代码文件;
3.用locate命令查找文件
类似与whereis。如果Linux没有这个命令,则可安装mlocate软件包。
4.用find搜索文件
- -atime +n/-n:表示访问或执行时间大于或小于n天的文件;
- -ctime +n/-n:表示写入、更改inode属性时间大于或小于n天的文件;
- -mtime +n/-n:表示写入时间大雨或小于n天的文件;
- -name filename:表示直接查找该文件名的文件;
- type filetype:表示通过文件类型查找文件。