本篇主要讲述:
1 目录和文件
2 目录和文件的操作(复制,删除,移动)
3 查看文件内容的命令
4 搜寻命令(which,whereis,locate,find);
5 文件内容的过滤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 文件/文件系统的详细信息显示
stat 命令显示包括:inode,atime,ctime,mtime
[root@localhost home]# stat passwd File: ‘passwd’ Size: 795 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 19087983 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:home_root_t:s0 Access: 2020-05-10 15:23:17.576572669 -0400 Modify: 2020-05-10 15:23:17.576572669 -0400 Change: 2020-05-10 15:23:17.579572669 -0400 Birth: -
2 目录及文件操作
2.1 创建目录(文件夹)
mkdir(make directory)
[root@server0 ~]# mkdir -p /vod/movie/cartoon #-p表示连父目录一起创建
删除空文件夹:rmdir
2.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来确认,加入\存在时就不用询问直接操作
2.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/
2.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/ #移动后/opt下不存在1.txt文件 nsd01 [root@A /]# ls /opt/nsd01 1.txt #重命名:路径不变的移动 [root@A /]# mv /opt/test /opt/haha #/test另起文件名/haha
2.5 创建空文件
touch命令
2.6 取得路径的文件与目录名称
basename与dirname
[root@localhost etc]# basename /usr/local/nginx/conf/nginx.conf nginx.conf [root@localhost etc]# dirname /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf
3 文件内容的查阅
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
od 以二进制的方式读取文件内容!
4 搜寻命令
which命令: 在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
whereis命令:该指令只能用于查找二进制文件、源代码文件和man手册页
locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。
locate的速度比find快,它并不是真的查找,而是查数据库
4.1 which 查找指令的可执行文件路径
which [-a] 命令
-a 查找所有PATH路径下的
[root@localhost etc]# which ls alias ls=‘ls --color=auto‘ /usr/bin/ls [root@localhost etc]# which dirname /usr/bin/dirname [root@localhost etc]# which find /usr/bin/find
4.2 whereis 特定目录下寻找文件名
该指令只能用于查找二进制文件、源代码文件和man手册页。
复制/etc/passwd 到/home下
passwd文件在/etc/,/home目录下都存在,但是使用该命令时,结果如下:
[root@localhost /]# whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
参数:
-
-b 只查找二进制文件。
-
-B<目录> 只在设置的目录下查找二进制文件。
-
-f 不显示文件名前的路径名称。
-
-m 只查找说明文件。
-
-M<目录> 只在设置的目录下查找说明文件。
-
-s 只查找原始代码文件。
-
-S<目录> 只在设置的目录下查找原始代码文件。
-
-u 查找不包含指定类型的文件。
4.3 locate
该命令在系统中不存在时
yum -y install mlocate
然后更新数据库:
updatedb
[root@localhost /]# locate passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /home/passwd
4.4 find
常见用法:find [目录] [条件1]
(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
(2)与时间有关的选项:共有 -atime, -ctime 与 -mtime
atime:access time访问时间,文件最后被读取过的时间
ctime:change time变更时间,文件最后被变更的时间
mtime:modify time修改时间,文件最后被修改的时间
以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身) 被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身) 被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
(3)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/
5 文件内容的过滤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