文件与目录管理

常见目录处理指令

cd :移动到指定目录下
pwd :显示目前所在的目录
mkdir :创建一个新的目录
rmdir :删除一个空的目录
ls :显示当前目录下所有的目录和文件
rm :删除文件或目录
mv :移动文件与目录,或更名

cd [相对路径或绝对路径]
# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰!
cd ~dmtsai
# 代表去到 dmtsai 这个使用者的主文件夹,亦即 /home/dmtsai
cd ~
# 表示回到自己的主文件夹
cd
# 没有加上任何路径,也还是代表回到自己主文件夹的意思
cd ..
# 表示去到目前的上层目录
cd -
# 表示回到刚刚的那个目录
cd /var/spool/mail
# 绝对路径,直接指定要去的完整路径名称!
cd ../postfix
# 这个是相对路径,由/var/spool/mail 去到/var/spool/postfix

pwd 指令

pwd [-P]
-P :显示出确实的路径,而非使用链接 (link) 路径。

mkdir 指令

mkdir [-mp] 目录名称
选项与参数:
-m :设置文件的权限喔!直接设置,不需要看默认权限的脸色
-p :帮助你直接将所需要的目录(包含上层目录)递回创建起来!

rmdir 指令

rmdir [-p] 目录名称
选项与参数:
-p :连同“上层”“空的”目录也一起删除

ls 指令

ls [-a] 文件名或目录名称..
选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-A :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-f :直接列出结果,而不进行排序 (ls 默认会以文件名排序!)
-h :将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来;
-l :长数据串行出,包含文件的属性与权限等等数据;(常用)
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;

rm 指令

rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!

范例一:将在 cp 的范例中创建的 bashrc 删除掉!
cd /tmp
rm -i bashrc
rm: remove regular file `bashrc'? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的文件名!

范例二:通过万用字符*的帮忙,将/tmp下面开头为bashrc的文件名通通删除:
rm -i bashrc*
# 注意那个星号,代表的是 0 到无穷多个任意字符喔!很好用的东西!

范例三:将 cp 范例中所创建的 /tmp/etc/ 这个目录删除掉!
rmdir /tmp/etc
rmdir: failed to remove '/tmp/etc': Directory not empty <== 删不掉啊!因为这不是空的目录!
[root@study tmp]# rm -r /tmp/etc
rm: descend into directory `/tmp/etc'? y
rm: remove regular file `/tmp/etc/fstab'? y
rm: remove regular empty file `/tmp/etc/crypttab'? ^C <== 按下 [crtl]+c 中断
.....(中间省略).....
# 因为身份是 root ,默认已经加入了 -i 的选项,所以你要一直按 y 才会删除!
# 如果不想要继续按 y ,可以按下“ [ctrl]-c ”来结束 rm 的工作。
# 这是一种保护的动作,如果确定要删除掉此目录而不要询问,可以这样做:
\rm -r /tmp/etc
# 在指令前加上反斜线,可以忽略掉 alias 的指定选项喔!
# 拜托!这个范例很可怕!你不要删错了!删除 /etc 系统是会挂掉的!

mv 指令

选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)

范例一:复制一文件,创建一目录,将文件移动到目录中
cd /tmp
cp ~/.bashrc bashrc
mkdir mvtest
mv bashrc mvtest
# 将某个文件移动到某个目录去,就是这样做!

范例二:将刚刚的目录名称更名为 mvtest2
mv mvtest mvtest2 <== 这样就更名了!简单~
# 其实在 Linux 下面还有个有趣的指令,名称为 rename ,
# 该指令专职进行多个文件名的同时更名,并非针对单一文件名变更,与mv不同。请man rename。

范例三:再创建两个文件,再全部移动到 /tmp/mvtest2 当中
cp ~/.bashrc bashrc1
cp ~/.bashrc bashrc2
mv bashrc1 bashrc2 mvtest2
# 注意到这边,如果有多个来源文件或目录,则最后一个目标文件一定是“目录!”
# 意思是说,将所有的数据移动到该目录的意思!