1. 绝对路径与相对路径
> 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。
> 相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:『cd ../man』这就是相对路径的写法啦! 相对路径意指『相对于目前工作目录的路径!』 例:cd /etc 表示进入根目录下的etc目录,这是绝对路径; cd etc 表示进入当前目录下的etc目录,这两个etc不是一样的!
2. 目录说明
. 代表此层目录
.. 代表上一层目录 (根目录的. 与.. 属性完全一模一样,根目录的顶层.. 与他自己. 是同一个目录)
- 代表前一个工作目录
~ 代表『目前使用者身份』所在的家目录
~account 代表 account 这个使用者的家目录.
典型的目录操作指令:
[root@linux ~]# ./squid ---->出于安全考虑,PATH中的路径不包括当前目录,所以如要执行当前目录下指令要加 ./ !!!
[root@linux ~]# cd [相对路径或绝对路径] (最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号!)
[root@linux ~]# cd ~shmily_liu ----> 代表去到 shmily_liu 这个使用者的家目录,亦即/home/shmily_liu
[root@linux dmtsai]# cd ~ ----> 表示回到自己的家目录,亦即是 /root 这个目录
[root@linux ~]# cd ----> 没有加上任何路径,也还是代表回到自己家目录的意思!
[root@linux ~]# cd .. ----> 表示去到目前的上层目录,亦即是 /root 的上层目录的意思;
[root@linux /]# cd - ----> 表示回到刚刚的那个目录,也就是 /root
[root@linux ~]# cd /var/spool/mail ----> 绝对路径的写法!直接指定要去的完整路径名称!
[root@linux mail]# cd ../mqueue ----> 这个是相对路径的写法,我们由 /var/spool/mail 去 到/var/spool/mqueue 就这样写!
[root@linux ~]# pwd [-P] (-P: 显示出确实的路径,而非使用连结 (link) 路径)
[root@linux ~]# mkdir [-mp] 目录名称 -m: 设定档案的权限! 如: mkdir -m 711 test1
-p: 帮助你直接将所需要的目录递归建立起来! 如: mkdir -p ~/test1/test2/test3
[root@linux ~]# rmdir [-p]目录名称 (本指令只能删除空目录)
-p: 连同上层『空的』目录也一起删除
3. 执行文件路径的变量: $PATH
这个环境变量非常重要,当我们在执行一个指令的时候,系统会依照PATH的设定去每个PATH定义的路径下搜寻执行文件,包括各种指令。相关操作如下:
[root@linux ~]# echo $PATH (查看环境变量PATH)
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin (每个目录中间以冒号:分割,不留空格) 常用的ls指令就在/bin路径下,所以你在任何目录下都可以执行ls,因为通过$PATH就可以找到了。
[root@linux ~]# PATH="$PATH":/root (增加路径到PATH变量中)
详细内容在shell部分讲。
4. 档案与目录管理
[root@linux ~]# ls [-aAdfFhilRS]目录名称 -l: 长数据串行出,包含档案的属性等等数据;
-R: 连同子目录内容一起列出来;
-S: 以档案容量大小排序;
-t: 依据档案时间排序;
-h: 将档案容量以较容易理解的方式列出来;
>复制、移动与删除: cp, rm, mv
[root@linux ~]# cp [-adfilprsu] source destination[root@linux ~]# cp [options] source1 source2 source3 .... directory -a :相当于 -pdr 的意思;
-d :原来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u :若 destination 比 source 旧才更新 destination
注意: 当我们在进行备份的时候,某些需要特别注意的特殊权限档案,例如密码文件/etc/shadow)以及一些设定档,就不能直接以 cp 来复制,而必须要加上 -a 或者是 -p 等等可以完整复制档案权限的参数才行!另外,如果您想要复制档案给其它的使用者,也必须要注意到档案的权限(包含读、写、执行以及档案拥有者等等), 否则,其它人还是无法针对您给予的档案进行修订的动作. 如果没有加上任何参数时,复制的是源文件,而非连结文件的属性!
另外从参数可见,cp 这个指令的用途除了单纯的复制之外,还可以建立连结档 (就是快捷方式),比对两档案的新旧而予以更新,以及复制整个目录等等的功能!
[root@linux ~]# rm [-fir]档案或目录 -f :就是 force 的意思,强制移除;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除!最常用在目录的删除
[root@linux ~]# mv [-fiu] source destination
[root@linux ~]# mv [options] source1 source2 source3 .... directory -f :force 强制的意思,强制直接移动而不询问;
-i :若目标档案 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在,且 source 比较新,才会更新 (update)
这个指令也可以直接拿来作更名 (rename) 的动作! 如:[root@linux tmp]# mv mvtest mvtest2 相当于rename指令的功能!
5. 获取路径的文件名称与目录名称
[root@linux ~]# basename /etc/sysconfig/networknetwork <== 很简单!就取得最后的文档名~
[root@linux ~]# dirname /etc/sysconfig/network/etc/sysconfig <== 取得的变成目录名了!
6. 档案内容查阅 (具体参数见man)
cat : 由第一行开始显示档案内容
tac : 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl : 显示的时候,顺道输出行号!
more : 一页一页的显示档案内容 (只能向后搜索)
less : 与 more 类似,但是比 more 更好的是,他可以往前翻页!(可以向前/后搜索)
head : 只看头几行
tail : 只看尾巴几行
od : 以二进制的方式读取档案内容!
7. 资料撷取
[root@linux ~]# head [-n number] 档案 (显示文件的最前n行,默认n=10)
[root@linux ~]# tail [-n number] 档案 (显示文件的最后n行,默认n=10)
8. 非纯文字文件的读取: od ---->这个对我们有用,比如读取二进制或16进制文件
[root@linux ~]# od [-t TYPE] 档案-t : 后面可以接以下各种类型 (TYPE)的输出,例如:
a : 利用预设的字符来输出;
c : 使用 ASCII 字符来输出;
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes;
f[size] : 利用浮点数值(floating)来输出数据,每个数占用 size bytes;
o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes;
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes;
9. 修改档案时间与建立新档: touch
这个指令最常被使用的情况是: 建立一个空的档案; 将某个档案日期(三种日期:档案访问时间atime/档案修改时间mtime/档案属性权限变动时间ctime)修订为目前 (mtime与atime)
[root@linux ~]# touch [-acdmt] 档案(文件,不是目录!)
-a :仅修订 access time;
-c :仅修改时间,而不建立档案;
-d :后面可以接日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接时间,格式为[YYMMDDhhmm]
10. 档案预设权限: umask ---->指定目前使用者在建立档案或目录时候的属性权限默认值
[root@linux ~]# umask [-S] (读取当前user创建目录(mkdir)和文件(touch)的默认权限值. 不加参数S,显示的是要减去的权限分数)
[root@linux ~]# umask 002 (为当前user设置创建目录(mkdir)和文件(touch)默认权限值)
11. 档案隐藏属性
[root@linux ~]# chattr [+-=][ASacdistu] 档案或目录名称 ------>(设定档案隐藏属性)
+ :增加某一个特殊参数,其它原本存在参数则不动。
- :移除某一个特殊参数,其它原本存在参数则不动。
= :设定一定,且仅有后面接的参数
S :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失!
a :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root才能设定这个属性。对于log文件有用。
c :这个属性设定之后,将会自动的将此档案压缩,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的)
d :当dump(备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)不具有dump功能
i : 这个 i 可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法写入或新增资料!』对于系统安全性有相当大的帮助!
[root@linux ~]# lsattr [-aR] 档案或目录 ------>(显示档案隐藏属性)
-a :将隐藏文件的属性也秀出来;
-R :连同子目录的数据也一并列出来!
12. 档案类型预判断: file ----->
如果你想要知道某个档案的基本数据,例如是属于 ASCII 或者是 data 档案,或者是 binary ,且其中有没有使用到动态函式库 (share library) 等等的信息,就可以利用 file 这个指令来预作检阅!
[root@linux ~]# file 检阅对象文件
13. 档案的搜寻
[root@linux ~]# which [-a] command(指令) -a :将所有可以找到的指令均列出,而不止第一个被找到的指令名称
[root@linux ~]# whereis [-bmsu] 档案或目录名 -b : 只找 binary 的档案
-m : 只找在说明文件 manual 路径下的档案
-s : 只找 source 来源档案
-u : 没有说明档的档案!
[root@linux ~]# locate filename(可以只是部分文件名)
跟whereis一样,不搜索硬盘,只搜索数据库,故可能新建的档案会搜索不到,因为数据库一天只更新一次!
[root@linux ~]# find [PATH] [option] [action] find根据不同的参数来给予档案的搜寻功能,其参数功能非常强大,具体使用时还是前面两个指令好!
(秩名)