grep(-i -n -v -w)
[root@xxx ~]# grep root anaconda-ks.cfg #匹配关键字所在的行
[root@xxx ~]# grep -i root anaconda-ks.cfg #-i 忽略大小写
[root@xxx ~]# grep -n root anaconda-ks.cfg #显示匹配到的行号
[root@xxx ~]# grep -v root anaconda-ks.cfg #-v 不匹配有root的行
[root@xxx ~]# grep root anaconda-ks.cfg -w #-w 完全匹配this root
sort(-n 、-r、-t、-k):默认是ASCII排序
[root@xxx ~]# cat xiaohong.txt
this is xiaohong
SLDFJ
lskjdf
LSDK
aaaa
[root@xxx ~]# sort xiaohong.txt #默认是ASCII排序
aaaa
LSDK
lskjdf
SLDFJ
this is xiaohong
[root@xxx ~]# locale
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
[root@xxx ~]# export LC_ALL=C
[root@xxx ~]# locale
LANG=en_GB.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
[root@xxx ~]# sort xiaohong.txt
LSDK
SLDFJ
aaaalskjdf
this is xiaohong
[root@xxx ~]# cat xiaohong.txt
this is xiaohong
SLDFJ
lskjdf
LSDK
aaaa
[root@xxx ~]# cat xiaoming.txt
123
1
5555
33
[root@xxx ~]#
[root@xxx ~]# sort -n xiaoming.txt #-n 对数值进行排序
1
33
123
5555
[root@xxx ~]# sort -nr xiaoming.txt #-r反向排序,-nr按照数值从大到小排序
5555
123
33
1
[root@xxx ~]# cat xiaoming.txt
root:1:xxx
xxx:100:yyy
dfkj:22:lsdkjf
djf:333:lsdj
[root@xxx ~]# sort -t : -k 2 -n /root/xiaoming.txt #-t指定分隔符、-k指定某个字段
root:1:xxx
dfkj:22:lsdkjf
xxx:100:yyy
djf:333:lsdj
uniq(-c)
[root@xxx ~]# cat xiaoming.txt
root:1:xxx
root:1:xxx
xxx:100:yyy
dfkj:22:lsdkjf
djf:333:lsdj
root:1:xxx
[root@xxx ~]# uniq xiaoming.txt # 去除重复的行,不相邻的不认为是相同的
root:1:xxx
xxx:100:yyy
dfkj:22:lsdkjf
djf:333:lsdjroot:1:xxx
[root@xxx ~]# uniq -c xiaoming.txt #统计
2 root:1:xxx
1 xxx:100:yyy
1 dfkj:22:lsdkjf
1 djf:333:lsdj
1 root:1:xxx
[root@xxx ~]#
cut(-d、-f 、-f 1,2、 -f 1-4)
[root@xxx ~]# cut -d : -f 1 xiaoming.txt # -d 指定分割符 -f 指定字段。-f 1 指定1
列.
root
root
xxx
dfkj
djf
root
[root@xxx ~]# cut -d : -f 3 xiaoming.txt
xxx
xxx
yyy
lsdkjf
lsdj
xxx
[root@xxx ~]# cut -d : -f 1,3 xiaoming.txt # -f 1,3 指定第一列1和第三列
root:xxx
root:xxx
xxx:yyy
dfkj:lsdkjf
djf:lsdj
root:xxx
[root@xxx ~]# vim xiaoming.txt
[root@xxx ~]# cat xiaoming.txt
root:1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
root:1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
root:1:xxx:cccccl:ksdjflsdj:lskdjf:lskdjfj
root:1:xxx:aaaa:ksdjflsdj:lskdjf:lskdjfj
root:1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
root:1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
[root@xxx ~]# cut -d : -f 2-7 xiaoming.txt ## -f 2-7 指定第2到7列
1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
1:xxx:cccccl:ksdjflsdj:lskdjf:lskdjfj
1:xxx:aaaa:ksdjflsdj:lskdjf:lskdjfj
1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
1:xxx:lllll:ksdjflsdj:lskdjf:lskdjfj
【面试笔试】公司有网站日志记录,统计出访问该网站的访问次数最多的客户端ip地址是多少?[root@localhost ~]# cat ip.log
2022/12/01 12:00 10.0.0.1 Chrome
2022/12/11 12:00 192.168.1.2 Chrome
2022/12/12 12:00 10.0.0.2 Chrome
2023/01/01 13:00 192.168.1.2 firefox
2023/06/06 15:01 10.0.0.2 firefox
[root@xxx ~]# cut -d " " -f 3 ip.log | sort -nr | uniq -c | head -2
cp
语法格式:cp 参数 源文件名 目标文件名
常用参数:
示例
使用这些命令之前,建议ls,查看文件是否存在,如果不存在则cp/mv会操作失败
cp file.cfg file2.cfg 复制指定的源文件,并定义新文件的名称,相当于文件备份
cp -r dir1 dir2 复制指定的源目录,并定义新目录的名称
cp -a file.cfg file2.cfg 复制文件时,保留其原始权限及用户归属信息
cp -f file.cfg /dir1 将指定文件复制到/dir1目录中,并覆盖已有文件,不进行询问
cp file1.cfg file2.cfg /dir2 将多个文件一同复制到指定目录/dir2中
注意:拷贝操作,会有新的一份文件生成,所以源文件依旧存在
如果只需要一份文件,只是移动了文件的位置则使用mv命令
cp xxx.txt yyy.txt zzz.txt ./dir1 拷贝文件到指定目录,源文件依旧存在
mv xxx.txt yyy.txt zzz.txt ./dir1 移动文件到指定目录,源文件不存在
共享文件拷贝:
从共享中拷贝文件到虚拟机的家目录:cp /mnt/hgfs/share/xxx.txt ~
从家目录拷贝文件到共享文件目录: cp ~/xxx.txt /mnt/hgfs/share
从u盘拷贝文件到家目录: cp /run/media/caoqb/TOOL/xxx.txt ~
- 格式:fat32格式
- usb控制器的兼容性选3.1
ln
Linux系统中的链接文件有两种新式,一种是硬链接,另一种是软连接。
软连接相当于Windows系统中的快捷方式文件,原始文件被移动或删除后,软连接文件也将无法使用
硬链接则是将文件的inode 属性块进行复制,因此把原始文件移动或删除后,硬链接文件依然可以使用
语法格式:ln 参数 源文件名 目标链接文件名
常用参数:
示例:
ln file1 file2 为指定的源文件创建硬连接
ln -s file1 file2 为指定的源文件创建软连接
ln -v file1 file2 为指定的源文件创建硬链接,并输出制作的过程信息
pwd
用于查看当前所处的工作目录路径,防止“迷路”
语法格式:pwd 参数
常用参数:
-L显示逻辑路径 --version显示版本信息
-P显示实际物理路径 --help显示帮助信息
示例:
pwd 查看当前工作目录路径
编辑器vim命令
终端下编辑文件的首选工具
基本上vim可以分为三种模式,分别是:
命令模式(command mode) ==>输入vim的命令和快捷键,默认打开文件时的模式
插入模式(insert mode) ==>进入编辑模式,可以编辑文件
底行模式(last line mode) ==>调整文件内容
在底行模式下:wq 写入并退出
x 等效于wq
q! 强制退出,不保存
shift+z+z 等效于wq
q 不保存退出
wq! 强制保存退出
wq /home/xxx.txt 指定位置保存文件
常规基本操作:
- vim file vim后跟文件名打开文件,默认进入命令行模式,不能编辑文件
- 按下a i s o(不区分大小写)即可进入插入模式,注意文件左下角会出现提示
- 开始编辑文件
- 按下esc键,切换到命令行模式,再按上述操作选择保存或不保存退出
快捷操作:
移动到行首 0 移动到行尾 $
屏幕滚动下 ctrl+f 屏幕滚动上 ctrl+b
zt 定位到屏幕顶端 zb 定位到屏幕底端
gg 定位到文件开头 G 定位到文件末尾
其他快捷键:
查找与替换命令:
其他常用操作:
压缩解压缩文件
打包解包指令: tar
压缩解压缩指令: zip xz /了解即可
打包解包压缩解压缩:tar /重点掌握
tar
语法格式: tar (选项) (参数)
选项:
操作案例:
打包:tar -cvf xxx.tar xxx 将xxx文件/目录打包成为xxx.tar包文件
解包:tar -xvf xxx.tar 将xxx.tar包文件释放到当前目录中
注意:如果要指定位置解包------- tar -xvf xxx.tar -c path
压缩:
zip xxx.zip xxx 将xxx文件压缩为xxx.zip的压缩文件
压缩目录加上-r
xz -z xxx.tar 将xxx.tar压缩成xxx.tar.xz压缩文件,源文件直接压缩
解压缩:
unzip xxx.zip 将xxx.zip压缩文件解压缩到当前目录
若要指定目录解压缩必须: unzip xxx.zip -d path
xz -d xxx.tar.xz 可以将后缀是xz的文件解压成tar包
打包压缩命令:
tar -zcvf xxx.tar.gz xxx 将文件/目录xxx打包压缩为xxx.tar.gz文件
tar -jcvf xxx.tar.bz2 xxx 将文件/目录xxx打包压缩为xxx.tar.bz2文件
解压缩解包命令:
tar -zxvf xxx.tar.gz 将xxx.tar.gz文件直接解压缩解包到当前目录,可以将文件用 -C参数指定解压缩解包到指定目录,比如 tar -zxvf xxx.tar.gz -C /home
tar -jxvf xxx.tar.bz2 将压缩文件直接解压缩解包到当前目录