前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Linux开发的相关配置:tldr | 分屏操作 | 管道

使用Linux开发的相关配置:tldr | 分屏操作 | 管道

作者头像
CtrlX
发布2023-03-21 11:50:37
1.3K0
发布2023-03-21 11:50:37
举报
文章被收录于专栏:C++核心编程

1. 抛弃man,使用tldr优雅地阅读手册

1.1 Too Long;Didn’t Read

linux一切都在命令行下操作,有着丰富的命令行工具。但是当你对命令不熟(再优秀的程序员也无法记住全部),却想做什么的时候却有点懵,比如用于打包解压缩命令的tar,怎么用?

打开搜索,咔咔一顿搜,解决了,但是很快就忘,下次又开始搜,聪明点的朋友可能会使用man命令,打开tar的手册。然而,tar的手册是这个画风:

又臭又长,需要你有较好的英语基础和耐心。不仅仅是我们这么觉得,会英语的老外都觉得烦,于是有大神开发了tldr工具。tldr即Too Long;Didn’t Read的简写,太长不看。

使用方法和man一样,比如查看tar命令的用法:

代码语言:javascript
复制
tldr tar

他的画风如上,虽然还是英语(不要害怕英语,这是一个程序员的基本功),但是他给出了使用的例子!排版简洁、清晰,收纳了使用率高的例子。

比如你要解压缩,看到这,

即使你的英语水平不高,凭有限的词汇量, 你也能知道应该用什么参数了吧,可读性极强

1.2 安装tldr

ubuntu下安装很简单,执行以下三条命令:

代码语言:javascript
复制
sudo apt-get install nodejs
sudo apt-get install npm
sudo npm install -g tldr

如果出现了警告,有可能是因为nodejs版本问题,用一下命令升级nodejs:

代码语言:javascript
复制
sudo apt-get install nodejs-legacy
sudo npm install -g n
sudo n latest

如果升级nodejs失败,可能是Ubuntu版本问题,用以下命令安装稳定版nodejs:

代码语言:javascript
复制
sudo n stable
sudo node -v

然后再安装tldr

代码语言:javascript
复制
sudo npm install -g tldr

用一下命令可以对tldr更新

代码语言:javascript
复制
tldr --update

2. 让你的终端分屏显示

2.1 终端复用器(terminal multiplexer)

通过ssh登录linux只有一个命令行界面,用tmux,让他分开!

如图,一个界面分成很多块,我们可以一边写程序,一边查看其他东西。

可以任意调整各个窗格大小与数量

优雅! 一个命令即可安装:

代码语言:javascript
复制
apt-get install tmux

2.2 tmux操作

2.2.1 启动tmux

直接输入

代码语言:javascript
复制
tmux

如图,出现 绿色栏就说明进入tmux环境了。

2.2.2 退出tmux

一个exit命令即可退出。

代码语言:javascript
复制
exit

2.2.3 分屏

左右分屏:在要分屏的窗格下输入

代码语言:javascript
复制
tmux split-window -h

上下分屏就是把-h去掉。

代码语言:javascript
复制
tmux split-window

2.2.4 切换当前窗格

记住ctrl+b是tmux的各种快捷键的启动键

切换窗格步骤:

1.按ctrl+b,松开。2.按方向键,如要切换到右边就按->。

2.2.5 调整窗格大小

先切换到要调整的窗格,然后:

1.按ctrl+b,不松开。2.按方向键

2.2.6 关闭一个窗格

先切换到要关闭的窗格,然后:

1.按ctrl+b,松开。2.按x。

什么?还不够优雅、高效,还是习惯在windows下写好,再放到Linux下编译?

是的,这样是正确的选择,完全没问题,但是如果不是写大型项目,其实直接再Linux下使用vim/vi会更加优雅!

vim/vi可不是记事本,他有着强大的查找、搜索、替换…..等功能,并且可以让你完全脱离鼠标,属于越用越喜欢的慢热型。不过确实比较复杂。

上面的只是初级优雅,真正的优雅来了。

3. 管道配合printf调试程序

Linux下,gdb是一个很好的调试工具,不会用的可以学一下,在这篇文章中,我并不打算介绍gdb,而是教你用管道机制,利用Linux里一些命令配合printf来调试。

Linux 下程序可以协同工作,可以将一个命令/程序的输出通过管道(Pipes)连接到另一个命令/程序的输入,管道操作符是 |

在程序中使用printf加入调试信息,或作为输出信息,是常用的调试和输出方法,但经常会遇到打印出几百行,不容易阅读的情况。

3.1 基操:联合grep找到想要的信息

比如一个输出进程信息的程序,运行后很长(这里只展示了一部分)。

我们想看看包含system字样的,只需:

代码语言:javascript
复制
./pstree.o |grep system

ok,只输出了含system的。

3.2 用head让程序只输出一部分

比如一个输出信息特别多的程序,我们有时只想看几行信息

-n后面的参数就是表示输出的行数。这个操作看似作用不大,实则特别有用

比如一个程序,里面的printf会运行n次,为了测试程序,n可能很大,用head命令就相当于想让他让运行几次就运行几次!

写一个简单的程序模拟一下该情况:

代码语言:javascript
复制
#include <stdio.h>
int main (int argc, char **argv)
{
        int i,j;
        j = 8;
        for(i = 0;i < 10000;i++) {
                if (i % j == 0) {
                        printf("0\n");
                        j++;
                }
                printf("1\n");
        }
}

!

3.3 用sort排序输出结果

sort的-u选项

在输出行中去除重复行。

sort的-r选项

sort默认的排序方式是升序,想改成降序,加-r。

sort的-t选项和-k选项

如果一行的输出有好几个部分/列,比如:

代码语言:javascript
复制
a:1:30:d
 
b:2:30:c
 
f:1:1:a

每行都有4列,列与列之间用冒号隔开了,我想用第4列排序,怎么办?

加上-t选项,后面跟间隔符,指定了间隔符之后,用-k来指定列数。

另外,管道机制可以让命令连用

3.4 uniq命令统计输出结果

uniq命令不带任何参数会删除重复出现的行

代码语言:javascript
复制
-c	: 在每列旁边显示该行重复出现的次数



-d	: 仅显示重复出现的行列



-u	: 仅显示出一次的行列(没有重复的)

有了这个-c选项,再配合sort就可以统计输出了

如上,表示 程序的前一百行输出里0输出了12次,1输出了88次。

这些功能我们完全可以在自己写的程序里实现,然后调试,这并不难,但是也会麻烦,而且这都是为了调试我们的程序,跟我们程序功能实际上不沾边,既然有现成的好用的轮子,为什么不用呢?

管道才是Linux的终极优雅!

参考文章:https://blog.csdn.net/freestep96/article/details/127466283?spm=1001.2014.3001.5506

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 抛弃man,使用tldr优雅地阅读手册
    • 1.1 Too Long;Didn’t Read
      • 1.2 安装tldr
      • 2. 让你的终端分屏显示
        • 2.1 终端复用器(terminal multiplexer)
          • 2.2 tmux操作
          • 3. 管道配合printf调试程序
            • 3.1 基操:联合grep找到想要的信息
              • 3.2 用head让程序只输出一部分
                • 3.3 用sort排序输出结果
                  • 3.4 uniq命令统计输出结果
                  相关产品与服务
                  命令行工具
                  腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档