一、文件操作之通配符续
同时创建多个文件
-
同时创建多个文件 (创建用{})
[root@localhost ~]# ls anaconda-ks.cfg ping.sh test test1 test2 [root@localhost ~]# touch test{3..5} [root@localhost ~]# ls anaconda-ks.cfg ping.sh test test1 test2 test3 test4 test5
同时查找多个文件
-
同时匹配多个文件 (匹配用**[]**)
[root@localhost ~]# ll test[0-9] -rw-r--r--. 1 root root 210 Jul 23 16:17 test1 -rw-r--r--. 1 root root 0 Jul 25 09:32 test2 -rw-r--r--. 1 root root 0 Jul 25 09:34 test3 -rw-r--r--. 1 root root 0 Jul 25 09:34 test4 -rw-r--r--. 1 root root 0 Jul 25 09:34 test5
-
匹配数字结尾文件
[root@localhost ~]# ll test.[[:digit:]] -rw-r--r--. 1 root root 0 Jul 25 09:49 test.1 [root@localhost ~]# ll test[[:digit:]] -rw-r--r--. 1 root root 210 Jul 23 16:17 test1 -rw-r--r--. 1 root root 0 Jul 25 09:32 test2 -rw-r--r--. 1 root root 0 Jul 25 09:34 test3 -rw-r--r--. 1 root root 0 Jul 25 09:34 test4 -rw-r--r--. 1 root root 0 Jul 25 09:34 test5 [root@localhost ~]# ll test.[^[:alpha:]] -rw-r--r--. 1 root root 0 Jul 25 09:49 test.1
-
匹配英文结尾文件
[root@localhost ~]# ls test.[a-z] test.a test.b [root@localhost ~]# ls test.[[:alpha:]] test.a test.b [root@localhost ~]# ls test.[^[:digit:]] test.a test.b
-
-
匹配两位数文件
[root@localhost ~]# ls
anaconda-ks.cfg ping.sh test test1 test10 test2 test3 test4 test5
[root@localhost ~]# ls test[0-9][0-9]
test10
同时删除多个文件
- 同时删除多个文件
[root@localhost ~]# rm {4..5}
rm: remove regular empty file ‘4’? y
rm: remove regular empty file ‘5’? y
-
产生一个日志文件并让一个日志文件只保存三天的shell脚本:
-
脚本:
#!/bin/bash file1=`date -d "+3 day" +%Y%m%d`.log touch $file1 [ -f `date +%Y%m%d`.log ] && rm `date +%Y%m%d`.log ~
-
系统命令:
- 查看系统使用情况:
[root@localhost ~]# uptime
10:36:35 up 1:34, 2 users, load average: 0.00, 0.01, 0.05
系统时间 系统状态 运行时间 使用用户 1分钟 5分钟 15分钟平均负载
- 实时监控命令:
[root@localhost ~]# top
-
查看进程命令:
-
[root@localhost ~]# ps -ef
-
-u 用户进程
-
-a 当前终端进程
扫描二维码关注公众号,回复: 8929445 查看本文章 -
-ax 显示详细信息
-
-
查看特定(ssh)进程:
[root@localhost ~]# ps -aux |grep ssh
用户命令:
创建用户:
[root@localhost ~]# useradd lxw
添加用户密码:
[root@localhost ~]# passwd lxw
切换用户:
[root@localhost ~]# su lxw
- 用户目录没有变化
[root@localhost ~]# su - lxw
- 到达用户的家目录
退出登录:(退到上一个用户)
[lxw@localhost ~]$ exit
创建目录:
[root@localhost ~]# mkdir data--只能创建一个目录
[root@localhost ~]# mkdir -p /data/data1/data2--创建多级目录
创建文件:
[root@localhost ~]# touch file
[root@localhost ~]# >file
写入文件:
[root@localhost ~]# touch /data/data1/file
[root@localhost ~]# echo "123456" >/data/data1/file
[root@localhost ~]# cat /data/data1/file
123456
查看文件:
[root@localhost ~]# cat test test1--两个文件内容连在一块显示
[root@localhost ~]# head -20 passwd--查看文件开头20行,默认10行
[root@localhost ~]# tail -20 passwd--查看文件结尾20行,默认10行
[root@localhost ~]# cat -n passwd--显示文件行数
[root@localhost ~]# cat -s passwd--取消多个空行
[root@localhost ~]# cat -E passwd--每行最后加$(防止脚本后边出现空格而报错)
[root@localhost log]# more dmesg.old--分屏显示()/var/log
[root@localhost log]# more -10 dmesg.old--一屏显示10行
- ctrl+f向下翻屏滚动
- ctrl+b向上翻屏滚动
对比文件:
[root@localhost ~]# diff test test1--对比不同并分开显示
筛选命令:
[root@localhost ~]# grep root passwd--grep 关键字 文件名(不显示大写)
[root@localhost ~]# grep ^root passwd--筛选以root开头的文件
[root@localhost ~]# grep -i root passwd--不区分大小写
[root@localhost ~]# grep -n root passwd--显示行数
[root@localhost log]# ip a |grep inet |grep -v inet6--(-v)取反
删除命令:
- 删除文件:
[root@localhost ~]# rm test
- 删除目录:
[root@localhost ~]# rm -r test2--递归删除目录
[root@localhost ~]# rm -f--强制删除
[root@localhost ~]# rm -rf--强制删除目录
[root@localhost ~]# rm -d test2--删除空目录
更名命令:
[root@localhost ~]# mv test test1
复制命令:
[root@localhost ~]# cp test1 data/
[root@localhost ~]# cp -p test1 data/--带权限复制
[root@localhost ~]# ll data/
total 4
-rw-r--r--. 1 lxw lxw 330 Jul 25 15:05 test1
[root@localhost ~]# cp -a data data/--保留原文件属性的前提下复制文件(把整个文件夹复制过去)
软硬链接:
- 给文件file1做了个硬链接
[root@localhost data1]# ln file1 file2
- 给文件file1做个软链接
[root@localhost data1]# ln -s file1 file3
[root@localhost data1]# ll
total 0
-rw-r--r--. 2 root root 0 Jul 25 15:26 file1
-rw-r--r--. 2 root root 0 Jul 25 15:26 file2
lrwxrwxrwx. 1 root root 5 Jul 25 15:29 file3 -> file1
-
硬链接:原文件删除的情况下,内容依然存在
-
软连接:在原文件删除的情况下,自己也失效
查找文件命令:
[root@localhost ~]# find -name file2
./data1/file2
[root@localhost ~]# find /etc -name passwd--在指定目录下寻找
[root@localhost ~]# find -name test1 -exec rm -rf {} \;--寻找出test1并删除
[root@localhost ~]# find -name "test*" -exec rm -rf {} \;--寻找出所有test开头文件并删除
cut命令:
[root@localhost log]# ip a |grep inet |grep -v inet6 |cut -b -20--按照字节个数截取文件
排序命令:
[root@localhost ~]# cat test |sort--默认正序
2
3
4
[root@localhost ~]# cat test |sort -r--倒叙
4
3
2
[root@localhost ~]# cat test |sort |uniq-- 先排序,在去重
2
3
4
[root@localhost ~]# cat test |wc -l--统计行数
查询命令所在位置:
[root@localhost ~]# which ls--ls命令所在位置
[root@localhost ~]# whereis pwd--命令所在位置以及压缩包所在位置
二、Linux系统文件目录:
/bin,/sbin:系统命令的二进制位文件
/boot:存放系统启动有关的文件
/dev:设备文件
/etc:配置文件
/home:用户家目录
/lib:库,模块的文件
/opt:与第三方的安装模块
/use:系统用户
/var:与应用有关的文件
/tmp:临时文件,通常在重启后清空
/mnt:临时挂载的文件系统
三、引号的不同
‘ ‘:单引号
[root@localhost ~]# echo '$PATH'
强引用,可见即可得(括号里便是啥,输出是啥)
- 单引号将其中的内容都作为了字符串来,忽略所有的命令和特殊字符,类似于一个字符串的用法
” “:双引号
[root@localhost ~]# echo "$PATH"
弱引用,变量正常使用
- 双引号与单引号的区别在于其可以包含特殊字符,包括
', ", $, \
,如果要忽略特殊字符,就可以利用\
来转义,忽略特殊字符,作为普通字符输出。