如何在linux上优雅地写代码-linux生存指南

author author     2023-02-14     811

关键词:

初入Linux,发现老是要面对一个命令行,大黑框,看不懂各种手册,写代码也是用vi/vim,难受的捉急。其实Linux下的各种工具,强大得超出你的想象,如果你初入Linux,那么你急需阅读这篇文章,让你更加优雅,更加高效。

更多linux、嵌入式、单片机文章与参考资料:大叔的嵌入式小站:

​如何在Linux上优雅地写代码​

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

1.1 Too Long;Didn’t Read

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

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

如何在Linux上优雅地写代码-Linux生存指南_嵌入式

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

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

tldr tar

如何在Linux上优雅地写代码-Linux生存指南_嵌入式_02

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

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

如何在Linux上优雅地写代码-Linux生存指南_分屏_03

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

1.2 安装tldr

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

sudo apt-get install nodejs

sudo apt-get install npm

sudo npm install -g tldr

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

sudo apt-get install nodejs-legacy

sudo npm install -g n

sudo n latest

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

sudo n stable

sudo node -v

然后再安装tldr

sudo npm install -g tldr

用一下命令可以对tldr更新

tldr --update

2. 让你的终端分屏显示

2.1 终端复用器(terminal multiplexer)

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

如何在Linux上优雅地写代码-Linux生存指南_分屏_04

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

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

如何在Linux上优雅地写代码-Linux生存指南_分屏_05

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

apt-get install tmux

2.2 tmux操作

2.2.1 启动tmux

直接输入

tmux

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

如何在Linux上优雅地写代码-Linux生存指南_linux_06

2.2.2 退出tmux 

一个exit命令即可退出。

exit

2.2.3 分屏

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

tmux split-windosw -h

上下分屏就是把-h换成-w。

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可不是记事本,他有着强大的查找、搜索、替换.....等功能,并且可以让你完全脱离鼠标,属于越用越喜欢的慢热型。不过确实比较复杂,不想在这么优雅的文章里介绍他,想学的可以看:

​一文彻底解决vi/vim编辑器操作​

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

3. 管道配合printf调试程序

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

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

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

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

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

如何在Linux上优雅地写代码-Linux生存指南_linux_07

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

./pstree.o |grep system

如何在Linux上优雅地写代码-Linux生存指南_分屏_08

ok,只输出了含system的。

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

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

如何在Linux上优雅地写代码-Linux生存指南_分屏_09

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

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

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

#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");

如何在Linux上优雅地写代码-Linux生存指南_分屏_10

3.3 用sort排序输出结果

sort的-u选项

在输出行中去除重复行。

sort的-r选项

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

 sort的-t选项和-k选项

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

a:1:30:d

b:2:30:c

f:1:1:a

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

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

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

如何在Linux上优雅地写代码-Linux生存指南_linux_11

3.4 uniq命令统计输出结果 

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

-c  : 在每列旁边显示该行重复出现的次数
-d : 仅显示重复出现的行列
-u : 仅显示出一次的行列(没有重复的)

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

如何在Linux上优雅地写代码-Linux生存指南_嵌入式_12

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

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

管道才是Linux的终极优雅!

​更多linux、嵌入式、单片机文章与参考资料:大叔的嵌入式小站:

​如何在Linux上优雅地写代码​


优雅地杀死在 Linux 上运行的 .NET Core 守护进程

】优雅地杀死在Linux上运行的.NETCore守护进程【英文标题】:Killinggracefullya.NETCoredaemonrunningonLinux【发布时间】:2016-11-1211:50:00【问题描述】:我创建了一个.NETCore控制台应用程序,在Ubuntu14.04机器上作为守护程序运行。我想停止服... 查看详情

linux环境如何使用kill命令优雅停止java服务(代码片段)

我是陈皮,一个在互联网Coding的ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复【资料】,即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板。目录1前言2kill命令3... 查看详情

如何优雅地运用位运算实现产品需求?(代码片段)

如何优雅地运用位运算实现产品需求?在开始正文之前,我们先来说一下Linux的系统权限设计。在Linux系统中,为了保证文件的安全,对文件所有者、同组用户、其他用户的访问权限进行了分别管理。其中,文件所有者,即建立... 查看详情

如何在linux下使用tc优雅的实现网络限流

1.Linux下的流量控制原理通过对包的排队,我们可以控制数据包的发送方式。这种控制,称之为数据整形,shapethedata,包括对数据的以下操作:增加延时丢包重新排列重复、损坏速率控制在qdisc-class-filter结构下,对流量进行控制需... 查看详情

在同一台 linux 机器上使用 zope-plone 安装 xampp 的指南?

