GNU/Linux话题
GNU/Linux话题
- 之初
- 一些基础命令
- hwclock
- xz
- sed
- 例子1:删空行
- 例子2:删除换行符
- grep
- xargs
- awk
- 统计代码行数
- wc
- tar
- find
- git
- git起步走
- 在ubuntu12上安装git
- gdb
- 测试覆盖率工具
- gcov
- lcov
- modinfo
- nm
- 一些内存命令
- pmap
- top
- bash
- 基础
- 逻辑比较操作
- 循环控制
- 控制语句
- &
- nohup
- 一些函数
- statfs
- access
- 调试手段
- 导出异常文件-core
- 开放限制
- 定制core的名称
- gdb
- objdump
- 神奇的编辑器
- vim
- 快速查找其他引用位置
- emacs
- 嵌入式
- 关于设备时间
- Win10下的Linux
- 必须说
- 网络通信
- 内部进程通信
- 网络资料
- 制作Ubuntu的ISO
之初
不用我说,用过的都知道,帅呆了。一个程序只干一件事的哲学,串联起来征服了数字世界。在此记录GNU/Linux使用痕迹,又是一个身材匀称的胖子。
一些基础命令
hwclock
硬件时间设置就靠他。例如你可以把系统时间同步到硬件时间时间,也可以反向操作。下面的命令就是系统->硬件的同步过程。
date -s 07/20/2021
date -s 09:34:30
hwclock --systohc
xz
- 下面的命令可以可靠的解出xz格式的压缩文件,不要指望tar -xzvf 能帮咱们解开这样的文件。
xz -d you_file.tar.xz
- 压制一个xz格式的文件。
xz -z you_file_or_dir
sed
命令行下的三大神器之一,行编辑命令。看看下面的命令在干什么坏事。
例子1:删空行
#我删删删
sed -i "/^[ ]*$/d" target_text_file
例子2:删除换行符
windows文本与linux文本的纠结,在这里终结吧。你知道吗?\r的十六进制表示是0x0d,同样的情况,\n的十六进制表示是0x0a。
sed -i 's/\r$//' target_file
grep
干净漂亮
ps -ef |grep process_name |grep -v "grep"
xargs
牛哄哄的工具,有时候需要参数自动化处理,xargs是必备。
awk
神器之一:awk
基本格式:awk ‘{BEGIN some code} {some code} {END some code}’ 关注-F 选项。awk自秀一下吧。
统计代码行数
虽然wc -l ./*.cpp已能料理好这个事情,一切为了效果。
wc -l ./your_code_dir/*.cpp |awk '{BEGIN sum=0} {sum +=$1} {print sum}'
wc
wc -l target_text_file
tar
find
find /usr/bin -name "ls*"
git
git起步走
概念要明确。比如:commit id就很重要,后悔药都靠它了。HEAD,HEAD^和HEAD~100的区别要明白,它们都和回退相关。超长的版本号(commit id) 269ce5f6acae225…不要晕,时常只用前4,5个就可以匹配了。
看看下面常用的命令。
- git clone your_remote_repo.
- git log.
- git log --pretty=one
- git reset --hard HEAD^ 或者 git reset --hard commit_id
- git reflog 后滚后再前滚时,它是解药,可以帮助找到commit id.
- git init --bare your_repo_name 记得修改拥有者为git,chown -R git:git your_repo_name.
- git remote -v 在仓库中查看远程库地址。记得是在迁出代码的本地仓库中执行它。
在ubuntu12上安装git
1.在/etc/apt/sources.list中放置好的,快的源服务器,关键字:apt sources.list。
2.apt update 或者 apt-get update。
3.apt/-get install git。好了,基本可以干好了。
下面是添加源服务器的另一个办法。
在ubuntu下添加源后,在线安装apt install git .
添加源的命令如下:
add-apt-repository ppa:git-core/ppa
apt update
apt install git
gdb
gdb依然是类unix平台下调试程序的NB工具。目前我在嵌入式下用它调试代码。
1.关于gdb的自动测试.
一段简单的gdb调试脚本,gdb专用。
#debug_your_code.gdb
break your_code_file_name.c:linecommands 1p your_code_varcontinue
end
run
加载debug_your_code.gdb有两种方法:
- 交互模式下:进入gdb交互界面,file your_program, source debug_your_code.gdb
- 参数方式:gdb --batch --command=debug_your_code.gdb --args your_program
我更喜欢第2种方法。
需要注意的内容:编译时添加 -g编译选项。例如:在Qt环境下,在pro文件中添加:CONFIG += -g。
测试覆盖率工具
如果你的项目中测试覆盖率达到100%,那么恭喜你,不用接客户电话了。来点冰凉的水,清醒一下,100%那是什么存在?他只是个传说,努力的,绞尽脑汁的接近她,拥有她,你就成了。
gcov
GNU free的覆盖率检查工具。
编译选项中增加:-ftest-coverage -fprofile-arcs。编译后生成your_app_name.gcno。运行后生成your_app_name.gcda。就这么简单。接下来看下一条命令:lcov。
lcov
让你的gcda 可视化。做一下动作:
- lcov -c -d ./ -o your_app_name.info 该命令生成info文件,供第二条试用;
- genhtml -t “your_app_name” -s --legend -o html your_app_name.info 该命令生成html可视化文件,一目了然。
这里有进一步资料,凑合着看。遇见更好的内容,我会尽快追加。
modinfo
驱动的面纱,我用modinfo揭。
modinfo you_driver
insmod your_driver param_name_1=value1 param_name_2=value2
nm
目标二进制文件中,函数的名称是什么?nm带你一睹芳容。
nm -s your_binary_file
一些内存命令
pmap
通过进程ID查看进程的内存占用和分布情况。
pmap 1249 -x #这是我的实验进程
top
假设你想看进程的内存占用。粗略的显示。
top -p 1249
cat /proc/1249/status #可以更多内容
bash
它是GNU/Linux下流行的脚本解释器,网上的资料较多。这里记录特别的内容。
特点:对空格敏感,例如赋值号前后不能有空格,否则就头疼把,知道就好。
基础
逻辑比较操作
用于数值比较,测试语法:[ ],注意[]中需要填充空格
- -gt 大于 >
- -ge 大于等于 >=
- -lt 小于 <
- -lt 小于等于 <=
- -eq 等于 ==
if [ a -gt b ]; thencommand
fi
循环控制
for , while,until.看一下例子,了解基础框架。
for item in list; docommand
done
for (( i=0; i<10; ++i ); docommand
done
while [ 1 ]; doif [ -f file ]; thenbreakficommmand
done
until [ -f quit ]; docommand
done
控制语句
if, select, case,看名知意思
if [ ! -f file ]; thencommand
el[se/if]command
fi
select name in "tigger" "rabbit" "wolf"; docase ${name} in"rabbit"|"wolf") break;;"tigger") ;;esac
done
&
timer.sh &
这里的&,用于开启一个sub-shell,在后台运行。可以通过fg取回到当前shell中,通过jobs查看sub-shell的运行状态。
技能特点:
- 调用者立即返回,返回为0,不阻塞后面的命令;
- 调用者shell退出后,sub-shell不会受其影响;
- sub-shell的输出仍在shell中输出;
nohup
真正的把sub-shell独立处理出来。接上节,让timer.sh放飞自我,自由翱翔一会儿。
nohup timer.sh &
一些函数
statfs
获取硬盘信息。
access
调试手段
导出异常文件-core
开放限制
查看是否允许导出,ulimit -c返回0表示关闭。使用ulimit -c unlimited 开放限制。
ulimit -c
ulimit -c unlimited
定制core的名称
- 通过修改 /proc/sys/kernel/core_uses_pid 文件可以让生成 core 文件名是否自动加上 pid 号。
例如 echo 1 > /proc/sys/kernel/core_uses_pid ,生成的 core 文件名将会变成 core.pid,其中 pid 表示该进程的 PID。 - 通过修改 /proc/sys/kernel/core_pattern 来控制生成 core 文件保存的位置以及文件名格式。
例如可以用 echo “/tmp/core-%e-%p-%t” > /proc/sys/kernel/core_pattern 设置生成的 core 文件保存在 “/tmp/” 目录下,文件名格式为 “core-命令名-pid-时间戳”。格式控制看这里.
%p - insert pid into filename 添加 pid
%u - insert current uid into filename 添加当前 uid
%g - insert current gid into filename 添加当前 gid
%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号
%t - insert UNIX time that the coredump occurred into filename 添加 core 文件生成时的 unix 时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
gdb
objdump
objdump -tT your/lib/path/libname #查看动态或静态库中的函数名称
神奇的编辑器
vim
这是一个神奇的编辑器,不用鼠标,只用键盘就能超速搞定你那一亩三分地儿。主要是有意思。
快速查找其他引用位置
移动光标到待查找的单词,按下SHIFT+ *,让后敲n(find next one)。也许开启高亮更直观。进入命令模式,set hlsearch可以开启高亮,相反,set nohlsearch关闭之。
emacs
嵌入式
关于设备时间
- 查看/etc/profile文件内容, 并在文件尾部增加以下代码。简单粗暴有效。需要注意软件中通过系统函数获取的时间是否符合预期,是否需要减少或增加8小时。关联的命令hwclock。
TZ="UTC-08:00"
export TZ
Win10下的Linux
必须说
原因只有一个,习惯了GNU/Linux命令的好。在Win10上轻装上阵即可,其他不论。不谈虚拟机,不谈WSL,不谈cygwin,只讲git-bash。
应用两篇文章,咱们的win中linux足矣。
第一篇来这里.
第二篇在这里.
如果第二篇不能访问,看第一篇基本无恙。
网络通信
内部进程通信
网络资料
Unix domain socket,进程间内部通信,这篇文章写的简单明了。
制作Ubuntu的ISO
以下链接中描述的内容,我没有亲自实验。先搬移进来,备用。
关于制作ubuntu系统ISO的简要说明
GNU/Linux话题相关推荐
- (转)完全使用gnu/linux工作
转)完全使用gnu/linux工作 上一篇 / 下一篇 2008-08-17 17:59:59 查看( 1752 ) / 评论( 0 ) / 评分( 0 / 0 ) 完全用GNU/Linux工作 清 ...
- GNU/Linux与开源文化的那些人和事
一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...
- 完全用GNU/Linux工作,摈弃Windows---你我共勉
完全用GNU/Linux工作,摈弃Windows低效率的工作方式 ZT (a qinghua student's article) 我已经半年没有使用 Windows 的方式工作了.Linux 高效的 ...
- 我心中的linux,和我如何用GNU linux工作!【强帖,精彩,真精彩】
也许我只是讲述经历,也许这是篇入门和普及linux的文章 呵呵 不管怎么样我感觉还不错 - 摈弃 Windows 低效率的工作方式,发掘 Linux 身上的 UNIX 气质 我已经半年没有使用 Win ...
- 完全用GNU/Linux工作,摈弃Windows---你我共勉 (转)
完全用GNU/Linux工作,摈弃Windows---你我共勉 (转)[@more@] 完全用gnu/Linux工作,摈弃windows---你我共勉-- 摘自http://www.linuxeden ...
- 完全使用gnu linux工作
完全用Linux工作 作者:王垠 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事务,打游戏, ...
- 完全使用gnu/linux工作
完全用GNU/Linux工作 清华大学 王珢 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事 ...
- 完全用 GNU/Linux 工作(转)
转自:http://www.chinaunix.net/old_jh/4/16102.html 看到一半,实在太长,但已觉得很好,转来分享一下. 完全用 GNU/Linux 工作 - 摈弃 Windo ...
- 聊一聊GNU/Linux 与开源文化的那些人和事
本文只梳理大致的脉络,不做详尽的叙述. 一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图 ...
最新文章
- java list 拼音排序_java中实现List集合中对象元素按其属性的中文拼音排序
- usb_get_device_descriptor()
- Cluster模式潜在问题及解决方案、Web服务综合解决方案
- 深度学习之循环神经网络(1)序列表示方法
- 普通人看Build 2019 值得留心的亮点有哪些?
- 《MySQL8.0.22:Lock(锁)知识总结以及源码分析》
- 在Windows10上运行TensorFlow Android Demo实例
- Horizon8基础环境准备08——CA证书
- html常用的符号实体
- 使用windows Phone 集成横幅广告教程
- ant jmeter 优化报告
- (附源码)计算机毕业设计ssm公立医院绩效考核系统
- 调查了23款加速器,只剩这几款可以白嫖了!
- 主成分分析法的SPSS操作
- LCD驱动芯片ST7789V
- 蒙版操作—剪切蒙版制作艺术字
- 显示风场的某一局部区域,实现多分辨率
- 手机幻灯片html代码,html5手机幻灯片制作手指滑动触屏手机幻灯片代码
- React 语法之let和const命令
- java模拟手机号码发短信_java实现发送手机短信