文章目录
一:文件管理之:创建/复制/移动/删除
1.1 创建文件: touch
touch file1.txt # 创建file1.txt文件,无则创建,有则修改时间,创建出的是普通文本文件,与后缀名无关。可使用vim a.txt 编辑里面的内容
touch /home/file10.txt # 用绝对路径
例:
[root@local-work ~]# touch /home/file10.txt
[root@local-work ~]# ls /home
file10.txt
touch file{1..20} # 快速创建多个file1..文件
touch {1..9}{a..c}.txt #快速创建1a,2a...1b,2b,,3a,3b,,等多个文件夹
修改文件时间:
touch Ego{n,N}.txt #等价touch Egon.txt EgoN.txt
例:touch -t 2011111111 2018.rmvb
了解文件的三个时间参数:https://www.cnblogs.com/linhaifeng/articles/13324247.html
1.2 创建目录:mkdir
mkdir dir1 # 在当前文件下创建一个dir1新目录
mkdir {dir1,dir3} # 在当前目录下创建dir1,dir3目录,这个并不是快速创建3个
mkdir /home/dir1 /home/dir2 # 可在其他文件夹下按指定/文件夹创建目录,/home文件夹下创建dir1 dir2目录
mkdir /home/{dir4,dir5} # 等同于mkdir /home/dir4 /home/dir5
mkdir -v /home/{dir6,dir7}
mkdir: 已创建目录 “/home/dir6”
mkdir: 已创建目录 “/home/dir7” # -v交互模式
mkdir -p /home/dir8/111/222 # -p递归创建目录和子文件夹以及子文件下的内容
1.3 复制cp
cp 源路径 目标路径
cp -v 源文件 目标文件 # 解释正在做什么
cp -r 源路径 目标路径 # 将源文件夹和里面的内容拷贝到目标文件夹
cp -a 源文件夹 目标文件夹 # 在root模式下,将源文件夹里面的所有数组原封不动的拷贝到目标文件夹
cp -f 源文件 目标文件 # 当用户对目标文件夹没有写和执行权限时,-f会将目标文件夹删除后在将源文件夹拷贝到目标文件夹里
cp -i 源文件 目标文件 # 覆盖之前交互提示,可if一起使用
1.4 删除rm
rm +所需删除文件 # rm ./file7 删除当前目录下的f文件
rm -i # 增加一个删除前的提示
rm -f # 免交互删除
re -v # 交互
rm -r # 递归删除,先进入文件夹最底层,一层层删除
rm -rf / # 删库跑路。。。
1.5 移动mv
mv 源文件 目标目录
mv -i 系统默认执行,提示覆盖
mv -f 覆盖不提示,mv前+\页可以,代表转义
1.6 查找find
在目录层次结构中搜索文件,find命令可以根据名称,属性,创建时间,大小,所属用户等方式查找文件,根据名称查找。
格式:
find +搜索路径 参数 参数相关匹配值 指令(默认-print,可不填)
# 查看结果后,可查看文件以上三个时间的命令:
stat 文件路径 -type 文件类型 指令
按指定搜索名称查找
# 指定搜索名称--------------------------------------
find 路径 -name 查找内容 指令 # 按照名称条件查询
find /etc/ -iname "ifcfg" # -i不指定大小写
find 通配符
find +通配符:
*:匹配所有,可以匹配空字符
find /etc/ -name "ifcfg-*" # 查找/etc所有ifcfg的文件
find/etc/ -name "eth*0" # 查找以eth0开头的文件
find/etc/ -name "*eth0" # 查找以eth0结尾的文件
find/etc/ -name "*eth0*" # 查询文件名称包含eth0的文件
[]:匹配[]中的任意一个字符
find /root/ -name "oldboy[thsu]" # 带中括号内的字母的
[^]:匹配去掉[]中内容的任意一个内容
find /root. -name "oldboy[^978]" # 带oldboy除978以外的
!:对整个搜索内容结果取反
find /root. !-name "oldboy[^978]"
?:匹配任意一个字符,字符不能为空
find /root. -name "oldboy[978?]"
-i: # 忽略名称大小写
find /root/test/ -iname "abc*"
按文件大小查找
# 根据文件大小查找
# find会自动四舍五入,超过整数的用上级整数
find 路径 -size 文件大小(需加单位,默认b) 后面+l,是结果以列表的方式显示
# 文件大小参数 n 表示n个单位
+n 表示n到所有
-n 表示0到n
find /root/ -size 10k/-10k/+10k
find /root/ -size -50k -a -size +20k # 此处不加-a也可以,查找+20和-50
了解:-a表示和 -o表示或者
按时间查找
# 按照时间进行查找
创建时间,访问时间,修改时间进行查找
find 路径 查找条件参数 天数 指令
# n代表天数
+n 距离现在n天之前
-n 距离现在n天之间
n 距离现在n天
参数:
-mtime:内容修改时间(包含创建时间vim)
find /root/test/ -mtime 3 # 3天前当天创建文件
find /root/test/ -mtime -3 # 3天以内,不包括今天
find /root/test/ -mtime +3 # 3天之前不包括今天
-ctime:文件变更时间(修改了位置(mv),所属组,所属用户
find /root/test/ -ctime 3/-1/+3
-atime:文件访问时间(cat)
按属性查找 -type
了解知识:
f(-):普通文件
d : 目录文件
l : 链接文件
b :设备文件
c : 字符设备文件
s : 套接字文件
p : 管道文件
格式 :find 文件路径 -type 文件类型 指令
# find ./ -type b
# find ./ -type b -ls # 以列表的方式查看
# find /root/ -type f -ctime +3 # 查询出/root目录下,3天前创建的文件
权限,所属组查询
find 常用指令
-print :打印结果集
# find / -type s -ctime -3 -print
1.7 less 进入文件后上下键翻页
less 文件路径
1.8 more 进入文件后按空格键一页一页翻
more 文件路径
二:文件的输出与重定向
可用在:执行某条命令想看到过程发生了什么事情,可放在文件里;
某个执行的命令确认是对的,不想看到结果,直接丢黑的文件,/dev/null
2.1 追加和覆盖符
-
> : 覆盖内容
覆盖符号是将文件内容清空,之后在将新的内容写入文件。
-
>> : 追加内容
# 在文件的末尾追加内容 [root@localhost ~]# echo "String" >> abc.txt [root@localhost ~]# cat abc.txt String [root@localhost ~]# echo "String" >> abc.txt [root@localhost ~]# cat abc.txt String String
2.2 错误和正确输出分别定向文件
输入内容到文件和输出内容到文件,输出即把相关内容通过设备(显示器等)显示出来,输出又分为正确输出和错误输出。
0代表标准输入
1代表正确输出
2代表错误输出
&代表将正确和错误全部都一起输出
不加任何以上1,2,&默认为1,只输出正确的。
[root@locall ~]# ifconfig eth0 1> 2.txt 2> 3.txt
[root@locall ~]# cat 2.txt
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.101 netmask 255.255.255.0 broadcast 192.168.15.255
inet6 fe80::7558:ba8f:63bd:5f76 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ee:08:57 txqueuelen 1000 (Ethernet)
RX packets 467 bytes 38382 (37.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 294 bytes 30821 (30.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@locall ~]# ifconfig eth0xx 1>> 2.txt 2> 3.txt
[root@locall ~]# cat 3.txt
eth0xx: error fetching interface information: Device not found
2.3 输入文件
输入内容即通过键盘把内容定向到文件中。
# >代表将覆盖到a.txt文件中,<代表覆盖的内容来自于后面的文件路径,将后面的文件路径里的内容覆盖到前面的文件中。
# << 代表前面覆盖到b.txt里的内容来自键盘上的输入,后面的efo是个标志的意思,也可自定义换成其它的字母。不与稍后输入的内容重复就好。
[root@locall ~]# cat > a.txt < /etc/hostname
[root@locall ~]# cat a.txt
[root@locall ~]# cat > b.txt < /etc/hostname
[root@locall ~]# cat b.txt
[root@locall ~]# cat > b.txt << efo
> 111
> 222
> 333
> efo
[root@locall ~]# cat b.txt
111
222
333