您的位置:首页 > 运维架构 > Linux

linux学习(5) cd mkdir rmdir $PATH

2014-12-22 17:54 155 查看
cd (变换目录)

我们知道vbird这个使用者的家目录是/home/vbird/,而root家目录则是/root/,假设我以root身份在 Linux系统中,那么简单的说明一下这几个特殊的目录的意义是:

[root@www ~]# cd [相对路径或绝对路径]
# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号罗!
[root@www ~]# cd ~vbird
# 代表去到 vbird 这个使用者的家目录,亦即 /home/vbird
[root@www vbird]# cd ~
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www ~]# cd
# 没有加上任何路径,也还是代表回到自己家目录的意思喔!
[root@www ~]# cd ..
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www /]# cd -
# 表示回到刚刚的那个目录,也就是 /root 罗~
[root@www ~]# cd /var/spool/mail
# 这个就是绝对路径的写法!直接指定要去的完整路径名称!
[root@www mail]# cd ../mqueue
# 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/mqueue 就这样写!
pwd (显示目前所在的目录)
[code][root@www ~]# pwd [-P]
选项与参数:
-P  :显示出确实的路径,而非使用连结 (link) 路径。

范例:单纯显示出目前的工作目录:
[root@www ~]# pwd
/root   <== 显示出目录啦~

范例:显示出实际的工作目录,而非连结档本身的目录名而已
[root@www ~]# cd /var/mail   <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail         <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail   <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
mkdir (创建新目录)
[root@www ~]# mkdir [-mp] 目录名称
选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!

范例:请到/tmp底下尝试创建数个新目录看看:
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test    <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory       <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4
# 加了这个 -p 的选项,可以自行帮你创建多层目录!

范例:创建权限为rwx--x--x的目录
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
# 仔细看上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。
# 那么你的默认属性为何?这要透过底下介绍的 umask 才能了解喔! ^_^
rmdir (删除『空』的目录)
[root@www ~]# rmdir [-p] 目录名称
选项与参数:
-p :连同上一级『空的』目录也一起删除

范例:将於mkdir范例中创建的目录(/tmp底下)删除掉!
[root@www tmp]# ls -l   <==看看有多少目录存在?
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test   <==可直接删除掉,没问题
[root@www tmp]# rmdir test1  <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l        <==您看看,底下的输出中test与test1不见了!
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
# 瞧!利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除~
# 不过要注意的是,这个 rmdir 仅能『删除空的目录』喔!
关於运行档路径的变量: $PATH经过第六章FHS的说明后,我们知道查阅文件属性的命令ls完整档名为:/bin/ls(这是绝对路径),那你会不会觉得很奇怪:『为什么我可以在任何地方运行/bin/ls这个命令呢? 』为什么我在任何目录下输入 ls 就一定可以显示出一些信息而不会说找不到该 /bin/ls 命令呢?这是因为环境变量 PATH 的帮助所致呀!
当我们在运行一个命令的时候,举例来说『ls』好了,系统会依照PATH的配置去每个PATH定义的目录下搜寻档名为ls的可运行档,如果在PATH定义的目录中含有多个档名为ls的可运行档,那么先搜寻到的同名命令先被运行!
现在,请下达『echo $PATH』来看看到底有哪些目录被定义出来了?echo有『显示、印出』的意思,而 PATH 前面加的 $ 表示后面接的是变量,所以会显示出目前的 PATH !
范例:先用root的身份列出搜寻的路径为何?
[root@www ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin
:/bin:/usr/sbin:/usr/bin:/root/bin  <==这是同一行!

范例:用vbird的身份列出搜寻的路径为何?
[root@www ~]# su - vbird
[vbird@www ~]# echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/vbird/bin
# 仔细看,一般用户vbird的PATH中,并不包含任何『sbin』的目录存在喔!

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: