在 Linux 中创建命令行聊天服务器和删除不需要的软件包的有用命令
这是我们 Linux 命令行技巧和窍门的下一部分。如果您错过了我们之前关于 Linux 技巧的帖子,您可以在这里找到它。
在本文中,我们将介绍6 个命令行技巧,即使用Netcat命令创建 Linux 命令行聊天、从命令输出中动态添加列、从 Debian 和 CentOS 中删除孤立包、从命令行获取本地和远程 IP、在终端中获取彩色输出并解码各种颜色代码,最后但并非最不重要的是在 Linux 命令行中实现哈希标签。让我们一一检查它们。
1. 创建 Linux 命令行聊天服务器
我们所有人都已经使用聊天服务很长时间了。我们熟悉 Google 聊天、Hangout、Facebook 聊天、Whatsapp、Hike 以及其他一些应用程序和集成聊天服务。你知道 Linux nc命令只需一行命令就可以让你的 Linux 机器变成聊天服务器吗?
Linux 中的 nc 命令是什么以及它的作用是什么?
nc是 Linux netcat命令的缩写。nc 实用程序通常被称为瑞士军刀,因为它具有众多内置功能。它可用作调试工具、调查工具、使用 TCP/UDP 读取和写入网络连接、DNS 正向/反向检查。
它主要用于端口扫描、文件传输、后门和端口监听。nc 能够使用任何本地未使用的端口和任何本地网络源地址。
使用nc命令(在 IP 地址为192.168.0.7的服务器上)立即创建命令行消息服务器。
$ nc -l -vv -p 11119
上述命令开关的解释。
- -v:表示详细
- -vv:更详细
- -p:本地端口号
您可以将11119替换为任何其他本地端口号。
接下来在客户端机器(IP 地址:192.168.0.15)上运行以下命令将聊天会话初始化到机器(消息服务器正在运行)。
$ nc 192.168.0.7 11119
注意:您可以按ctrl+c键来终止聊天会话,并且 nc 聊天是一对一服务。
2. 如何在 Linux 中对某一列的值求和
如何在终端中动态地对作为命令输出生成的列的数值求和。
“ ls -l ”命令的输出。
$ ls -l
请注意,第二列是数字,表示符号链接的数量,第五列是数字,表示文件的大小。假设我们需要动态地对第五列的值求和。
列出第 5列的内容而不打印任何其他内容。我们将使用“ awk ”命令来执行此操作。“ $5 ”代表第 5列。
$ ls -l | awk '{print $5}'
现在使用awk通过管道传输来打印第 5列输出的总和。
$ ls -l | awk '{print $5}' | awk '{total = total + $1}END{print total}'
如何在 Linux 中删除孤立包?
孤立包是作为另一个包的依赖项安装的那些包,当原始包被删除时,它们就不再需要了。
假设我们安装了一个依赖于gtdependency的包gtprogram 。除非安装了gtdependency ,否则我们无法安装gtprogram 。
当我们删除gtprogram时,默认情况下不会删除gtdependency。如果我们不删除gtdependency,它将保留为 Orpahn 包,与任何其他包没有任何联系。
# yum autoremove [On RedHat Systems]
# apt-get autoremove [On Debian Systems]
您应该始终删除孤立的软件包,以确保 Linux 机器上只加载必要的东西而不加载任何其他东西。
4. 如何获取 Linux 服务器的本地和公网 IP 地址
要获取您的本地 IP 地址,请运行下面的单行脚本。
$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:
您必须已安装ifconfig,如果没有,请 apt或yum安装所需的软件包。这里我们将使用grep命令对ifconfig的输出进行管道传输,以查找字符串“ intel addr: ”。
我们知道ifconfig命令足以输出本地 IP 地址。但是ifconfig会生成许多其他输出,而我们这里关心的只是生成本地 IP 地址,而不是其他内容。
# ifconfig | grep "inet addr:"
虽然现在输出更加自定义,但我们只需要过滤本地 IP 地址,无需其他内容。为此,我们将使用 awk 通过使用上述脚本进行流水线传输来打印第二列。
# ifconfig | grep “inet addr:” | awk '{print $2}'
从上图可以清楚看出,我们已经对输出进行了很大程度的自定义,但仍然不是我们想要的。结果中仍然有环回地址127.0.0.1 。
我们在grep中使用-v标志,这样只会打印那些与参数中提供的行不匹配的行。每台机器都有相同的环回地址 127.0.0.1,因此使用grep -v打印那些没有此字符串的行,方法是将其与上面的输出进行流水线传输。
# ifconfig | grep "inet addr" | awk '{print $2}' | grep -v '127.0.0.1'
(addr:)
我们几乎已经生成了所需的输出,只需从头替换字符串即可。我们将使用cut命令仅打印第二列。第 1 列和第 2 列不是由制表符分隔,而是由 分隔(:)
,因此我们需要(-d)
通过管道传输上述输出来使用分隔符。
# ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:
终于!所需的结果已经生成。
5. 如何为 Linux 终端添加颜色
您可能已经在终端中看到了彩色输出。您还应该知道如何启用/禁用终端中的彩色输出。如果没有,您可以按照以下步骤操作。
在 Linux 中,每个用户都有'.bashrc'
一个文件,该文件用于处理终端输出。使用您选择的编辑器打开并编辑此文件。请注意,此文件是隐藏的(文件开头的点表示隐藏)。
$ vi /home/$USER/.bashrc
确保下面的行未被注释。即,它不以#开头。
if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dirc$ alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi
完成后!保存并退出。要使更改生效,请注销并再次登录。
现在您将看到文件和文件夹根据文件类型以各种颜色列出。要解码颜色代码,请运行以下命令。
$ dircolors -p
由于输出太长,让我们用较少的命令来流水线输出,以便我们一次获得一个屏幕的输出。
$ dircolors -p | less
6. 如何为 Linux 命令和脚本添加标签
我们在Twitter、Facebook和Google Plus上使用井号标签(可能还有其他一些地方,我没有注意到)。这些井号标签使其他人更容易搜索井号标签。很少有人知道我们可以在 Linux 命令行中使用井号标签。
我们已经知道,#
在配置文件和大多数编程语言中,它被视为注释行并被排除在执行之外。
运行一个命令,然后创建该命令的井号标签,以便我们稍后找到它。假设我们有一个在上面第 4 点中执行的长脚本。现在为其创建一个井号标签。我们知道ifconfig可以由sudo或root用户运行,因此可以充当 root。
# ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d: #myip
上述脚本已使用“ myip ”标记。现在在终端中的reverse-i-serach(按 ctrl+r )中搜索该标记,然后输入“ myip ”。您也可以从那里执行它。
您可以为每个命令创建任意数量的哈希标签,然后使用reverse-i-search找到它。
现在就这些了。我们一直在努力为您制作有趣且知识丰富的内容。您觉得我们做得怎么样?欢迎提出任何建议。您可以在下面的框中发表评论。保持联系!赞。