本篇主要讲述:
文件目录操作指令(mkdir,cp...);
basename与dirname;
文件与目录的默认权限与隐藏权限;
文件的搜寻指令(which,whereis,find);
文件内的过滤grep;
1、目录和文件管理
1.1 查看及切换目录
查看当前目录:pwd(print working directory)
切换工作目录:cd(change directory)
.代表当前目录
..代表上级目录
1.2 使用通配符
针对不确定的文档名称,以特殊字符表示
(1)*:任意多个任意字符
[root@A /]# ls /etc/*tab
[root@A /]# ls /etc/*.conf
[root@A /]# ls /boot/vm*
(2)?:单个字符
[root@A /]# ls /dev/tty?
[root@A /]# ls /dev/tty??
[root@A /]# ls /dev/tty???
(3)[a-z]:多个字符或连续范围中的一个,若无则忽略
[root@A /]# ls /dev/tty[3-8]
(4){a,min,xy}:多组不同的字符串,全匹配
[root@A /]# ls /dev/tty{1,3,5,7,9,S0,30,haha}
[root@A /]# ls /dev/tty{10,20,30,S1}
[root@A /]# ls /dev/tty{S2,S3}
请列出 /dev/tty20至/dev/tty30
[root@A /]# ls /dev/tty{2[0-9],30}
1.3 目录及文件操作
(1) 创建目录
mkdir(make directory)
[root@server0 ~]# mkdir -p /vod/movie/cartoon #-p表示连父目录一起创建
删除空文件夹:rmdir
(2) cp 复制
格式:cp [选项]... 原文件... 目标路径
常用命令选项
-a: 相当于 -dr
-d: 若来源文件为链接文件的属性,复制链接文件属性而并非文件本身;
-f:为强制(force) 的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i:若目标文件(destination) 已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式链接(hard link) 的链接文件创建,而非复制文件本身;
-p:连同文件的属性(权限、用户、时间)一起复制过去而非使用默认属性(备份常用) ;
-r:递回持续复制,用于目录的复制行为;(常用)
-s:复制成为符号链接文件 (symbolic link) ,亦即“捷径”文件;
-u:update
[root@A /]# cp /etc/passwd /opt/
[root@A /]# cp /boot/vm* /opt/
[root@A /]# cp -r /boot/ /opt/
[root@A /]# cp -r /etc/shadow /mnt/ /opt/
[root@A /]# \cp -r /boot/ /opt/ #覆盖文件时,如果目标位置已经存在该文件,系统会询问我们是否覆盖,需要输入y来确认,加入\存在时就不用询问直接操作
[root@server0 ~]# firewall-config #防火墙的图形程序
(3) 删除
rm — Remove
格式:rm [选项]... 文件或目录...
常用命令选项
-r、-f:递归删除(含目录)、强制删除
-i 删除前询问
[root@A /]# touch /opt/1.txt
[root@A /]# mkdir /opt/abc
[root@A /]# ls /opt/
1.txt abc
[root@A /]# rm -rf /opt/*
[root@A /]# ls /opt/
(4) mv 移动/改名
mv — Move
– 格式: mv [选项]... 原文件... 目标路径
[root@A /]# mkdir /opt/nsd01
[root@A /]# touch /opt/1.txt
[root@A /]# ls /opt/
1.txt nsd01
[root@A /]# mv /opt/1.txt /opt/nsd01
[root@A /]# ls /opt/
nsd01
[root@A /]# ls /opt/nsd01
重命名:路径不变的移动
[root@A /]# mv /opt/test /opt/haha
#/test另起文件名/haha
(5) 创建空文件
touch命令
1.4 取得路径的文件与目录名称
basename与dirname
1.5 文件内容的查阅
cat 由第一行开始显示文件内容tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!nl 显示的时候,顺道输出行号!more 一页一页的显示文件内容less 与 more 类似,但是比 more 更好的是,他可以往前翻页!head 只看头几行tail 只看尾巴几行od 以二进制的方式读取文件内容!
1.6 文件与目录的默认权限与隐藏权限
在3、linux文件权限和目录权限中提到过
(1) 文件的默认权限 umask
第一个数字特殊权限使用的
后三个数字为默认值需要减掉的权限(r:4 w:2 x:1)
因为 umask 为 022 ,所以 user 并没有被拿掉任何权限,不过 group 与 others 的权限被拿掉了 2 (也就是 w 这个权限)
该默认值得设置参考/etc/bashrc文件,建议不要修改此文件
(2) 文件的隐藏属性
---使用chattr设置文件隐藏属性
chattr 选项 参数 目录或文件
选项:+ :增加某一个特殊参数,其他原本存在参数则不动。- :移除某一个特殊参数,其他原本存在参数则不动。= :设置一定,且仅有后面接的参数
参数:
A :当设置了 A 这个属性时,若你有存取此文件(或目录) 时,他的存取时间 atime 将不会被修改,可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)S :一般文件是非同步写入磁盘的(原理请参考[前一章sync](../Text/index.html#sync)的说明) ,如果加上 S 这个属性时,当你进行任何文件的修改,该更动会“同步”写入磁盘中。a :当设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性c :这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)d :当 dump 程序被执行的时候,设置 d 属性将可使该文件(或目录) 不会被 dump 备份i :这个 i 可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!”对于系统安全性有相当大的助益!只有 root 能设置此属性s :当文件设置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!u :与 s 相反的,当使用 u 来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!注意1:属性设置常见的是 a 与 i 的设置值,而且很多设置值必须要身为 root 才能设置注意2:xfs 文件系统仅支持 AadiS 而已
---使用lsattr 显示文件的隐藏属性
-a :将隐藏文件的属性也显示出来;-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;-R :连同子目录的数据也一并列出来!
(3) 观察文件的类型
文件是ASCII或者是data文件或者是binary(二进制文件)?
使用file命令
1.7 文件的搜寻指令
(1) which 查找指令的可执行文件路径
which [-a] 命令
-a 查找所有PATH路径下的
(2) whereis 特定目录下寻找文件名
(3) find
---常见用法
根据预设的条件递归查找对应的文件
find [目录] [条件1]
常用条件表示:
-type 类型(f 文件、d 目录、l 快捷方式)
-name "文档名称"
-size +|-文件大小(k、M、G)
-user 用户名
[root@server0 ~]# find /etc/ -name "*.conf"
[root@server0 ~]# find /etc/ -name "passwd"
[root@server0 ~]# find /boot -type d
[root@server0 ~]# find /boot -type l
[root@server0 ~]# find /boot -type f
[root@server0 ~]# find /root/ -name "nsd*"
[root@server0 ~]# find /root/ -name "nsd*" -type f
[root@server0 ~]# find /root/ -name "nsd*" -type d
[root@server0 ~]# find /boot/ -size +20M #查找20M以上的文件
[root@server0 ~]# ls -lh /boot/initramfs-*
[root@server0 ~]# find /boot/ -size -20M
[root@server0 ~]# useradd lisi
[root@server0 ~]# useradd zhangsan
[root@server0 ~]# ls -l /home/
[root@server0 ~]# find /home -user zhangsan
[root@server0 ~]# find /home -user lisi
[root@server0 ~]# find / -user lisi
与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;-mtime +n :列出在 n 天之前(不含 n 天本身) 被更动过内容的文件文件名;-mtime -n :列出在 n 天之内(含 n 天本身) 被更动过内容的文件文件名。-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
---find结果处理
# rm -rf /opt/*
# find /boot/ -size +10M
# find /boot/ -size +10M -exec cp {} /opt \; #找到的结果复制到/opt下
# ls /opt/
# mkdir /root/findfiles
# find / -user lisi -type f -exec cp {} /root/findfiles \;
# ls -A /root/findfiles/
1.8 grep
根据字符串模式提取文本行
grep [选项] '匹配字符串' 文本文件...
常用命令选项
-v,取反匹配
-i,忽略大小写
[root@server0 ~]# grep 'root' /etc/passwd
[root@server0 ~]# grep -v 'root' /etc/passwd
[root@server0 ~]# grep 'ROOT' /etc/passwd
[root@server0 ~]# grep -i 'ROOT' /etc/passwd
[root@server0 ~]# grep 'seismic' /usr/share/dict/words
# grep 'seismic' /usr/share/dict/words > /root/wordlist #找出来相匹配的并导出
# cat /root/wordlist
^word 以字符串word开头
word$ 以字符串word结尾
[root@server0 ~]# grep '^root' /etc/passwd
[root@server0 ~]# grep 'root$' /etc/passwd
[root@server0 ~]# grep 'bash$' /etc/passwd
匹配空行
[root@server0 ~]# grep -v '^$' /etc/default/useradd