今天写了一个防止程序多次启动的测试程序,想在Android系统上验证一下效果,故用USB数据线将公司的海尔Pad连接到Ubuntu上,准备用android-sdk-linux_x86内的adb工具将编译好的可执行程序push到海尔Pad上,但是执行adb devices命令的时候告诉我设备存在,但没有权限,返回的结果如下所示。 阅读全文
我们在编写应用程序的过程中,通常会遇到这样的情况,因为某些原因,程序被系统多次或者反复调用,导致程序耗尽系统内存或者出现不可预知的错误,最终影响到程序原本的设计需求,这显然不是我们所希望看到的结果,但是如果在程序内部加上必要的判断,不管系统是否多次调用,都能防止同一时刻多个同样的程序同时运行。 阅读全文
系统信息管理,顾名思义,主要完成系统信息查询(如查看内核版本)和系统信息设置(如设置日期跟时间)等功能,这里简要介绍一下我们平时最常用到的一些系统信息管理命令,主要包括uname、lspci、lsusb、passwd等。
一、查看内核/操作系统/CPU信息
uname用来输出一组系统信息,如果不跟随选项,则视为只附加-s选项,即输出内核名称。 阅读全文
Linux下的xargs命令,从标准输入或者文件读取内容,按照空格或者空行将内容分割成多个参数,然后将这些参数传递给指定命令(默认echo)让其执行一次或者多次,传入的空行被忽略。该命令便于将某个命令在标准输入的执行结果作为另一个命令的执行参数,对于不支持管道操作的命令(如ls、file等)来说是一个福音。 阅读全文
Linux下的split命令,从文件或者标准输入读取内容,将其按照指定规则分割并保存成一个或多个文件。实际应用当中,很多情况下因为文件过大而无法传输或者存储,所以不得不将文件分割成多个文件来减小单个文件的大小,在Windows下这一操作需要专门的文件分割软件来完成,但是对于Linux来说,使用split命令便可轻松完成这一任务。 阅读全文
Linux下的expand命令,从文件或者标准输入读取内容,将tab制表符替换成多个空格(默认8个)后推送到标准输出。当用“cat -A”查看文件内容时,tab制表符将被显示为”^I”,所以经过expand命令处理过的文件内容中”^I”将被显示为多个空格。
常用参数:
-i:initial只有当制表符在行首时才替换为空格 -t<n>:将制表符替换为n个空格,而不是默认的8个
Linux下的paste命令主要用于从多个文件(包括标准输入)中读取内容,将每个文件的对应行用指定分隔符(默认tab制表符)拼接起来并打印到标准输出,我们可以使用重定向命令“>”将输出结果保存到文件中,从而实现整合多个文件的功能。
常用参数:
-d<分隔符> 指定分隔符,若未使用该参数则默认制表符分隔 -s 不使用平行的行目输出模式,而是每个文件占用一行
Linux下的col命令从标准输入读取内容,按照参数指定的规则过滤掉控制字符(如”^[OH”就是一个控制字符,代表键盘上的Home键,”^[[5~”代表PageUP键)中的“^[[”或“^[O”,防止文本出现乱码。col命令还有一个很实用的功能就是将tab制表符’\t’替换成空格。
常用参数: 阅读全文
Linux下的tr命令,是translate的缩写,它从标准输入中读取内容,然后做替换、删除或转换操作,然后将处理后的内容送到标准输出,感觉像一个筛子。使用tr时需要指定两个字符串:第一个字符串为源对象,第二个字符串为目的对象。tr命令执行过程中,源对象中的字符被映射到目的对象中的字符,然后附加其他参数完成不同的转换。 阅读全文
Linux下常用的数据文件是格式化的,多个字段之间通过统一的分隔符来区分,常见的分隔符有冒号(:)、制表符、空格等。例如,MySQL数据库使用into outfile命令导出来的数据就是以制表符分隔的,/etc/passwd和/etc/group文件就是用冒号(:)来分隔的。这种格式化的文本既方便阅读也适合程序处理,通常有一列形如数据库中的关键字,如/etc/passwd表示用户名的第一列就为关键字。join命令就是一个根据关键字合并两个数据文件的命令,类似于数据库操作中两张表的关联查询。 阅读全文