谢请,

linux下编程已经玩了十几年在这个巨无霸里面很多有意思的事情,特别是脚本熟练使用能够极大的提高代码开发效率。记得刚开始接触linux的时候,觉得这东西太有意思了,于是工作前两年在linux下的功夫特别大,看到脚本就想研究,差不多在工作一年多的时候,公司整个的编译体系给重构掉了,大家只要发生编译的问题或者环境问题都会第一时间来找我,刚入行的那份成就感,已经无法用语言来表达了。linux下的cmake,automake, autoconf, m4, perl, bash,ash,qmake等自动编译体系看到这些东西就来劲,后来在写代码的时候都习惯用vim直接来编写了,虽然在联想等方面有一些差异,但用熟练了效率非常高。

为什么很多人都有一个linux情怀,主要还是现在编程语言多少和linux有一定的关联,C语言创始人在创建C语言的时候,本来就是把unix绑在一起搞的,所以很多程序员喜欢Mac,也有这么点历史渊源,闲扯了这么多,主要提到linux本身有很多话语要将,而且将来一定还会继续坚持在这上面玩耍,回到正题linux下如何统计代码行数

可以直接借助工具来完成,也可以直接采用脚本来完成,现在就根据自己接触到一些工具或者命令行在做这个事情。

1.直接采用wc命令

现在选取webkit内核源码中一个解析form表单的cpp文件进行行号的统计FormSubmission.cpp

wc -l FormSubmission.cpp

注意这个文件放的位置,在当前目录下

Linux下如何统计代码行数?-编程之家

这个文件行号就是254,为了验证准确性,现在直接采用vim方式打开,看到最后一行是254

Linux下如何统计代码行数?-编程之家

如果想了解更多wc命令的用法可以使用下面方法,进入学习状态之后方法总比困难多

Linux下如何统计代码行数?-编程之家

2.cat命令

cat -n FormSubmission.cpp

直接在最底层显示的就是行号了

Linux下如何统计代码行数?-编程之家

3.nl FormSubmission.cpp

Linux下如何统计代码行数?-编程之家

4.less -N FormSubmission.cpp

直接分行显示后面直接滚动到最后一行

Linux下如何统计代码行数?-编程之家

5.awk ‘{print NR,$0}’ FormSubmission.cpp

awk在处理输出文本上有极大的作用

Linux下如何统计代码行数?-编程之家

还可以再继续优化

Linux下如何统计代码行数?-编程之家

6.sed -n ‘$=’ FormSubmission.cpp

sed一种在线编辑器,一次只是处理一行内容

Linux下如何统计代码行数?-编程之家

7.cat FormSubmission.cpp | wc -l

来个组合处理拿到行号

Linux下如何统计代码行数?-编程之家

其实统计一个文件的行号只是一种很简单的功能,但在linux可以玩出很多的花样,因为喜欢才会想着有这么多的方法去解决这个问题,虽然linux在桌面系统占比不是很高,但在程序员领域却是相当受欢迎,很多做程序的基本上都喜欢玩linux,不懂linux的程序员会觉得留有遗憾。

linux是一门值得研究一辈子的操作系统。

学习linux时的笔记 不客气

Ls—list 显示当前目录列表 -a (all 显示所有文件有.表示隐藏)-l -h 显示详细文件

Cd—chang directory cd+目录(cd~表示回家目录cd.表示当前目录..会=回上级目录cd-在最近两次工作目录切换)

pwd—print work directory

touch—创建文件

mkdir—make directory(-p创建递归目录 例如:mkdir –p 1/2/3/4)

rm—remove (-r删除目录 –f 强制删除文件)

clear—清理终端

tree—列出树状

cp—copy 原文件 (空格)目标文件 -i(复制文件给提示)-r 文件夹

mv—move原文件 (空格)目标文件-i(复制文件给提示)

cat—concatenate 全部显示 –b输出行号 –n输出全部行号

more—查看内容 分屏显示 q退出

grep—搜索文本内容 (-n行数 –v不包含的 行 –i 忽略大小写 ^行首模式查找 $行尾模式查找)

echo—重定向 (>输出到文件 >>追加内容 例如:ls -lh >a 输出内容到文件a echo hello python >> a 追加内容到a )

shutdown—关机 (-r重启 -c取消 例如:shutdown 2:05在这个时间关机 shutdown +10 在十分钟后关机)

ifconfig—查看ip地址 结合| 例如 ifconfig | grep inet

ping ip (web 默认端口80 ssh默认端口22)

ssh 【-p port】 user@remote(ip地址)

scp –P port 本地文件 user2remorte:目标文件

scp –P port user2remorte:目标文件 本地文件(-r目录)

gedit—打开文件 终端中打开文件需要 指定.当前目录下 ./文件

chmod—改变权限(+/- rwx 读写执行)语法: chmod 参数 目录 第79集高级用法

chgrp –R 组名 文件 需要超级用户

chowm 修改文件拥有者 chown 用户名 文件名/目录名

sudo—暂时超级用户

group add/del 增减组 在~下执行 需要超级用户

cat /etc/group 查看组

useradd/del -m(同时建立家目录 ) –g 组 名

passwd

id 用户—查看信息

who / whoai 查看用户

user

cat /etc/group (/etc/group) 查看组/用户

usermod—修改用户组 user –g(主组) -G(附加组)组 用户名

usermod –s /bin/bash 用户 修改用户名登陆 第75集

which—查看文件夹目录/命令目录

(bin里面储存可执行二进制文件 sbin 中s表系统 /usr/bin 后期安装的软件 /user/sbin系统管理文件)

su—切换用户 su 用户名 su – 进入root (-表示进入目录)

Tab键自动补全

通配符

*表示0~n个字符

?表示1个字符

表示可以匹配的字符组(表示a到z的所用字符)

|管道 例如:ls |grep a ls输出的内容用grep再次处理

wc -|* 当前目录

find .*|xargs wc -|

可以把*改成java,就只统计java