awk入门 —— 强大的文本分析工具

awk 是用于 Unix 和类 Unix 系统的强大文本解析工具,但是由于它有可编程函数,因此你可以用它来执行常规解析任务,因此它也被视为一种编程语言。你可能不会使用 awk 开发下一个 GUI 应用,并且它可能不会代替你的默认脚本语言,但是它是用于特定任务的强大程序。

这些任务或许是惊人的多样化。了解 awk 可以解决你的哪些问题的最好方法是学习 awk。你会惊讶于 awk 如何帮助你完成更多工作,却花费更少的精力。

awk 的基本语法是:

awk [options] 'pattern {action}' file

首先,创建此示例文件并将其保存为 colours.txt

name       color  amount
apple      red    4
banana     yellow 6
strawberry red    3
grape      purple 10
apple      green  8
plum       purple 2
kiwi       brown  4
potato     brown  9
pineapple  yellow 5

数据被一个或多个空格分隔为列。以某种方式组织要分析的数据是很常见的。它不一定总是由空格分隔的列,甚至可以不是逗号或分号,但尤其是在日志文件或数据转储中,通常有一个可预测的格式。你可以使用数据格式来帮助 awk 提取和处理你关注的数据。

继续阅读“awk入门 —— 强大的文本分析工具”

SSH 端口转发

你可能已经熟悉使用 ssh 命令访问远程系统。ssh 命令背后所使用的协议允许终端的输入和输出流经安全通道。但是你知道也可以使用 ssh 来安全地发送和接收其他数据吗?一种方法是使用“端口转发port forwarding”,它允许你在进行 ssh 会话时安全地连接网络端口。本文向你展示了它是如何工作的。

关于端口

标准 Linux 系统已分配了一组网络端口,范围是 0 – 65535。系统会保留 0 – 1023 的端口以供系统使用。在许多系统中,你不能选择使用这些低端口号。通常有几个端口用于运行特定的服务。你可以在系统的 /etc/services 文件中找到这些定义。

你可以认为网络端口是类似的物理端口或可以连接到电缆的插孔。端口可以连接到系统上的某种服务,类似物理插孔后面的接线。一个例子是 Apache Web 服务器(也称为 httpd)。对于 HTTP 非安全连接,Web 服务器通常要求在主机系统上使用端口 80,对于 HTTPS 安全连接通常要求使用 443。

当你连接到远程系统(例如,使用 Web 浏览器)时,你是将浏览器“连接”到你的主机上的端口。这通常是一个随机的高端口号,例如 54001。你的主机上的端口连接到远程主机上的端口(例如 443)来访问其安全的 Web 服务器。

那么,当你有这么多可用端口时,为什么还要使用端口转发呢?这是 Web 开发人员生活中的几种常见情况。

继续阅读“SSH 端口转发”

aria2配置

aria2 是一个多平台轻量级,支持 HTTP、FTP、BitTorrent 等多协议、多来源的命令行下载工具。Aria2 可以从多个来源、多个协议下载资源,最大的程度上利用了你的带宽。Aria2 有着非常小的资源占用,在关闭磁盘缓存的情况下,物理内存占用通常为 4M(正常 HTTP/FTP 下载的情况下),BitTorrent 下载每秒2.8M/S的情况下,CPU 占有率约为 6%。Aria2 支持 JSON-RPC 和 XML-RPC 接口远程调用。

继续阅读“aria2配置”

过渡到 nftables

开源世界中的每个主要发行版都在演进,逐渐将 nftables 作为了默认防火墙。换言之,古老的 iptables 现在已经消亡。本文是有关如何构建 nftables 的教程。

当前,有一个与 nftables 兼容的 iptables-nft 后端,但是很快,即使是它也不再提供了。另外,正如 Red Hat 开发人员所指出的那样,有时它可能会错误地转换规则。我们需要知道如何构建自己的 nftables,而不是依赖于 iptables 到 nftables 的转换器。

在 nftables 中,所有地址族都遵循一个规则。与 iptables 不同,nftables 在用户空间中运行,iptables 中的每个模块都运行在内核(空间)中。它很少需要更新内核,并带有一些新功能,例如映射、地址族和字典。

继续阅读“过渡到 nftables”

Debian关闭beep声

Debian Linux在控制台使用Tab联想时会有蜂鸣声。它是主板发出来的,关闭系统声音还是会有。

关闭beep的方法有很多,但不一定有效,各种方法可以都试试。我用的是卸载内核模块。

sudo rmmod pcspkr    //关闭命令行错误提示音
sudo modprobe pcspkr //打开错误提示音 

以上命令只是暂时生效,永久生效,在.xinputrc里添加如下代码:

xset -b

其他方法:

继续阅读“Debian关闭beep声”

