Friday, December 12, 2008

Linux 档案与目录管理



  • 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。


  • 相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: 『cd ../man』这就是相对路径的写法啦!

常用的目录『符号』代表的意义








. 代表此层目录
.. 代表上层目录
~ 代表自己的家目录
~user 代表到 user 这个人的家目录

几个常用的指令:





    • cd 变换目录


    • pwd 显示目前的目录


    • mkdir 建立一个新目录


    • rmdir 删除一个里面是空的空目录


cd
语法[root @test /root ]# cd [相对路径或绝对路径]
参数说明:
路径有『相对路径』与『绝对路径』的分别,请千万小心啰!
范例:
[root @test /root]# cd ..       <==回到上一层目录
[root @test /root]# cd ../home     <==相对路径的写法
[root @test /root]# cd /var/www/html  <==绝对路径的写法
[root @test /etc]# cd         <==回到使用者的家目录
[root @test /etc]# cd ~         <==回到使用者的家目录!
[root @test /etc]# cd ~test      <==回到 test 这个使用者的家目录



一登入 Linux 系统后,root 会在 root 的家目录,亦即 /root 下,至于使用者会在预设的 /home/username 底下



家目录还有一个代码,那就是『 ~ 』符号!例如上面的例子可以发现,使用『 cd ~ 』可以回到个人的家目录里头去呢!此外,如果你的 Linux 主机当中有个 testing 的账号,你要到他的家目录去,可以下达『 cd ~testing』立刻去到 testing 的家目录啰!



pwd 语法:



root @test /root ]# pwd



范例:



[root @test root]# cd /home/test



[root @test test]# pwd /home/test <==显示目前你所在的目录呦!



mkdir 语法:



[root @test /root ]# mkdir [-mp] [目录名称]



参数说明:



-m :设定档案的权限喔!直接设定,不需要看 umask 这个内容的脸色!



-p :帮助你直接将上面的目录递归建立起来!



范例:



[root @test /root]# cd tmp



[root @test /tmp]# mkdir test<==建立名称为 test 的目录



[root @test /tmp]# mkdir -p test1/test2/test3/test4 <==直接建立 test2...等上层目录



[root @test /tmp]# mkdir -m 711 testqq <==建立权限为 711 的目录!



[root @test /tmp]# ll test*



drwxrwxr-x 2 test test 4096 Feb 6 20:47 test/



drwxrwxr-x 3 test test 4096 Feb 6 20:48 test1/



drwx--x--x 2 test test 4096 Feb 6 20:48 testqq/



rmdir 语法:



[root @test /root ]# rmdir [-p] [目录名称]



参数说明: -p :将上层的目录也删除吧!



范例:



[root @test /root]# rmdir test<==删除名称为 test 的目录



[root @test tmp]# ll



drwxrwxr-x 3 test test 4096 Feb 6 20:48 test1/



[root @test tmp]# rmdir test1



rmdir: `test1': Directory not empty



[root @test tmp]# rmdir -p test1/test2/test3/test4



[root @test tmp]$ ll



如果要将所有目录下的东西都杀掉呢?!这个时候就必须使用 rm -rf test 啰



环境变量 PATH




如果你将 ls 移动到 /root 底下的话,然后你自己本身也在 /root 底下,但是当你执行 ls 的时候,他就是不理你?怎么办?这是因为 PATH 没有 /root 这个目录,而你又将 ls 移动到 /root 底下了,自然系统就找不到可执行文件了,因此就会告诉你, command not found !那么该怎么克服这种问题呢?有两个方法,其一:直接将 /root 的路径加入 PATH 当中!如何增加?可以使用:  
PATH=”$PATH”:/root  这种方式来增加即可!另一种方式则是使用完整档名,亦即直接使用相对或绝对路径来执行,例如:  
/root/ls ./ls 因为在同一个目录中,而我们又知道在同一个目录中的目录符号为『 . 』,因此,就以上面的 ./ls 来执行也可以!这种执行方式以后您应该会很常见到才对! 
如果我有两个 ls 档案在不同的目录中,例如 /usr/local/bin/ls 底下与 /bin/ls 那么当我下达 ls 的时候,那个 ls 会被执行?那还用说,就找出 PATH 里面那个目录先被查询,则那个目录下的档案就会被先执行了!  
咦!既然如此的话,那么为何不要在 PATH 里面加入 . 这个目录,如此一来的话,不就可以直接在所在目录执行档案了吗?因为 . 代表所在目录嘛!是这样没错!但是有没有想过,如果某天,某个怪怪的使用者在 /tmp 里面写了一个 ls 的档案,偏偏他是有害的档案,那么当你在 /tmp 底下执行 ls 时,怎么办?!没错,可能会『中标』,所以啰,为了安全起见,不建议将『 . 』加入 PATH 的搜寻当中!



档案与目录管理:



ls 显示文件名称、属性等



cp 拷贝档案或目录



rm 删除档案或目录



mv 移动档案或目录



[root @test /root ]# ls [-ailS]



参数说明:



-a :全部的档案都列出(连同隐藏档)



-i :印出 inode 的值



-l :长的列出,连同档案大小的数据等等



-S :以档案大小排序



--color=never :不要显示颜色



--color=always :均显示颜色



--color=auto :由系统自行判断!



cp 语法:
[root @test /root ]# cp [-drsu] [来源档] [目的档]



参数说明:



-d     :在进行 copy 的时候,如果是 copy 到 link 档案,若不加任何参数,则预设情况中会将 link 到的源文件        copy 到目的地,若加 -d 时,则 link 档案可原封不动的将 link 这个快捷方式其拷贝到目的地!



-r     :可以进行目录的 copy 呦!



-s :做成连结档,而不 copy 之意!与 ln 指令相同功能!



-u, --update:如果来源档比较新,或者是没有目的档,那么才会进行 copy 的动作!可用于备份的动作中!



范例:



[root @test /root]# cp .bashrc bashrc <==将 .bashrc 拷贝成 bashrc 这个档案!



[root @test /root]# cp -r /bin /tmp/bin <==这个功能就好玩啦!这是用来 copy 整个目录的参数!



[root @test /root]# cp -s .bashrc bashrc <==将 .bashrc 建立一个连结档,档名为 bashrc



[root @test /root]# cp -u /home/.bashrc .bashrc <==先检查 /home/.bashrc 是否与 .bashrc 不同,如果不同的话就开始 copy 一份!如果相同则不做任何动作!



rm 语法:



root @test /root ]# rm [-fir] [檔名]



参数说明:



-i :提供使用者确认(这是默认值)



-r :循环,就是一直杀掉,直到没有东西为止的意思



-f :force ,就是强力杀掉啦!



范例:



[root @test /root]# cp .bashrc bashrc<==建立一个新档案,bashrc



[root @test /root]# rm bashrc <==会显示如下的提示: rm: remove `bashrc'?



[root @test /root]# mkdir testing



[root @test /root]# cp .bashrc testing



[root @test /root]# rmdir testing rmdir:



`testing': Directory not empty <==由于 testing 里面有 .bashrc ,所以砍不掉!



[root @test /root]# rm -rf testing <==持续删除该目录下的所有档案与目录

No comments: