Articles of Linux操作系统

从历史logging执行一系列命令

我正在使用Ubuntu,我想重复一些我执行的命令。 我试过类似的东西 for i in $(seq 2006 2013); do \!$i; done; 但失败了,因为shell试图执行命令'!2006'。 man history 也没有向我透露如何重复一系列命令。

如何在Linux的`/ etc`文件夹内用C创build一个文件?

我正在用C编写一个程序,每次开始设置一些variables时都要检查一个configuration文件 。 在程序的第一个开始,我猜想不会有任何configuration文件,所以我需要创build它 (使用默认设置)。 我曾经说过程序的configuration文件属于文件夹/etc ,更具体地说就是为程序本身创build的特定文件夹(即/etc/myprog )。 我应该问的第一个问题是:这是真的吗? 为什么/etc ? 在任何情况下,我试图使用这个创build该文件: open("/etc/myprog/myprog.conf", O_WRONLY | O_CREAT, 0644); open返回-1并将errno全局variables设置为2 (即文件夹不存在 )。 如果我试图直接在/etc创build文件(因此"/etc/myprog.conf"作为open第一个参数),我得到一个errno设置为13 (即权限被拒绝 )。 有没有办法让我的程序权限写入/etc ? 编辑:我看到大多数用户build议使用sudo 。 如果可能的话,我宁愿避免这个选项,因为这个文件只需创build一次(在第一次启动时)。 也许我应该做2个不同的可执行文件? (比如myprog_bootstrap和myprog ,只能用sudo运行第一个)

在Linux中奇怪的开关

我有一些关于Linux Kernel中的下面的开关的问题,有人可以解释一下最后case ,为什么我需要这种情况,如果它是空的? 提前致谢 switch (prev->state) { case TASK_INTERRUPTIBLE: if (unlikely(signal_pending(prev))) { prev->state = TASK_RUNNING; break; } default: deactivate_task(prev, rq); case TASK_RUNNING: ; } EDITED 我把它从linux 2.4.18,我目前正在学习,这里没有评论,为什么这样

为什么Vim的操作员行为不当?

几天前,我决定使用Vim文本编辑器…与vimtutor玩耍,我发现了d操作符非常罕见的东西; Vim会议: 情况1 之前:快速红色F o x跳过懒惰布朗狗 之后:快速红F 跳过懒惰的布朗狗 结果如预期。 案例2 将光标放在单词的最后一个字符中。 之前:快速红色Fo x跳过懒惰布朗狗 之后:快速红色的Fo 在懒惰布朗狗 结果: de删除“x跳转”子string。 案例3 将光标放在最后一个单词的最后一个字符中。 之前:快速红狐狸跳过懒惰的棕色做g 之后:快速的红狐狸跳过懒惰的布朗做 结果如预期。 请注意: 在这两种情况下,我都使用de命令。 之后:反映在应用de命令后的变化。 突出显示的部分代表编辑器中的光标位置。 问题: 这是一个错误? 难道我做错了什么? 发生什么事? Vim版本:7.3.50版本; 由Gentoo-7.3.50修改

如何通过ssh命令行来远程命令的引号

我在远程服务器上发出以下命令时遇到问题。 | awk“{print $ 1}”似乎对输出没有任何影响。 我错误地转义引号字符? 更糟糕的是,这两个命令实际上是通过一个python脚本提交的…因此使得转义更容易混淆。 在本地服务器上: ssh remote.server.com "find /root/directory -type f -exec md5sum {} + | awk '{print $1}'" 在远程服务器上: find /root/directory -type f -exec md5sum {} + | awk '{print $1}'

SVN命令干净分支之间的文件清单

我试图在subversion中find正确的命令,以便在分支/标签A和分支/标签B之间查看所有已经更改的文件(不需要看到更改)。

我怎样才能将linux系统日志映射到C中的printf

我有一个Linux应用程序运行在我的桌面上,我想将syslog()调用redirect到printf()调用。 注:我不想取代电话,只是redirect 所以我写了一些代码来做到这一点: #ifndef EMBED #define syslog(level, stuff) printf("SYSLOG: %s\n", stuff) #endif 在我使用的一个文件中效果很好。 我把这个移动到一个新的文件,并得到一个错误: error: macro "syslog" passed 3 arguments, but takes just 2 我知道这个错误是因为新文件中的调用是混合的,有些是使用2个参数到syslog,有些正在使用3.我也知道我需要以某种方式通过variables参数列表redirect,但是我怎么做呢? 我还没有得到它的工作呢… 据我所知,syslog()和printf()应该是: void syslog(int priority, const char *format, …) int printf(const char *format, …) 所以我试了一下: #define ERR 3 #ifndef EMBED // This is not defined in my env, btw #define […]

Bash – 如何计算指令数量?

我有一些* .s汇编文件。 我想要统计它们包含的指令数量。 例如,要计算所有的MUL指令,我需要: cat *.s | grep -P '\t'"mul" | wc -l 这给了我所有的指令复合数。 我想有这样的输出: mul: 893 add: 12054 sub: 2356 … 问题是没有目标平台支持的指令表。 每个目标平台都有不同的指令集。 支持的指令必须从现有的程序集文件中推导出来。 我可以在没有Perl / Python代工的情况下在Bash中完成吗?

解码JPEG以获取未压缩的数据

我想解码JPEG文件,并获得BMP / RGB格式的未压缩解码输出。我使用的是GNU / Linux和C / C ++。 我看了一下libjpeg,但似乎没有任何好的文档可用。 所以我的问题是: libjpeg的文档在哪里? 你能build议其他基于C的jpeg解压缩库吗?

如何使用内置函数而不是NULL检查来validation指针?

在今天的讨论中,我发现在VxWorks和LynxOS中都有检查,告诉你为一个指针指定的地址来自有效范围。 这是我第一次听到这个代码,如我分配int *i=&variable; 。 我应该得到一个警告或错误,说在我的应用程序,我不能分配地址值的整数。 就像我做NULL检查时,我只检查地址0x00000000 。 但是地址可能是0x00000001 。 如果其未映射的区域可能无法访问,则这也是无效的情况。 有没有人知道一些类似的Linux的事情,或者可以指导如何在VxWorks或LynxOS完成 。 有任何想法吗??