Maven PKIX path building failed

使用maven编辑,下载包时报PKIX path building failed错误

在maven设置中加入参数

-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME
-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true

再执行编译,正常下载依懒jar

参考:

https://blog.csdn.net/jsp_will/article/details/87951082

https://stackoverflow.com/questions/23904298/pkix-path-building-failed

VMware安装Android x86

使用VMware安装Android x86,方法和安装Windows或Linux大同小异,主要注意几个地方:

1.更改磁盘控制器为IDE

这是Android x86官方说明:

用VMware创建的磁盘默认是SCSI,删除默认磁盘,自己创建。

2.安装系统时,创建分区,会提示是否使GPT分区表。先择NO,使用MBR分区表。

3.创建分区时要标记系统分区是引导分区

操作完成后记得“Write”保存。

系统安装完成后发现无法进入系统,提示:detecting android-x86 found at /dev/sda1

记得安装以前的镜像没这个问题,现在安装的是android-x86_64-8.1-r2。最后是修改grub引导解决。

继续阅读“VMware安装Android x86”

被父母高估的孩子更易自恋

很多父母都强调培养孩子的自尊心,于是他们直觉式的去夸奖孩子,告诉孩子“你是最棒的”、“你是最特别的”,以期能够增强孩子的自尊心。然而,夸奖可能并不是代表着爱,而是对孩子一种膨胀式的评估和信念,儿童会内化这些信念,认为自己是特别的并且应该得到特殊对待,这反而会提高孩子的自恋水平而不是自尊水平。近期,发表在《美国科学院院刊》(PNAS)上的一项纵向研究[1]验证了这个观点,表明父母对孩子的过高评估会让儿童更容易变得自恋。

自尊VS自恋

自尊跟自恋虽然有些地方比较相似,容易让人误解,但是它们本质上是不同的。自恋者认为自己优于其他人,执迷于个人成就,并且相信自己应该受到特殊对待。自尊的个体认为自己是有价值的、重要的,因而接纳自己、喜欢自己。简单来说,自恋的人是“我比你好,所以我是有价值的”,而自尊的人是“我本身就是有价值的、重要的”。

自恋者都带着对自己不切实际的认识,认为自己是优于其他人的并且理所当然应该获得成功,对自己的期望可能会不切实际,当遭到否认或者失败的时候,他们可能会暴怒,陷入对自己的怀疑之中。而对自尊的人来说,挫折不会动摇他们的自我,因为从父母和其他人对自己的接纳种所获得的这种肯定是没有附加条件的。

被父母高估的孩子更易自恋

这个研究分四次施测,每次施测间隔六个月。565个(其中54%是女孩)和他们的父母参加了这项研究,其中母亲415人,父亲290人。在第一次测量时,儿童年龄在7-11岁,选取这个年龄段是因为儿童在这个时期首次出现自恋水平的差异。研究施测四次,每次分别测量五个指标:

继续阅读“被父母高估的孩子更易自恋”

查看MySQL表字段信息

做完表设计后需制作说明文档。我使用MySQL官方客户端MySQL Workbench建模,该工具不支持把字段信息导出文档,只能生成可执行SQL建库建表。

用客户端建表时字段说明,策略都做好了的,重新再写一次太麻烦,所以想着提取这些信息导出文本。

MySQL中常用查看数据库信息的方法:

# 查看当前用户所有楼据库
show databases;
# 查看当前数据库中所有表
show tables;
# 看数表中所有字段信息
desc 表名

使用desc查看字段,并没有显示建库建表的COMMENT备注,字段信息不能完全符合要做的文档。其实可以在information_schema中查找提取信息。

继续阅读“查看MySQL表字段信息”

批处理文件中的 %~d0

批处理,%~d0 cd %~dp0 代表什么意思?

~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录。语法选项:

~0         - 删除任何引号("),扩充 %0
%~f0        - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)
%~d0        - 仅将 %0 扩充到一个驱动器号
%~p0        - 仅将 %0 扩充到一个路径
%~n0        - 仅将 %0 扩充到一个文件名(“n”是name 文件名)
%~x0        - 仅将 %0 扩充到一个文件扩展名
%~s0        - 扩充的路径只含有短名(“s”为Short,短的)
%~a0        - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)
%~t0        - 将 %0 扩充到文件的日期/时间(“t”time)
%~z0        - 将 %0 扩充到文件的大小(Size 大小)
%~PATH:0    −查找列在路径环境变量的目录,并将PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充
              到找到的第一个驱动器号和路径。
%~ftza0     - 将 %0 扩充到类似输出线路的 DIR

%0为当前批处理文件,如果0换成1为第一个文件,2为第2个

继续阅读“批处理文件中的 %~d0”