.
代表此层目录
..
代表上一层目录
-
代表前一个工作目录
~
代表“目前用户身份”所在的主文件夹
~accout
代表accout这个用户的主文件夹(accout是个账号名称)
①所有目录下都会存在的两个目录,分别是.
和..
②根目录下也有.
和..
两个目录,不过根目录的上一层目录(..
)与根目录自己(.
)是同一个目录
pwd -P 显示实际的工作目录,而非连接文件本身的目录名
例:cd /var/mail , /var/mail 是一个连接文件
pwd -P
显示结果为:/var/spool/mail
ls -ld /var/mail
显示结果为:lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
① mkdir -m 配置文件案的权限,直接设置,不需要看默认权限(umask)
例:新建权限为rwx–x--x的目录:mkdir -m 711 test2
② mkdir -p 直接将所需的目录(包含上层目录)递归创建
例:mkdir test1/test2/test3 会报错,没有办法直接创建,但是使用mkdir -p test1/test2/test3 可以自行创建多层目录。
rmdir -p 连同上层“空的”目录一起删除
rmdir test1
rmdir -p test1/test2/test3 连同test1,test2一起删除
当我们在执行一个命令的时候,例如ls,系统会根据PATH的设置去每个PATH定义的目录下查询文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先查询到的同名命令先被执行。
①echo $PATH 列出执行命令时,系统的查询路径
②当执行一个命令报错提示无此命令时,可以通过绝对路径执行此命令,例如/sbin/ifconfig eth0
③将某一目录加入PATH中
PATH="$PATH":/root
-a:全部的文件,连同隐藏文件(开通为.的文件)一起列出来
-d:仅列出目录本身,而不是列出目录内的文件数据(❓❓❓什么意思)
-h:将文件容量以易读方式列出来(例如GB、KB等)
-l:列出长数据串,包含文件的属性和权限等数据
-r:将排序结果反像输出
-t:依时间排序
-a:相当于-pdr的意思(❓❓❓什么意思)
-i:若目标文件已经存在,在覆盖时会先询问操作的进行
-f:强制,若目标文件已经存在且无法开启(❓❓❓无法开启是啥意思),则删除后再尝试一次
-r:递归持续复制,用于目录的复制行为
-l:硬链接
-s:软链接,相当于建立了一个快捷方式
-d:复制链接文件的属性,相当于根据一个快捷方式又创建了一个快捷方式
①在默认条件中,cp的源文件与目的文件的权限时不同的,目的文件的所有者通常会是命令操作者本身。
②-r可以复制目录,但是文件与目录的权限可能会被改变,所以在备份的时候,为了不改变权限,可以使用-a命令
③将多个数据一次复制到同一个目录去,最后一个参数一定是目录,例如:cp ~/test1.php ~/test2.php /temp
例题:
只有管理员root才可以更改文件的所有者,即使是文件的所有者也不可以改变文件的所有者。所以vbird不能将拷贝后的文件修改所有者和用户组为root。
-i:互动模式,删除前询问
-r:递归删除
-f:强制删除
mv [-fui] source destination
mv [options] source1 source2 source3 ……directory
-u:若目标文件已经存在,且source比较新,才会更新(update)
mv的另一个用途就是“更改文件名”
在linux中rename也可以用来更改文件名。
basename /etc/sycconfig/network
结果为network
dirname /etc/sycconfig/network
结果为/etc/sycconfig
cat [-AbEnTv]
-b:列出行号,仅针对非空白行做行号显示,空白行不标行号
-n:打印出行号,连同空白行也有行号显示
-v:列出一些看不出来的特殊字符
由最后一行到第一行反向在屏幕上显示出来
-b a:表示无论是否为空行,也同样列出行号(类似cat -n)
-b t:如果有空行,空的哪一行不要列出行号(默认值)
-n ln:行号在屏幕的最左方展示
-n rn:行号在屏幕的最右方展示,且不加0
-n rz:行号在屏幕的最右方展示,且加0
-w:行号字段占用的位数
more只能向下翻页(按动空格键)
less可以上下翻页
在less模式中:
/字符串:向下查询“字符串”
?字符串:向上查询“字符串”
n:重复前一个查询(与/或者?有关)
N:方向重复前一个查询(与/或者?有关)
q:离开less模式
head -n 10 test.php 取出前十行
head -n -100 test.php 取出前面的所有行数,但不包含后面100行,如文件有141行,则只展示前41行,后100行不展示
tail -n 1 test.php 取出test前1行
tail -n +100 test.php 取出第100行以后的内容
例:取出文件的第11行到第20行
head -n 20 test.php| tail -n 10
先取出第1行到第20行,再取出倒数10行,也就是第11行到第20行
mtime:文件内容更新时间,ls -l 默认查看的是文件的ctime
ctime:文件状态更新时间,如修改了权限或者属性等,ls -l --time=ctime filename 查看文件的ctime
atime:文件内容被取用的时间,如使用cat命令读取文件内容,ls -l --time=atime filename 查看文件的atime
-a:仅修改访问时间atime
-m:仅修改mtime
-c:仅修改文件的时间,若文件不存在则不创建新文件
-d:后面可以接与修改的日期而不用目前的时间,也可以用–date=“日期或时间”
-t:后面可以接与修改的日期而不用目前的时间,格式为[YYMMDDhhmm]
例:touch -d “2 days ago” filename 文件的mtime和atime被修改为两天前,ctime为当前时间。
例:touch -t 0709150202 filename 文件的mtime和atime被修改为2007/09/15 2:02,ctime则是记录当前的时间
①如果touch后面接文件,则文件的三个时间都会被更新为目前的时间,若文件不存在,则会主动创建一个新的文件
②复制一个文件时,复制了所有属性,但也没有办法复制ctime这个属性,ctime可以记录这个文件最近的状态被改变的时间。
chattr [-+=] [ASacdistu] 文件或者目录名称
-a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才可以设置这个属性
-i:当设置i之后,这个文件不能被删除、改名、设置连接也无法写入或添加数据,对于系统安全性有相当大的帮助,只有root才可以设置这个属性
-a:将隐藏文件的隐藏属性也展示出来
-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据也一并展示出来
根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。
-a:将所有由PATH目录中可以找到的命令均列出,而不只第一个被列出的命令名称
可以根据参数查找二进制文件、说明文件在manual的文件等
locate [-ir] keyword
-i:忽略大小写
-r:后面可接正则表达式的显示方式
①Linux系统会将系统内的所有文件都记录在一个数据库文件里面,whereis和locate是从这个数据库文件中查找,而不是去硬盘中查找,所以比find命令更快,但是由于数据库更新有时间限制,所以刚刚创建的文件不会被查到。
②数据库的创建默认是每天执行一次,手动更新数据库命令为updatedb。
③updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件
④locate:依据/var/lib/mlocate内的数据库记载,找出用户输入的关键字文件名
find [PATH] [option] [action]
书中课后习题解析:https://blog.csdn.net/qq_39181280/article/details/83350370?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158600875819724848331039%2522%252C%2522scm%2522%253A%252220140713.130056874…%2522%257D&request_id=158600875819724848331039&biz_id=0&utm_source=distribute.pc_search_result.none-task-blog-blog_SOOPENSEARCH-2