声明:本文基于《鸟哥的 Linux 私房菜》 基础学习篇(第四版)书中第五、六章,本博客内容为书中内容总结、提炼。所有命令均取于该书。
绝对路径:一定是由根目录/
写起,比如:/usr/share/doc
这个目录。
相对路径:不是由/
写起,例如由/usr/share/doc
要到/usr/share/man
下面时,就可以写成:cd ../man
,这就是相对路径的写法,相对路径意指相对于当前工作目录的路径。
建议:能使用绝对路径就使用绝对路径。
首先要知道切换目录的命令是 cd
。其次,几个特殊的目录也要记住:
. 代表当前目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表当前使用者身份的家目录
~account 代表 account 这个使用者的家目录
例如:返回上一层目录命令:cd -
需要注意的是:在所有的目录下面都会存在两个目录,分别是 .
和 ..
,分别代表此层与上层目录的意思。
其次是掌握几个常见处理目录的命令:
cd 切换目录
pwd 显示当前目录
mkdir 建立一个心目录
rmdir 删除一个空目录
cd
(change directory,切换目录)cd [绝对路径或相对路径]
;cd ~
或 cd
:回到家目录;cd ..
:回到上层目录;cd -
:回到刚刚的目录,也就是回到进现在这个目录之前的目录。pwd
(显示当前所在的目录)pwd
:单纯的显示当前目录;
pwd -P
:显示出真正的目录,而非使用链接(link)路径。
解释:这个命令不会显示当前目录下的链接类型的文件,即以l
开头的文件类型,而是会显示此链接指向的真正的文件路径。
mkdir
(创建目录)mkdir [-mp] 目录名称
:
选项与参数:
-m
:设置文件的权限,直接设置,不使用默认权限(umask);
-p
:帮助你直接将所需要的目录(包含上一级目录)递归创建。
使用案例:
权限的:mkdir -m 777 demo
,使用改命令创建出来的demo
文件夹的权限就是 drwxrwxrwx
。
[root@localhost a]# ls
[root@localhost a]# mkdir -m 777 demo
[root@localhost a]# ls
demo
[root@localhost a]# ls -al
total 0
drwxr-xr-x. 3 root root 18 Dec 14 15:04 .
drwxr-xr-x. 3 root root 48 Dec 14 14:55 ..
drwxrwxrwx. 2 root root 6 Dec 14 15:04 demo
[root@localhost a]#
分析:这个目录的权限是:
drwxrwxrwx
,其中第一个字母 d 的意思表名这是个目录,后面的九个字符可以看做是三组rwx,三组对应二进制的数字就是000 000 000
,每组可表示的十进制数据就是0,1,2,4,5,6,7
。不同的数字就可以表示不同位置上是有值得。777 即代表三个值都有。假如是712则代表是drwx--x-w-
。
假如直接使用 mkdir a/b/c
,创建a、b、c这个目录是创建不了的。需要使用mkdir -p a/b/c
才可以。
rmdir
(删除空目录)rmdir [-p] 目录名称
:
选项和参数:
-p
:连同上层空的目录也一起删除。
ls
(文件与目录的查看)ls [-aAdfFhilnrRSt] 文件名或目录名称
ls [--color={never,auto,always}] 文件名或目录名称
ls [--full-time]
选项与参数:
-a
:全部的文件,连同隐藏文件(开头为.
的文件)一起列出来(常用);
-A
:全部的文件,连同隐藏文件,但不包括.
,..
两个目录;
-d
:仅列出目录本身,文而不是列出目录内的文件数据(常用);
-f
:直接列出结果,而不进行排序(ls
默认会以文件名称排序);
-F
:根据文件、目录等信息,给予附加数据结构,例如:* 代表可执行文件;/ 代表目录;= 代表 socket 文件;| 代表 FIFO文件;
-h
:将文件容量以人类较易读的方式(GB、KB等)列出来;
-i
:列出 inode 号码
-l
:详细信息显示,包含文件的属性与权限等数据(常用);
-n
:列出 UID 与GID 而非使用者与用户组的名称;
-r
:将排序结果反向输出,例如:原本文件名由小到大,反向即由大到小;
-R
:连同子级目录内容一起列出来,等于该目录下的所有文件都会显示出来;
-S
:以文件容量大小排序,而不是用文件名排序;
-t
:以时间排序,而不是用文件名;
--color-never
:不要依据文件特性给予颜色显示;
--color-always
:显示颜色;
--color-auto
:让系统自动依据设置来判断是否给予颜色设置;
--full-name
:以完整的时间模式(包含年、月、日、时、分)输出;
--time={atime,ctime}
:输出 access 时间或改变权限属性时间(ctime),而非内容修改时间(modification time)。
ls
的参数那么多,常用的也就那么几个。需要注意的一个地方是:有一些发行版,直接将ls -l
简化成ll
。
cp
(copy 复制)cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [options] 源文件1 源文件2 源文件3... 目标目录
选项与参数:
-a
:相当于 -dr --preserve=all
的意思(常用);
-d
:若源文件为连接we年的属性(link file),则复制连接文件属性而非文件本身;
-f
:为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次;
-i
:若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用);
-l
:进行硬链接(hard link)的链接文件建立,而非复制文件本身;
-p
:连同文件的属性(权限、用户、时间)一起复制偶去,而非使用默认属性(备份常用);
-r
:递归复制,用于目录的复制操作(常用);
-s
:复制成为符号链接文件(symbolic link),亦即“快捷方式”文件;
-u
:destination 比 source 旧 才更新 destination,或 destination 不存在的情况下才复制;
--preserve=all
:除了 -p
的权限相关参数外,还加入 SELinux 的属性,links、xattr 等也复制;
最后要注意的是,如果源文件有两个以上,则最后一个目标文件一定要是“目录”才行。
即:
cp [options] 源文件1 源文件2 源文件3... 目标目录
rm
(删除文件或目录)rm [-fir] 文件或目录
选项好参数:
-f
:force 的意思,忽略不存在的文件,不会出现警告信息;
i
:交互模式,在删除前会询问使用者是否操作;
r
:递归删除,最常用于目录的删除,这是很危险的选项。
mv
(移动文件与目录,或重命名)mv [fiu] source destination
mv [options] source1 source2 source3... directory
选项和参数:
-f
:force 强制的意思,若目标文件已经存在,不会询问直接覆盖;
-i
:若目标文件存在,会询问;
-u
?:?若目标文件已存在,且 source 比较新,再回更新。
每个文件的完整文件名包含了前面的目录与最终的文件名,而每个文件名的长度考科一到达 255 个字符。我们通过反斜线(/)来辨别哪个是文件名哪个是目录名。
其实获取文件名或是目录名称,一般的用途实在程序里进行判断使用。
[root@localhost ~]# basename /etc/sysconfig/network # 获取文件名称
network
[root@localhost ~]# dirname /etc/sysconfig/network # 获取文件的目录
/etc/sysconfig
命令主要分四种:
直接查看一个文件的内容:
cat
、tac
、nl
;可一翻页查看文件的内容:
more
、less
;- 数据截取:
head
、tail
;非纯文本文件:
od
。
cat
(concatenate 直接查看)cat [-AbEnTv]
选项与参数:
-A
:相当于 -vET
的整合选项,可列出一些特殊字符而不是空白而已;
-b
:列出行号,空白行不标行号;
-E
:将结尾的换行符 $ 显示出来;
-n
:打出行号,空白行也打印行号;
-T
:将 [Tab]按键以 ^I
显示出来;
-v
:列出一些看不出来的特殊字符。
tac
(反向列示)这个可以顾名思义了,该名效果与cat
相反。-_-
nl
(添加行号打印)nl [-bnw] 文件
more
(一页一页翻动)当使用more 文件名
时,有以下几个按键可以使用:
less
(一页一页翻动)
man page
就是调用less
来显示说明文件的内容。
head
(数据截取,取出前几行)head [-n number] 文件
选项与参数:
-n
:后面接数据,代表显示几行的意思
tail
(数据截取,取出后面几行)tail [-n number] 文件
选项与参数:
-n
:后面接数据,代表显示几行的意思;
-f
:标识将持续刷新后面所接文件的内容,知道按下 Ctrl + c 退出。适合于实时查看日志文件的时候。
od
(非纯文本文件)例如 /usr/bin/passwd
这个执行文件的内容时,又该如何去读出信息呢?就是od
。
touch
touch [-acdmt] 文件
选项与参数:
-a
:仅自定义 access time;
-c
:仅修改文件的时间,文件不存在时不建立新文件;
-d
:后面可以接想自定义的日期,不一定是当日期,也可以使用--date=日期或时间
;
-m
:仅修改 mtime;
-t
:后面可以接想自定义的时间而不用非要是当前的时间,格式为{YYYYMMDDhhmm}。
which
(脚本文件的查找)which [-a] 命令
选项与参数:
-a
:将所有 PATH 目录下中可以找到的命令均解除,而不止第一个被找到的命令。
whereis
(文件的查找)whereis [-lbmsu] 文件名或目录名
选项与参数:
-l
:会去查找几个主要目录;
-b
:只找 binary(二进制)文件;
-m
:只找在说明文件 manual 路径下的文件;
-s
:只找 source 源文件;
-u
:查找不在三个项目当中的其他特殊文件。
locate / updatedb
locate [-iclSr] keyword
选项与参数:
i
:忽略大小写差异;
c
:不输出文件名,显示文件数量;
l
:仅输出几行的意思,例如输出 5 行:-l 5;
S
:输出 locate
所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等;
r
:后面可能接正则表达式的显示方式。
注意:使用
locate
查找数据特别快,这是因为locate
寻找的数据是由已创建的数据库/var/lib/mlocate
里面的数据所查到的。所以不直接去硬盘里读取数据,就当然很快了。那么使用
locate
有啥限制呢? 因为它是从数据库查找的,而数据库的建立默认是每天执行一次(每个 Linux 发行版可能不一样,CentOS 7.x 是每天更新一次数据库)。所以当你建立起来的文件,却在数据库更新之前查找该文件,那么locate
会告诉你找不到滴。当然也可以设置手动更新数据库。直接输入【updatedb】就可以。这个命令回去读取
/etc/updatedb.conf
这个配置文件的设置,然后再去硬盘里面进行查找文件名的操作,最后就更新到整个数据库文件。因为updatedb
会去查找硬盘,索引当你执行该命令时,可能会等待数分钟时间。
/etc/updatedb,conf
的设置去查找系统硬盘内的文件,并更新 /var/lib/mlocate
内的数据库文件;/var/lib/mlocate
内的数据库记录,找出用户所输入关键词的文件名。find
find [PATH] [option] [action]
选项与参数:
1、与时间有关的选项:共有 -atime、-ctime 与 -mtime,以 -mtime 为例:
? -mtime n:n 为数字,意义为在 n 天之前的【一天之内】被修改过内容的文件;
? -mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过内容的文件;
? -mtime -n:列出在 n 天之内(包含 n 天本身)被修改过内容的文件;
? -newer file:file为一个存在的文件,列出 file 还要新的文件。
暂略。
原文:https://www.cnblogs.com/kjgym/p/12041678.html