代码编织梦想

1.diff

用法;
diff xxx yyy

输出信息:

[num1,num2][a|c|d][num3.num4]
num1,num2	#第一个文件的行
a		#添加
c		#更改
d		#删除
<		#第一个文件中的内容
>		#第二个文件中的内容
num3,num4	#第二个文件中的行

常用参数:
-b #忽略空格
-B #忽略空行
-i #忽略大小写
-c #显示文件所有内容并标示不同
-r #对比目录
-u #合并输出

2.patch

patch 原文件 补丁文件
-b #备份原文件

测试:

diff -u westos westos1 > westos.path
patch -b westos westos.path
diff westos westos1

3.cut

-d :		#指定:为分割符
-f		#指定显示的列
		5 第五列
		35 353-5 355- 第五列以后
		-5 到第五列
-c		#指定截取的字符(数字用法同-f)

测试:

cp /etc/passwd .
cut -d : -f 1 passwd
cut -d : -f 1,4 passwd
cut -d : -f 1-4 passwd
cut -d : -f -4 passwd
cut -d : -f 4- passwd
cut -c 1-4 passwd 

在这里插入图片描述在这里插入图片描述

练习筛选出不能登陆的用户名:
grep bash -v /etc/passwd | cut -d : -f 1
在这里插入图片描述

4.sort

-n #纯数字排序
-r #倒叙
-u #去掉重复
-o #输出到指定文件
-t #指定分割符
-k #指定排序的列

练习:

vim rrr
cat rrr
sort -n rrr
sort -nr rrr
sort -t : -k 2 rrr
sort -n -t : -k 2 rrr

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

5.uniq

-c #合并重复并统计重复个数
-d #显示重复的行
-u #显示唯一的行

练习:找到重复最多的数并显示

sort -n rrr | uniq -c | tail -n 1 | cut -d " " -f 8

在这里插入图片描述

习题
1.显示出网卡ip

ifconfig ens3 | head -n 2 | tail -n 1 | cut -d " " -f 10

在这里插入图片描述2.找出能登陆的系统用户中UID最大的用户,并显示其名称

grep bash /etc/passwd | sort -n -t : -k 3 | tail -n 1 | cut -d : -f -1

在这里插入图片描述
3.当前主机为web服务器,请抓取访问web服务器次数排在前5的ip地址

cut -d " " -f 1 /etc/httpd/logs/access_log | sort -n  |uniq -c | sort -nr | head -n 5| sed 's/^ *//g'| cut -d " " -f 2

在这里插入图片描述

6.tr

tr " " ‘1’ #空格转1
tr ‘a-z’ ‘A-Z’ #小写转大写
tr ‘A-Z’ ‘a-z’ #大写转小写
在这里插入图片描述

在这里插入图片描述

7.test

a=1
b=2
test "$a" = "$b" && echo yes || echo no  
[ "$a" != "$b" ] && echo yes || echo no  
[ "$a" -eq "$b" ] && echo yes || echo no  
[ "$a" -ne "$b" ] && echo yes || echo no  
[ "$a" -le "$b" ] && echo yes || echo no  
[ "$a" -ge "$b" ] && echo yes || echo no  
[ "$a" -lt "$b" ] && echo yes || echo no  
[ "$a" -gt "$b" ] && echo yes || echo no  
[ "$a" -gt "0" -a "$a" -lt "10" ] && echo yes || echo no  
[ "$a" -le "0" -o "$a" -ge "10" ] && echo yes || echo no  
[ "$a" -le "0" ] || [ "$a" -ge "10" ] && echo yes || echo no  
[ "$a" -gt "0" ] && [ "$a" -lt "10" ] && echo yes || echo no  
test对空的判定
[ -z "$a" ] && echo yes || echo no
[ -z "$c" ] && echo yes || echo no
[ -n "$c" ] && echo yes || echo no
[ -n "$a" ] && echo yes || echo no

在这里插入图片描述在这里插入图片描述

test对于文件的判定

touch aaa
touch bbb
[ "/mnt/aaa" -ef "/mnt/bbb" ] && echo yes || echo no
ls -i
ln /mnt/aaa /mnt/ccc
ls -i
[ "/mnt/aaa" -ef "/mnt/ccc" ] && echo yes || echo no
[ "/mnt/aaa" -nt "/mnt/bbb" ] && echo yes || echo no
touch ddd
[ "/mnt/aaa" -nt "/mnt/ddd" ] && echo yes || echo no
ll
[ "/mnt/ddd" -nt "/mnt/aaa" ] && echo yes || echo no
[ -L "/mnt/ccc" ] && echo yes || echo no
ln -s /mnt/aaa eee
[ -L "/mnt/eee" ] && echo yes || echo no
[ -d "/mnt" ] && echo yes || echo no
[ -S "/mnt/aaa" ] && echo yes || echo no
[ -e "/mnt/aaa" ] && echo yes || echo no
[ -b "/dev/vda" ] && echo yes || echo no
[ -b "/dev/sda" ] && echo yes || echo no
[ -c "/dev/pts/0" ] && echo yes || echo no

在这里插入图片描述在这里插入图片描述测试
在这里插入图片描述

#!/bin/bash
[ -z "$1" ] && {
        echo "未指定检测文件,请指定"
        exit
}

[ -e "$1" ] || {
        echo "此文件不存在"
        exit
}

TYPE=$(ls -l $1 | cut -c 1)