】在同一台linux机器上使用zope-plone安装xampp的指南?【英文标题】:Guidetoinstallxamppwithzope-ploneonthesamelinuxmachine?【发布时间】:2011-03-1501:52:42【问题描述】:是否有一个很好的分步在线指南来在同一台linux机器上安装xampp(apache服... 查看详情

linux使用:环境变量指南和cpu和gpu利用情况查看(代码片段)

Linux使用:环境变量指南和CPU和GPU利用情况查看Linux环境变量初始化与对应文件的生效顺序Linux的变量种类设置环境变量直接运行`export`命令定义变量修改系统环境变量修改用户环境变量修改环境变量配置文件环境配置文... 查看详情

systemctl命令完全指南(代码片段)

...Systemctl管理Linux服务本文旨在阐明在运行systemd的系统上“如何控制系统和服务”。Systemd初体验和Systemctl基础1.首先检查你的系统中是否安装有systemd并确定当前安装的版本#systemctl--versionsystemd215+PAM+AUDIT+SELINUX+IMA 查看详情

markdown如何在linux上安装tcpping(代码片段)

查看详情

如何分析在 Linux 上运行的 C++ 代码?

】如何分析在Linux上运行的C++代码?【英文标题】:HowcanIprofileC++coderunningonLinux?【发布时间】:2010-09-2709:59:24【问题描述】:我有一个在Linux上运行的C++应用程序,我正在对其进行优化。如何确定代码的哪些区域运行缓慢?【问... 查看详情

如何在 Linux 终端上运行带有输入的 python 代码? [复制]

】如何在Linux终端上运行带有输入的python代码?[复制]【英文标题】:HowcanIrunapythoncodewithinputonLinuxterminal?[duplicate]【发布时间】:2020-01-0814:03:51【问题描述】:我有一个名为myadd.py的文件,其中只包含以下函数:defmyadd(a,b):returna+b... 查看详情

如何分析 Rcpp 代码(在 linux 上)

】如何分析Rcpp代码(在linux上)【英文标题】:HowtoprofileRcppcode(onlinux)【发布时间】:2017-09-2520:03:58【问题描述】:我用Rcpp制作了一个R包,其中整个模拟在C++中运行,结果在R中分析。现在我需要分析我的函数以便优化它们,但... 查看详情

如何在 Linux 中编译 C 代码以在 Windows 上运行? [复制]

】如何在Linux中编译C代码以在Windows上运行?[复制]【英文标题】:HowtocompileCcodeinLinuxtorunonWindows?[duplicate]【发布时间】:2017-06-2108:02:59【问题描述】:我正在使用Linux/GNUGCC来编译C源代码。有什么方法可以为在x86或x64架构上运行的... 查看详情

趣谈网络协议工具篇:如何在linux上添加路由(代码片段)

一、使用ip在Linux上添加路由在Linux上添加路由的最简单方法是使用“iprouteadd”命令,后跟要到达的网络地址和要用于此路由的网关。$iprouteadd<network_ip>/<cidr>via<gateway_ip>#Example$iprouteadd10.0 查看详情

sh如何在linux上运行mongo服务器?(代码片段)

查看详情

如何优雅的用vscode编写c++大型项目?(代码片段)

vscode远程开发配置由于后面项目用到了epoll和splice,这些都是unix环境中才有的调用,所以我们还是需要在linux环境中开发,我选用的vscode连接linux进行远程开发选用vscode的原因在这里只跟clion做下比较,clion支持的fu... 查看详情

it菜鸟的生存指南那些人才适合从事it行业

此文献给那些刚误入IT行业的小菜鸟们,此文无法教你如何“当上CEO,迎娶白富美”,那是电视剧情。现实IT行业里危机重重,竞争激励。这里教你的是如何生存、生存、生存…   JustdoIT(老段子,爱笑不笑)10年前一个... 查看详情

it菜鸟的生存指南那些人才适合从事it行业

此文献给那些刚误入IT行业的小菜鸟们,此文无法教你如何“当上CEO,迎娶白富美”,那是电视剧情。现实IT行业里危机重重,竞争激励。这里教你的是如何生存、生存、生存…   JustdoIT(老段子,爱笑不笑)10年前一个... 查看详情

it菜鸟的生存指南那些人才适合从事it行业

此文献给那些刚误入IT行业的小菜鸟们,此文无法教你如何“当上CEO,迎娶白富美”,那是电视剧情。现实IT行业里危机重重,竞争激励。这里教你的是如何生存、生存、生存…   JustdoIT(老段子,爱笑不笑)10年前一个... 查看详情