在Linux操作系统中,除了基本的常用命令,还有许多冷门但实用的命令。以下是一些相对不那么广为人知的Linux操作命令,它们可能在特定场景下非常有用:
一、nc:用于临时开启一个端口,或者用于文件传输。
Linux nc命令是网络工具中的一员,用于进行网络连接,发送和接收数据。nc命令的使用方式和效果如下:
-
打开TCP连接:使用nc命令可以通过指定目标IP地址和端口号,打开一个TCP连接。例如:
nc 192.168.1.1 80
,这会尝试连接到192.168.1.1的80端口。 -
监听TCP连接:可以使用nc命令来监听指定的IP地址和端口号,等待其他设备连接。例如:
nc -l 8080
,这会在本地监听8080端口。 -
UDP连接:除了TCP连接,nc命令也支持UDP连接。通过指定
-u
选项,可以使用UDP协议进行通信。例如:nc -u 192.168.1.1 5000
,这会尝试通过UDP连接到192.168.1.1的5000端口。 -
文件传输:使用nc命令,可以简单地进行文件传输。例如,在发送端执行
nc -l 8080 < myfile
,在接收端执行nc 192.168.1.1 8080 > myfile
,就可以将myfile文件从发送端传输到接收端。 -
网络监听与测试:通过使用nc命令,可以监听指定端口上的网络流量,并对其进行分析和测试。例如:
nc -l 8080 | tee logfile.txt
,这会将8080端口上的网络流量保存到logfile.txt文件中,并在终端上显示。
总之,nc命令是一个功能强大的网络工具,可以用于进行网络连接、发送和接收数据以及进行网络流量的监听和分析。
二、strace:用于调试程序。
strace命令用于跟踪并记录进程执行期间的系统调用和信号。它可以帮助我们了解进程与操作系统之间的交互过程,定位问题,进行调试和性能分析等。
strace命令的使用语法为:
strace [-c] [-f] [-o <output_file>] [-p <pid>] <command>
- -c: 统计系统调用的时间信息
- -f: 跟踪由父进程创建的子进程
- -o <output_file>: 将输出结果保存到指定文件中
- -p <pid>: 跟踪指定进程的系统调用
strace命令的输出结果包括每个系统调用的参数、返回值、耗时等信息。通过分析输出结果,我们可以了解进程的行为和性能瓶颈。
以下是strace命令的一些常见用法与效果:
1.跟踪指定命令的系统调用:
$ strace ls
这会输出ls命令执行期间的所有系统调用和信号。
2.统计系统调用的时间信息:
$ strace -c ls
这会输出ls命令执行期间各个系统调用的调用次数和总花费时间。
3.跟踪指定PID的进程:
$ strace -p 12345
这会输出进程ID为12345的进程执行期间的所有系统调用和信号。
4.将结果保存到文件中:
$ strace -o output.txt ls
这会将ls命令执行期间的所有系统调用和信号保存到output.txt文件中。
需要注意的是,strace命令会降低程序的执行性能,并且输出结果可能非常庞大。因此,在真实环境中,我们需要根据具体情况选择合适的参数和过滤条件来减少输出结果的大小。
三、wall:给其他登录用户发送信息。
Linux的wall命令用于向所有已登录的用户发送特定的消息。该命令可以用来向所有用户发送通知、警告或其他消息。
使用wall命令的语法是:
wall [文件名]
文件名参数为可选项,用于指定包含消息内容的文件。如果省略文件名,则可以在命令行中输入消息内容。
使用wall命令发送消息后,所有已登录的用户将在其终端上收到该消息的通知。收到消息的用户可以继续使用终端,但会在屏幕的顶部看到收到的消息。
以下是wall命令的示例用法及其效果:
1.向所有用户发送消息
wall "系统将在10分钟后进行维护,请注意保存工作。"
这将向所有已登录的用户发送一条消息,通知他们系统将在10分钟后进行维护,并提醒他们保存工作。
2.从文件中发送消息
wall message.txt
假设message.txt是一个包含消息内容的文本文件。使用这个命令,可以将文件中的消息发送给所有已登录的用户。
请注意,使用wall命令发送消息需要root权限。只有root用户或具有root权限的用户才能发送消息给所有用户。
四、ascii:显示ASCII码。
ASCII命令是一种用来在终端中显示ASCII艺术的命令。ASCII艺术是一种使用ASCII字符来表达图像或文本的艺术形式。
以下是常见的Linux ASCII命令用法与效果:
-
ascii
命令用法:- 输入
ascii
命令后,会在终端中显示一个菜单,包含不同的ASCII艺术模式,可以选择不同的模式来显示不同的图案。 - 选择一个模式后,会在终端中显示相应的ASCII艺术。
- 输入
-
figlet
命令用法:figlet
命令可以将输入的文本转换为ASCII艺术风格的大字体。- 例如,输入
figlet Hello
,会在终端中显示一个用ASCII字符组成的大号"Hello"字样。
-
toilet
命令用法:toilet
命令也可以将输入的文本转换为ASCII艺术风格的大字体,不过相比于figlet
命令,toilet
命令提供了更多的字体和风格选项。- 例如,输入
toilet -f big Hello
,会在终端中显示一个较大号的"Hello"字样。
-
cowsay
命令用法:cowsay
命令可以将输入的文本以一只卡通牛的形象输出到终端中,并将文本放在牛的嘴里。- 例如,输入
cowsay Hello
,会在终端中显示一只牛,并显示出"Hello"这句话。
这些命令都可以通过在终端中输入man
命令加上命令名来查看更多的用法和选项。例如,输入man ascii
可以查看ascii
命令的帮助文档。
五、cal:查看日历。
Linux的cal命令用于显示指定月份的日历。它的语法如下:
cal [选项] [月份] [年份]
其中,选项可以是以下之一: -n:以一周从周日开始的方式显示日历 -y:以一年的方式显示日历 -j:显示一年中每一天的日历 -3:显示前一个月、当前月和下一个月的日历
月份是指定的月份,范围是1到12。年份是指定的年份,范围是1到9999。
使用cal命令时,可以不指定月份和年份,默认显示当前月份的日历。如果只指定年份,则默认显示该年的一整年日历。
以下是一些使用cal命令的示例及其效果:
-
cal 显示当前月份的日历。
-
cal -n 以一周从周日开始的方式显示当前月份的日历。
-
cal -y 以一年的方式显示当前年份的日历。
-
cal -j 显示当前年份的每一天的日历。
-
cal 6 2022 显示2022年6月的日历。
-
cal -3 显示前一个月、当前月和下一个月的日历。
这些只是cal命令的一些常见用法,还有其他更多的选项和用法。可以通过man cal命令来查看cal命令的完整文档以了解更多信息。
六、reset:解决终端问题。
Linux reset命令用于重置终端的设置,包括字符编码、颜色设置等。当终端的设置出现混乱或者乱码时,可以使用reset命令恢复终端的默认设置。
使用reset命令的语法如下:
reset
运行reset命令后,终端将恢复默认设置,并清除屏幕上的内容。此时,终端将回到一个空白的状态,重新开始输入。
注意:reset命令将清除终端的设置,但不会影响当前的shell会话。如果需要恢复终端的设置并重启shell,可以使用exec bash
命令。
七、watch:每隔指定时间调用一次命令。
watch命令是Linux系统中的一个实用工具,它可以周期性地执行指定的命令,并将命令的输出结果实时显示在终端上。watch命令的用法如下:
watch [选项] 命令
常用选项有: -n, --interval 秒数:指定刷新间隔的秒数,默认为2秒。 -d, --differences:高亮显示命令输出的改变部分。 -t, --no-title:不显示watch命令的标题栏。 -h, --help:显示帮助信息。
使用watch命令的效果是,命令的输出结果会被周期性地显示在终端上,并根据需要可以实时更新。这对于需要监视某个命令的输出结果的情况非常有用,比如查看日志文件、监控系统状态等。
八、tree:显示目录树。
在Linux系统中,tree命令用于以树状图的形式显示指定目录下的文件和子目录。
tree命令的基本用法是:
tree [选项] [目录]
常用的选项包括:
-d:只显示目录,不显示文件。
-L level:限定显示的层级。例如,-L 2表示只显示两层目录。
-P pattern:只显示符合指定模式的文件和目录。
-I pattern:不显示符合指定模式的文件和目录。
-f:以全路径的形式显示文件和目录。
下面是一些tree命令的示例和效果:
1.显示当前目录下的文件和子目录:
$ tree
.
├── file1.txt
├── file2.txt
└── subdirectory
├── file3.txt
└── file4.txt
2.显示当前目录下的目录,不显示文件:
$ tree -d
.
└── subdirectory
3.限定显示两层目录:
$ tree -L 2
.
├── file1.txt
├── file2.txt
└── subdirectory
├── file3.txt
├── file4.txt
└── subdirectory2
4.只显示以.txt结尾的文件:
$ tree -P "*.txt"
.
├── file1.txt
├── file2.txt
└── subdirectory
├── file3.txt
└── file4.txt
5.不显示以file开头的文件和目录:
$ tree -I "file*"
.
└── subdirectory
└── subdirectory2
九、tac:将文件内容反向输出。
Linux tac命令用于以相反的顺序显示文本文件的内容。它将按照行的相反顺序显示文件的内容,即将文件的最后一行显示在最前面,第二个最后一行显示在第二行等等。
语法: tac [选项] [文件]
常用选项:
- b:指定缓冲区的大小,单位为KB。
- r:以逆向顺序显示文件的内容。
- s 字符串:使用指定的字符串作为输入标志,多个字符串之间用空格分隔。
例如,假设我们有一个名为file.txt的文件,其中包含以下内容:
Hello World How Are You
运行 tac file.txt 命令将输出:
You Are How World Hello
十、jq:在终端处理JSON数据。
jq命令是一个用于在Linux系统中处理JSON数据的命令行工具。它可以用来解析、过滤、修改和格式化JSON数据。
以下是一些常见的jq命令用法和他们的效果:
- 解析JSON数据:使用 jq '.' 命令可以将JSON数据格式化展示出来。
例如:
echo '{"name": "John", "age": 30}' | jq '.'
输出结果:
{
"name": "John",
"age": 30
}
1.过滤JSON数据:使用jq命令可以根据条件过滤JSON数据。
例如:
echo '{"name": "John", "age": 30, "gender": "male"}' | jq '.name'
输出结果:
"John"
2.修改JSON数据:使用jq命令可以修改JSON数据的值。
例如:
echo '{"name": "John", "age": 30}' | jq '.age = 40'
输出结果:
{
"name": "John",
"age": 40
}
3.嵌套过滤:使用jq命令可以在嵌套的JSON结构中进行过滤。
例如:
echo '{"people": [{"name": "John", "age": 30}, {"name": "Jane", "age": 25}]}' | jq '.people[] | .name'
输出结果:
"John"
"Jane"
4.管道操作:使用jq命令可以通过管道操作连接多个操作。
例如:
echo '{"people": [{"name": "John", "age": 30}, {"name": "Jane", "age": 25}]}' | jq '.people[] | select(.age > 28) | .name'
输出结果:
"John"
以上是一些jq命令的常见用法和他们的效果,希望对你有帮助。
##欢迎关注交流