[ "$TYPE" = "l" ] && echo $1 is link file
[ "$TYPE" = "-" ] && echo $1 is common file
[ "$TYPE" = "s" ] && echo $1 is socket
[ "$TYPE" = "c" ] && echo $1 is char
[ "$TYPE" = "b" ] && echo $1 is block

在这里插入图片描述
编写脚本判断用户类型
在这里插入图片描述在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/m0_51140575/article/details/111089081

Linux搭建开发环境-爱代码爱编程

Linux搭建开发环境 文章目录 Linux搭建开发环境一、安装 Java二、安装MySQL1、配置YUM源2、安装MySQL3、启动MySQL服务4、开机启动5、修改root本地登录密码6、添加远程登录用户7、配置默认编码为utf8三、安装Tomcat1、准备2、启动 tomcat3、开放腾讯云端口4、重启tomcat5、解决tomcat7启动

链接器中的符号问题-爱代码爱编程

链接器中的符号问题 1、 符号分类: 全局符号:由模块m定义并能被其他模块引用的全局符号—非静态的c函数和全局变量。 外部符号:由其他模块定义并被模块m引用的全局符号—在其他模块中定义c函数和全局变量。 局部符号:只被模块m定义和引用的局部符号—带static属性的c函数和全局变量。 2、 我对三个符号的理解: ○1局部符号和全局符号的区别就是是否带sta

解决Cent OS 6.5 中yum源错误:YumRepo Error: All mirror URLs are not using ftp, http[s] or file和404-爱代码爱编程

在Linux系统安装MySQL的时候,想要移除系统自带的mysql版本,使用 yum -y remove mysql-libs.x86_64 命令进行移除时报以下错误: YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/

渗透测试-地基篇-隧道之netsh内网穿透篇(二十)-爱代码爱编程

** 渗透测试-地基篇-netsh内网穿透篇(二十) ** 作者:大余 时间:2020-12-13 简介: 渗透测试-地基篇: 该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。 请注意: 对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使

Centos安装与配置MongoDB-爱代码爱编程

安装环境:64位centos系统 目录 1.添加MongoDB源 2.执行yum命令安装 3.安装完成后修改配置文件 4.启动MongoDB服务 5.进入MongoDB命令行 1.添加MongoDB源 vi /etc/yum.repos.d/mongodb-org.repo 修改内容如下 [mongodb-org-3.4] name=M

【踩坑日常】基于本地浏览器打开服务器上jupyter notebook的小技巧-爱代码爱编程

去年的这个时候我还是实习的大三小白,今年已经是保研结束的老学长了。 服务器的使用也越来越多了,需要在上面跑各种论文的代码,而jupyter notebook绝对是逐步调试的首选。 下面简单介绍如何在本地连接远程服务器上的jupyter。 1.在服务器上安装jupyter 提问:怎么才能在本地连接远程服务器上的jupyter? 答    :

Linux 误删文件恢复命令及方法-爱代码爱编程

你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 http://r6d.cn/JzNf 推荐:https://www.xttblog.com/?p=5120 前言 无论在哪个系统中,删除文件都是必须谨慎的操作。 因为如果不小心删除了重要文件,就会导致个人或公司出现重大

推荐一款日志切割神器,好用到爆!!-爱代码爱编程

来源:r6d.cn/QN53 对于 Linux 系统安全来说,日志文件是极其重要的工具。不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分 Nginx日志之类的 CRON 脚本,大家似乎遗忘了 Logrotate,争相发明自己的轮子,这真是让人沮丧啊!就好比明明身边躺着现成的性感美女,大家却忙着自娱自乐,罪过! logrotate

设置ubuntu终端光标开启自动显示-爱代码爱编程

目录 终端光标消失的原因回显和隐藏光标的方法开机自动回显光标总结 终端光标消失的原因   在使用ubuntu子系统终端时,光标经常会被我一顿操作后就消失不见。现在我突然发现是中英文输入切换的原因,在刚进入终端时,由于此时是中文输入,没注意打了几个字,随手就用shift切换为英文,此时光标就消失了。这时如果想要找回光标,再按shift切换输入法

Python 如何用 shell 调用脚本中的函数+参数传递-爱代码爱编程

【前言-给自己看的屁话】 最近玩python 遇到了这个问题,在网上查了下,大部分博客文章都是讲的同一种方法,看起来一知半解的,所以觉得自己有必要整理一下。 1、问题描述 无论是在windows下也好,Linux下也好,都有shell,windows下是powershell,Linux下是bash等。windows下的python 可以有IDLE,Li

linux三剑客和管道(基本使用)-爱代码爱编程

linux三剑客和管道,基本使用 本文目录三剑客和管道基本介绍正则表达式grep命令grep实战sed命令sed实战awk命令awk实战 本文目录 三剑客和管道基本介绍 管道:用 | 表示,把 | 前命令的结果作为 | 后命令的输入 正则表达式 grep命令 擅长查找字符串grep常用命令和参数 一般写法为:Grep [参数]正

liunx文件处理命令-爱代码爱编程

liunx文件处理命令 liunx文件处理命令基本命令cdVimlschmod更改文件所有权文件描述符 liunx文件处理命令 基本命令 cd cd - 返回进入此目录之前所在的目录 例:原来在/home/lg52778738目录下,进入根目录,使用CD -,返回了进入根目录前的/home/lg52778738目录下 Cd 进入当前