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

  1. 下面的命令可以可靠的解出xz格式的压缩文件,不要指望tar -xzvf 能帮咱们解开这样的文件。
xz -d you_file.tar.xz
  1. 压制一个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个就可以匹配了。
看看下面常用的命令。

  1. git clone your_remote_repo.
  2. git log.
  3. git log --pretty=one
  4. git reset --hard HEAD^ 或者 git reset --hard commit_id
  5. git reflog 后滚后再前滚时,它是解药,可以帮助找到commit id.
  6. git init --bare your_repo_name 记得修改拥有者为git,chown -R git:git your_repo_name.
  7. 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有两种方法:

  1. 交互模式下:进入gdb交互界面,file your_program, source debug_your_code.gdb
  2. 参数方式: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 可视化。做一下动作:

  1. lcov -c -d ./ -o your_app_name.info 该命令生成info文件,供第二条试用;
  2. 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下流行的脚本解释器,网上的资料较多。这里记录特别的内容。
特点:对空格敏感,例如赋值号前后不能有空格,否则就头疼把,知道就好。

基础

逻辑比较操作

用于数值比较,测试语法:[ ],注意[]中需要填充空格

  1. -gt 大于 >
  2. -ge 大于等于 >=
  3. -lt 小于 <
  4. -lt 小于等于 <=
  5. -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的运行状态。
技能特点:

  1. 调用者立即返回,返回为0,不阻塞后面的命令;
  2. 调用者shell退出后,sub-shell不会受其影响;
  3. 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的名称

  1. 通过修改 /proc/sys/kernel/core_uses_pid 文件可以让生成 core 文件名是否自动加上 pid 号。
    例如 echo 1 > /proc/sys/kernel/core_uses_pid ,生成的 core 文件名将会变成 core.pid,其中 pid 表示该进程的 PID。
  2. 通过修改 /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

嵌入式

关于设备时间

  1. 查看/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话题相关推荐

  1. (转)完全使用gnu/linux工作

    转)完全使用gnu/linux工作 上一篇 / 下一篇  2008-08-17 17:59:59 查看( 1752 ) / 评论( 0 ) / 评分( 0 / 0 ) 完全用GNU/Linux工作 清 ...

  2. GNU/Linux与开源文化的那些人和事

     一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...

  3. 完全用GNU/Linux工作,摈弃Windows---你我共勉

    完全用GNU/Linux工作,摈弃Windows低效率的工作方式 ZT (a qinghua student's article) 我已经半年没有使用 Windows 的方式工作了.Linux 高效的 ...

  4. 我心中的linux,和我如何用GNU linux工作!【强帖,精彩,真精彩】

    也许我只是讲述经历,也许这是篇入门和普及linux的文章 呵呵 不管怎么样我感觉还不错 - 摈弃 Windows 低效率的工作方式,发掘 Linux 身上的 UNIX 气质 我已经半年没有使用 Win ...

  5. 完全用GNU/Linux工作,摈弃Windows---你我共勉 (转)

    完全用GNU/Linux工作,摈弃Windows---你我共勉 (转)[@more@] 完全用gnu/Linux工作,摈弃windows---你我共勉-- 摘自http://www.linuxeden ...

  6. 完全使用gnu linux工作

    完全用Linux工作 作者:王垠 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事务,打游戏, ...

  7. 完全使用gnu/linux工作

    完全用GNU/Linux工作 清华大学 王珢 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事 ...

  8. 完全用 GNU/Linux 工作(转)

    转自:http://www.chinaunix.net/old_jh/4/16102.html 看到一半,实在太长,但已觉得很好,转来分享一下. 完全用 GNU/Linux 工作 - 摈弃 Windo ...

  9. 聊一聊GNU/Linux 与开源文化的那些人和事

    本文只梳理大致的脉络,不做详尽的叙述. 一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图 ...

最新文章

  1. java list 拼音排序_java中实现List集合中对象元素按其属性的中文拼音排序
  2. usb_get_device_descriptor()
  3. Cluster模式潜在问题及解决方案、Web服务综合解决方案
  4. 深度学习之循环神经网络(1)序列表示方法
  5. 普通人看Build 2019 值得留心的亮点有哪些?
  6. 《MySQL8.0.22:Lock(锁)知识总结以及源码分析》
  7. 在Windows10上运行TensorFlow Android Demo实例
  8. Horizon8基础环境准备08——CA证书
  9. html常用的符号实体
  10. 使用windows Phone 集成横幅广告教程
  11. ant jmeter 优化报告
  12. (附源码)计算机毕业设计ssm公立医院绩效考核系统
  13. 调查了23款加速器,只剩这几款可以白嫖了!
  14. 主成分分析法的SPSS操作
  15. LCD驱动芯片ST7789V
  16. 蒙版操作—剪切蒙版制作艺术字
  17. 显示风场的某一局部区域,实现多分辨率
  18. 手机幻灯片html代码,html5手机幻灯片制作手指滑动触屏手机幻灯片代码
  19. React 语法之let和const命令
  20. java模拟手机号码发短信_java实现发送手机短信

热门文章

  1. gitlab 切换分支
  2. 如何看待2021年秋招算法岗灰飞烟灭?
  3. 相册图片多选功能的实现
  4. 微信抖音服务器升级到什么时候,微信要对抖音放大招?微信账号无法登录抖音,暂不确定何时解决...
  5. android 飞入购物车,贝塞尔曲线实现物品飞入购物车效果
  6. 轻松解决批量查询问题——域名批量查询工具推荐
  7. 设计模式(三)——面向对象设计原则
  8. 复古编程 cmd 编译 环境变量 可执行文件 path
  9. CustomValidator 类
  10. Mysql -- DQL详解