Linux 文件与目录管理
目录与路径
相对路径与绝对路径
建议如果在写程序(shell scripts)来管理系统,务必使用绝对路径,虽麻烦但不出错
目录相关操作
符号 | 含义 |
---|---|
. | 代表此层目录 |
. . | 代表上一层目录 |
- | 代表前一个工作目录 |
~ | 代表‘目前用户身份’ 所在的家目录 |
~acount | 代表account这个用户的家目录 |
tips:
根目录有没有上层目录存在?有的,用ls -al查询,可以看到根目录下存在.和…两个目录,仔细查阅可发现这两个目录属性与权限完全一致,这代表根目录的上一层(…)与根目录自己(.)是同一个目录。
cd(change directory)
cd ~dmtsai #去dmtsai这个用户的家目录
cd ~ #回到自己的家目录
cd #没有加上任何路径,表示回到自己家目录
cd - #回到刚刚的那个目录
pwd(print working directory)
pwd #单纯显示当前的工作目录
pwd -P #加上-P后,会不以连结文件的数据显示,而是显示正确的完整路径
书里给的例子是CentOS 7.x的,如果cd到/var/mail目录下pwd,返回的是/var/mail;但是如果是pwd -P,返回的是/var/spool/mail,不以连结文件的数据显示,而是显示完整的路径
ls -ld /var/mail返回的是
lrwxrwxrwx. 1 root root 10 May 4 17:51 /var/mail -> spool/mail
mkdir(make directory)
mkdir -p test1/test2/test3/test4
#建立多层目录时需要添加-p,否则找不到test4前面的一层目录,就会报错
#但是不建议常用,因为打错字了会搞得乱七八糟
mkdir -m 711 test2 #建立一个权限为rwx--x--x的目录
#默认权限与umask有关,后面会讲
rmdir(remove directory)
rmdir test1/test2/test3/test4 #删除test4,注意只有为空的时候才能删
rmdir -p test1/test2/test3/test4 #连同上层的空目录一次删除
rmdir -r test1 #即使有内容也删
关于执行文件路径的变量:$PATH
echo $PATH #用root身份和用其他用户身份搜寻时,返回的是不一样的结果
PATH="${PATH}:/root" #将/root加入到PATH中
- 不同身份使用者预设的 PATH 不同,默认能够随意执行的指令也不同(如 root 与 dmtsai)
- PATH 是可以修改的
- 使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻 PATH 来的正确
- 指令应该要放置到正确的目录下,执行才会比较方便
- 本目录(.)最好不要放到 PATH 当中
文件与目录管理
文件与目录的检视:ls
范例一:将家目录下的所有文件列出来(含隐藏文件)
ls -al ~
目录文件都以深蓝色显示出来
范例二:不显示颜色,但在文件名末显示出该文件名代表的类型
ls -al ~alF --color=never ~
*表示可执行文件 /表示目录 =表示socket文件 |表示FIFO文件
范例三:完整的呈现文件修改时间
ls -al --full-time ~
复制、删除与移动:cp,rm,mv
cp(copy) 复制文件或目录
cp [-adfilprsu] source destination
比较常用的选项有
- -a
- -i 如果目标存在,覆盖时会先询问
- -p 连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)
- -r 递归复制(常用)
范例一:用root身份,将家目录下的
范例二:变换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性