一、目录与路径
相对路径与绝对路径
- 绝对路径:路径的写法“一定由根目录 / 写起”,例如: /usr/share/doc 这个目录。
- 相对路径:路径的写法“不是由 / 写起”,例如由 /usr/share/doc 要到 /usr/share/man 下面时,可以写成: “cd ../man”这就是相对路径的写法啦!相对路径意指“相对于目前工作目录的路径!”
目录的相关操作
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前使用者身份”所在的主文件夹
~account 代表 account 这个使用者的主文件夹(account是个帐号名称)
关于可执行文件路径的变量: $PATH
我们知道查阅文件属性的指令ls完整文件名为:/bin/ls(这是绝对路径),但是我们在任何目录下输入 ls 就一定可以显示出一些讯息,这是因为环境变量 PATH 的帮助所致。
当我们在执行一个指令的时候,举例来说“ls”好了,系统会依照PATH的设置去每个PATH定义的目录下搜寻文件名为ls的可可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可可执行文件,那么先搜寻到的同名指令先被执行!
echo $PATH:
[**@someone ~]$ echo $PATH
/usr/local/jdk1.8.0_111/bin:/usr/local/jdk/bin:/usr/local/bin:/usr/bin/mysql:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
无论是root还是其它用户都有 /bin 或 /usr/bin, 这个目录在PATH变量内,所以当然就能够在任何地方执行ls来找到/bin/ls可执行文件。
但是对于我们自己解压安装的某些程序包,如某些web容器Tomcat或者Jetty,当我们要执行bin目录的某些sh脚本,需要使用绝对路径或者./start.sh这样的相对路径。
二、文件内容查阅
常见的文件内容查阅命令:
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
od 以二进制的方式读取文件内容!
直接检视
- cat
[root@study ~]# cat [-AbEnTv]
选项与参数:
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
- tac(反向展示)
- nl(添加行号打印)
[root@study ~]# nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在屏幕的最左方显示;
-n rn :行号在自己字段的最右方显示,且不加 0 ;
-n rz :行号在自己字段的最右方显示,且加 0 ;
-w :行号字段的占用的字符数。
nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
可翻阅检视
- more
空白键: 代表向下翻一页;
Enter : 代表向下翻“一行”;
/字串 : 代表在这个显示的内容当中,向下搜寻“字串”这个关键字;
:f : 立刻显示出文件名以及目前显示的行数;
q : 代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
- less
空白键 : 向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] : 向上翻动一页;
/字串 : 向下搜寻“字串”的功能;
?字串 : 向上搜寻“字串”的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
g :前进到这个数据的第一行去;
G :前进到这个数据的最后一行去 (注意大小写);
q :离开 less 这个程序;
less 的用法比起 more 又更加的有弹性,在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件。
数据撷取
- head (取出前面几行)
[root@study ~]# head [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
[root@study ~]# head /etc/man_db.conf
# 默认的情况中,显示前面十行!若要显示前 20 行,就得要这样:
[root@study ~]# head -n 20 /etc/man_db.conf
- tail (取出后面几行)
[root@study ~]# tail -n 20 /etc/man_db.conf
范例一:如果不知道/etc/man_db.conf有几行,却只想列出100行以后的数据时?
[root@study ~]# tail -n +100 /etc/man_db.conf
范例二:持续侦测/var/log/messages的内容
[root@study ~]# tail -f /var/log/messages
<==要等到输入[crtl]-c之后才会离开tail这个指令的侦测!
通常用这个tail来刷日志。
三、命令与文件查询
脚本名的查询
- which(寻找“执行文件”)
根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。所以,重点是找出执行文件而已。
文件名的查找
因为 whereis 与 locate 是利用数据库来查找数据,所以速度相当快,find 要实际查询硬盘。
- whereis(寻找特定文件)
-b: 只找二进制格式的文件
-m: 只找在说明文件 manual 路径下的文件
-s: 只找 source 源文件
-u: 查找不在上述三个选项当中的其他特殊文件
- locate
locate 寻找数据是由已创建的数据库 /var/lib/mlocate/ 里面的数据所查找的,而数据库的创建默认是每天执行一次,新建的文件直接查找会找不到,需要手动更新数据库,直接输入“updatedb”就可以了。
- find
与时间有关的参数:
-mtime n : n为数字,意义为在n天之前的“一天之内”被更改过的文件
-mtime +n : 列出在n天之前的(不含n本身)被更改过的文件名
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名
-newer file: file为一个存在的文件,列出此file还有新的文件名
时间轴表示:
|4|
-4|---------->
<----------|+4
<------7-6-5-4-3-2-1-now--------
范例:
# 将过去系统上面24小时内有改动的文件列出
find / -mtime 0
# 寻找 /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出
find /etc -newer /etc/passwd
与用户或用户组名有关的参数:
-uid n: n为数字,这个数字是用户的账号ID,即UID,这个UID是记录在/etc/passed 里面与账号名称对应的数字
-gid n: n为数字,这个数字是用户组名的ID,即GID,这个GID记录在/etc/group中
-user name: name为用户账号名称
-group name: name为用户组名
-nouser: 寻找文件的所有者不存在/etc/passwd 的人
-nogroup: 寻找文件的所有用户组不存在于 /etc/group 中的文件
范例:
# 查找/home 下面属于 vbird 的文件
# 可以利用这个命令将属于某个用户的所有文件都找出来
find /home -user vbird
# 查找系统中不属于任何人的文件
# 通过这个命令可以找出那些不太正常的文件
find / -nouser
与文件权限及名称有关的参数:
-name filename: 查找文件名为 filename 的文件
-size [+-]SIZE: 查找比SIZE还要大(+)或小(-)的文件,这个SIZE的规格有:c-byte k-1024bytes
-type TYPE: 查找文件的类型为TYPE的,类型主要有:一般正规文件(f)、设备文件(b,c)、目录文件(d)、连接文件(l)、socket(s)、FIFO(p)等
-perm mode: 查找文件权限“刚好等于mode的文件” mode类似chmod的属性值,如-rwxr-xr-x的属性值为4755