linux软件
文章平均质量分 61
linux软件使用经验
六个九十度
嵌入式软件工程师
展开
-
在Linux下直接修改磁盘镜像文件的内容
用losetup命令实现虚拟光驱的效果,但是losetup支持修改镜像内容原创 2024-07-09 19:23:22 · 478 阅读 · 0 评论 -
在linux下预览markdown的方法,转换成html和pdf
使用pandoc转换成html和pdf,再用firefox和evince预览原创 2023-09-28 10:03:09 · 2496 阅读 · 0 评论 -
使用sed批量修改跨多行的配置文件
让sed的起始行和终止行均通过模式串指定原创 2023-08-04 14:43:49 · 488 阅读 · 0 评论 -
用wget等命令行工具下载Jenkins上的文件
Jenkins有官方的脚本接口,正确使用即可。原创 2023-06-20 11:44:57 · 1093 阅读 · 0 评论 -
巧用bash的eval命令解析配置文件
eval命令特别适合key=value这种格式的配置文件的解析,可以直接将value赋值给环境变量key原创 2023-05-22 10:23:31 · 562 阅读 · 0 评论 -
不用鼠标将命令行的输出粘贴到GUI
使用各个平台专属的剪贴板命令行接口原创 2022-06-12 10:00:00 · 194 阅读 · 0 评论 -
sudo的-E选项不起作用怎么办?
sudo ENV_VAR1=value1 ENV_VAR2=value2 any_root_cmd原创 2022-01-13 11:19:06 · 1203 阅读 · 0 评论 -
移植QT程序到petalinux平台
petalinux不带GCC,无法在里面编译QT应用,本文选择在arm版ubuntu里编译,再部署到petalinux原创 2021-12-25 19:11:39 · 2144 阅读 · 2 评论 -
让运行ubuntu20.04的笔记本电脑实现关闭盖子自动休眠
背景每次关盖都不休眠,而是睡眠解决办法默认安装的ubuntu不添加swap分区,需要先resize2fs加fdisk缩小主分区,然后用fdisk将腾出来的空间划成swap分区再解决grub的问题:Oct 7 11:10:08 whp-Inspiron-5537 steam.desktop[4837]: LuaDbg - Debugging stoppedOct 7 11:10:08 whp-Inspiron-5537 steam.desktop[4837]: CSteam3Client::S原创 2021-10-10 10:34:49 · 2052 阅读 · 3 评论 -
ubuntu自动登录tty终端的最简方法
背景在嵌入式系统经常需要自动登录tty,以实现业务程序开机启动的效果。网上有篇文章ubuntu自动登录tty1(shell,text)配置转发挺多,但我弄明白原理后,觉得可以进一步简化,经测试,简化成功。自动登录原理修改/etc/init/tty1.confUbuntu默认的tty1.conf内容如下# tty1 - getty## This service maintains a getty on tty1 from the point the system is# started un原创 2021-09-28 17:34:59 · 4650 阅读 · 0 评论 -
获取Linux内核卡死前的日志
Linux侧开启rsyslog的UDP转发,Windows侧用Visual Syslog Server for Windows查看原创 2021-09-10 18:16:30 · 7659 阅读 · 0 评论 -
将sudo命令自动化执行
背景在嵌入式开发环境,我们经常需要执行一些特权指令,但是每次执行执行都要手工输入密码(无法在命令行参数里直接传递密码),如果能将这些操作自动化就好了。解决办法,使用expect程序expect命令是一个能自动化执行sudo等交互式命令的程序。安装嵌入式设备一般不能连外网,所以需要离线安装,expect包依赖tcl-expect包,所以需要一起下载一起安装apt-get download tcl-expectapt-get download expectscp tcl-expect_5.45-原创 2021-09-07 11:33:31 · 628 阅读 · 0 评论 -
用bash分割字符串
背景最近负责移植固件升级功能,发现原来的升级脚本将固件的路径名和文件名不做区分,导致脚本必须跟固件在同一路径下才能正确调用,殊为不便。上代码:sudo mkdir -p /lib/firmware/F260/sudo cp $1 /lib/firmware/F260/echo Updating $2 ...echo F260/$1 > /sys/class/misc/PCIE_SubFpga1/d_${2}_update脚本命令行第一个参数$1就是固件的路径名,$2是器件名(表明FPG原创 2021-09-02 14:44:12 · 1606 阅读 · 0 评论 -
让Linux下位机跟Windows上位机自动时间同步
需求来源嵌入式系统通常分上位机和下位机,如果二者的日志时间戳能一致,则对定位问题价值巨大。另外有些原型系统的RTC时钟没装电池,更需要从外部获取真实时间,否则每次开机都是1970年1月1号。如果能够让下位机每次开机都跟上位机对一次时,即同步一下时间,则可满足上述需求,那么怎么对时呢?解决方案:NTPNTP又叫网络时间协议,是一种用于时间同步的网络协议。配置Windows为NTP服务器Linux和Windows都有NTP客户端,但是Windows作为上位机,必须还得具备NTP服务器的能力,幸好,原创 2021-07-19 16:31:06 · 1560 阅读 · 1 评论 -
一种让Linux窗口应用运行在全屏模式的简单粗暴方法
导航思路操作步骤禁用默认DM(Display Manger)创建自己的startx脚本让自己的startx脚本开机启动重启总结思路在嵌入式Linux系统里,整机一般只运行一个应用,并且是开机自启动,所以用不上Display Manager,可以直接替换成应用。替换后,就没有窗口系统了,应用也就不会带上窗口系统的标题栏、关闭按钮等,实现被动全屏。操作步骤在Ubuntu 1604上验证通过,其他环境大同小异禁用默认DM(Display Manger)修改/etc/X11/default-displ原创 2021-06-18 11:52:57 · 3673 阅读 · 3 评论 -
定制hexdump的打印输出格式
背景hexdump是Linux系统下一个以十六进制或ASCII形式输出文件内容的工具,通常-b -c -C -d等选项提供的打印格式就够用了,但有时板卡输出的数据格式比较特殊,想用文本比较工具(例如kidff3)比对的话,就需要将hexdump的输出指定成匹配的格式自定义格式串通常使用-e选项传递自定义格式串。简介hexdump的自定义格式串由任意多个格式单元组成每个格式单元由3个基本元素组成:迭代数字节数模式串模式串这个是最好理解的,跟printf的模式串非常像,%d表示打印十进原创 2021-04-26 16:07:22 · 2000 阅读 · 0 评论 -
解决Linux下svn命令总是提示输入密码问题
可能的原因这个一般是因为密码没被保存,或保存的方式跟读取的方式不匹配查看SVN认证配置dh@dh-desktop:~/7569_32/fpga_mainboard$ svn auth------------------------------------------------------------------------Credential kind: svn.simple认证领域: <http://192.168.20.187:80> My Subversion Reposit原创 2021-04-01 11:12:41 · 6071 阅读 · 5 评论 -
使用putty和vcxsrv实现win10运行Linux GUI程序
背景有些时候要远程运行开发板上的Linux GUI程序,但VNC经常抽风用不了,特别在Ubuntu 1604下面更是如此,所以需要用ssh客户端的X11转发功能,来将Linux GUI程序通过unix domain socket发给本地X server的视频流数据,转换成inet socket并转发到运行在Windows的X server操作步骤PuTTY配置PuTTY是一款支持X11端口转发的ssh客户端,要使能该特性,在创建session时按下图配置VcXsrv配置VcXsrv是一款运行在原创 2021-03-31 10:55:06 · 1834 阅读 · 1 评论 -
用pcimem读写x64平台下的PCIE外设寄存器
背景在之前的一篇文章用devmem2读写设备IO内存中,我介绍了devmem2这个通过读写/dev/mem文件实现从用户空间访问外设寄存器的工具,但是对于PCIE设备,特别是FPGA模拟出来的自定义PCIE设备,该工具在x64平台下可能会发出64位的内存读写请求,而FPGA模拟的外设寄存器一般都映射到32位地址空间,此时x86就会卡死。x86驱动必须用ioread32接口来读写外设寄存器,而该接口无法被用户程序调用,不利用调试,于是就需要一种既能从用户空间访问,又能避免PCIE发出64位地址访问请求的方原创 2021-02-22 16:59:24 · 3517 阅读 · 1 评论 -
用devmem2读写设备IO内存
背景有时候定位Linux驱动BUG时,能看到外设的寄存器就很便于调试,但是临时写ioctl命令字不太现实,如果有一个像netcat那样的网络通用调试工具,是极好的。devmem2国外已经有人做了这个工具,名叫devmem2,体积很小,零依赖,代码也很简单,所以只有源码,没有编译好的deb、rpm等二进制包。用法:Usage: devmem2 { address } [ type [ data ] ] address : memory address to act upon type :原创 2021-02-05 17:35:07 · 5620 阅读 · 5 评论 -
重复执行某个可能超时的操作,并在检测到超时后中止
背景最近定位一个Linux启动时间过久的问题,从syslog看出是SD卡问题,走查代码推断是mount失败所致,于是尝试复现,但多次umount加mount也复现不了。思路想着用脚本无限次umount加mount,并在每一次循环mount是否超时,超时就说明复现了!bash脚本因为是在设备上执行,所以对环境的依赖越少越好,选择shell脚本来实现目标#!/bin/shCOUNT=1 # 循环次数while true; do echo ${COUNT}th try原创 2021-01-04 14:08:22 · 262 阅读 · 0 评论 -
用ps命令快速弄明白Linux系统任意后台服务的启动流程
问题的提出Linux上有很多种后台服务,有些我们想对它充分了解,其中一个方面就是,它是怎么启动起来的?为什么启动成这个样子?我哪里配错了?要弄清如何启动是很麻烦的,首先要弄清楚init程序是sysv版的,还是upstart版的,还是systemd版的。然后还要搜索/etc目录,看是否有相应的启动脚本/配置文件,很麻烦解决思路Linux的后台服务,本质上也是一组进程,如果能回溯它的父进程,以及父进程的父进程,则可以绘制出一幅进程家谱。另外,通过每一代父进程的命令行参数,我们还可以获悉每一级流程所用的配原创 2020-10-31 14:16:26 · 461 阅读 · 2 评论 -
在ubuntu14.04上搭建Objective-C开发环境
我们的机器人需要iOS客户端,于是要招iOS开发人员,而我们都不懂iOS开发,于是我紧急了解了下Objective-C(以下简称OC)的历史和语法,然后想在ubuntu上动手试试OC编程,于是按照这篇文章搭建环境并编译helloworld代码gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello结果报错:/tm原创 2016-07-29 09:46:54 · 3573 阅读 · 0 评论 -
使用VIM编写Makefile时如何避免tab被扩展成4个空格
一般写代码的时候,都将tab键转换成4个空格(通过set expandtab命令)不过,写Makefile的时候,tab有特殊含义——表明这行是规则,不是目标——不能转换成空格但是执行set noexpandtab命令又麻烦,怎么办呢?可以先敲ctrl-v组合键,再敲tab键,这样就不会被转换成空格了原创 2016-02-17 14:38:52 · 4994 阅读 · 0 评论 -
批量转换纯文本文件编码
Windows下的纯文本文件拷贝到Linux下打开后经常会出现乱码,尤其是中文部分,这主要是因为WIndows使用的是ANSI编码,也就是GBK/GB2312/GB18030系列编码(互相兼容),而Linux下是utf-8编码,所以彩绘出现乱码幸好Linux下有一个iconv命令,可以实现内码转换NAME iconv - Convert encoding of given f原创 2015-12-15 12:41:50 · 3035 阅读 · 0 评论 -
使用vim-gui-common实现从vim窗口复制内容到系统剪贴板
使用VIM编辑代码时,通常会将终端分割成多个窗口,好处是可以边改边review,坏处是不能正常使用系统剪贴板以gnome-terminal为例,当你按下鼠标想复制右下子窗口内AudioConfig结构体的声明到剪贴板时,意外的把左下子窗口的内容也选中了,这时按ctrl-shift-c得到的一定不是你想要的为什么会这样?因为这些子窗口是vim创立的,gnome-termianl并原创 2015-12-02 11:02:48 · 1586 阅读 · 0 评论 -
在Linux下使用GIMP打印一寸照
一个中心概念:PPIPPI(pixels per inch)字面意思表示一英寸内包含多少个像素(1)、从几何上来理解,就是一英寸长的线段内,最多可以放多少个点。(2)、换句话说,可以将多少个点,均匀放到一英寸线段里去,而且保证每个点不重叠,可区分。说法(1)对打印机来说是一个指标,我的打印机(佳能MG2580)是4800,即一英寸可以无损容纳下4800像素的图片(中的一行像素)原创 2015-10-28 10:46:14 · 5985 阅读 · 0 评论 -
使用dnsmasq搭建wifi热点DHCP服务器的最简方法
不用创建(也不用修改)/etc/dnsmasq.conf文件,方便工程打包和移植原创 2015-10-16 17:45:00 · 9963 阅读 · 0 评论 -
使用正则表达式解决CSV文件导入问题
CSV文件一般扮演不同数据库之间转换数据的中间文件。比如我想将.mdb后缀的MS-Access格式转换成sqlite3格式,就要先将mdb导出成csv,再在sqlite3里导入 sqlite> create table test (id integer, datatype_id integer, level integer, meaning text); sqlite> .separ原创 2015-06-08 15:47:20 · 3417 阅读 · 0 评论 -
用命令行去除音频文件的背景噪声
录音时麦克风难免会有噪声,就是那种嘶嘶声,用音频编辑软件(比如audacity)可以很方便的去除,但如果要处理大量这种文件,用命令行工具是更有效率的办法。SoX号称音频处理的瑞士军刀,光manpage就40多页,功能不可谓不强大,通用命令格式: sox [global-options] [format-options] infile1原创 2015-05-22 17:06:31 · 11469 阅读 · 5 评论 -
Linux下获取线程ID的方法
gettid函数的使用原创 2014-12-06 19:39:16 · 30984 阅读 · 0 评论 -
VIM编辑Makefile的一个辅助功能
我们知道,Makefile中顶格写的都是target,tab打头的都是rule,tab和空格很容易弄混,所以,VIM可以将Tab用特殊字符(^I)显示出来打开此功能的方法按冒号:进入ex命令模式输入:set list原创 2011-05-07 06:53:00 · 1493 阅读 · 0 评论 -
【zt+补充】VIM下利用ctags自动补全C/C++标准库和操作系统调用(windows+MinGW版)
第一步:在cmd命令行输入 ctags -R -f "c:/Documents and Settings/ok/.vim/systags" --c-kinds=+p --fields=+S C:/MinGW/include 这里要解释一下选项-R表示递归处理-f表示拟生成的tag文件的路径,ok是我的用户名,.vim文件夹要事先创建,systags文件则不必--c转载 2010-01-05 11:12:00 · 6568 阅读 · 0 评论 -
在VIM中异步启动cmd.exe
在VIM中编辑好代码后,通常要开一个cmd窗口调试(习惯make的高手理当别论),如果输入以下ex命令:!cmd确实可以打开cmd窗口,但是确无法激活VIM窗口,原因是此cmd窗口是VIM自己fork的,所以vim还要等该cmd运行结束返回。另外一个例子就是:r !date该ex命令读入系统程序date的输出返回。所以,必须让VIM后台条用操作系统原创 2009-12-24 10:52:00 · 3493 阅读 · 0 评论 -
配置vim 7.1来使用vimcdoc的中文帮助
1.乱码由于vimcdoc的文件都是UTF-8格式的,所以直接用gvim打开后会出现乱码.解决:在.vimrc文件中加上一句"set encoding=utf-8" 2.如果操作系统是2000/xp中文版,gvim的初始界面以及菜单栏都是中文.如果按照1中的方法设置uft-8的话,这些内容就变成乱码了.解决:把vim文件夹下面的lang文件夹删除.这样gvim启动的时候就默认是英语了,菜单栏和原创 2008-04-24 19:56:00 · 2458 阅读 · 0 评论 -
再来两个脚本
#!/usr/bin/perl@lines=@tmp=reverse @lines;print @tmp;tac.pl可以实现tac命令(跟cat命令相反)#!/bin/shfor fname in *;donewname=`echo $fname |tr [a-z] [A-Z] `mv $fname $newnamedoneren.sh可以把当前目录下的小写文件名改成大写原创 2005-06-23 17:04:00 · 1007 阅读 · 0 评论 -
一些自己实践得出的技巧2
在linux下用umount卸载/mnt/usb之类的文件系统后,可用modprobe -r usb-uhci来卸载相应驱动,但是有个副作用:usb鼠标也会因此不动,所以应在拔下usb盘后运行命令modprobe usb-uhci来回复鼠标服务。command set auotlist make tcsh list file via [tab] like bash!deliberate故意的,原创 2005-06-23 17:00:00 · 1038 阅读 · 0 评论 -
一些自己实践得出的技巧1
locate xboing > testtar -cvf xboing.tar -T testgzip xboing.tarcp xboing.tar.gz /mnt/usbthe above command can copy a software which have been installed on someone system to your own system^-^#!/bin/shf原创 2005-06-23 16:53:00 · 1074 阅读 · 0 评论 -
将一切输出都隐藏!!!
有些程序,你加了重定向符号>还是会有输出有些程序,你加了&还是不能立即返回,需要敲一下回车键才能返回命令提示符试试这个终极解决办法吧command &> /dev/null&原创 2005-05-01 13:05:00 · 1447 阅读 · 2 评论 -
zhcon不如cce!!!!!!
在slackware10.0下安装用lynx浏览网页,乱码太多!!!!!!!!!!!!!!!!!!!!根本无法浏览而cce无此问题听有的人说cce有安全问题,我没遇到过想用的人下载CDlinux试用原创 2005-03-10 21:47:00 · 1463 阅读 · 0 评论