Articles of shell

使用variables时,Sedreplace不工作

尝试用sedreplacestring时发生了一些奇怪的事情。 这工作: find /home/loni/config -type f -exec sed -i 's/some_pattern/replacement/g' {} \; 所以当我手动inputstring的时候它就起作用。 但在下面的情况下,更换不会发生: find /home/loni/config -type f -exec sed -i 's/${PATTERN}/${REPLACEMENT}/g' {} \; 当我回显这两个variablesPATTERN和REPLACEMENT时,它们具有正确的值。 我试图用我的configuration目录中的所有文件中的replacestringreplace模式string的所有出现。

Bash输出stream写入文件

所以我在bash上运行这个: # somedevice -getevent 这个命令所做的只是继续运行,每次我的设备发送一个特定的数据,比如它检测到温度的变化,就会输出这样的数据 /dev/xyz: 123 4567 8910112238 20 /dev/xyz: 123 4567 8915712347 19 /dev/xyz: 123 4567 8916412345 22 /dev/xyz: 123 4567 8910312342 25 /dev/xyz: 123 4567 8910112361 18 /dev/xyz: 123 4567 8910112343 20 这只是继续运行,只要有任何原因它输出的东西。 所以没有执行的结束。 没有回声工作完美,但是当我试图使用“>”运算符这似乎并没有写入文件。 比如说 #somedevice -getevent > my_record_file 这不能正常工作,my_record_file只获取数据写入它的间隔 ,但是我想立即写入。 有任何想法吗?

检查一个目录。 readdir返回的条目是一个目录,链接或文件

我正在制作一个在Linux shell中运行的程序,并接受一个参数(一个目录),并显示目录中的所有文件及其types。 输出应该是这样的: << ./Program testDirectory Dir directory1 lnk linkprogram.c reg file.txt 如果没有参数,它使用当前目录。 这是我的代码: #include <stdio.h> #include <dirent.h> #include <sys/stat.h> int main(int argc, char *argv[]) { struct stat info; DIR *dirp; struct dirent* dent; //If no args if (argc == 1) { argv[1] = "."; dirp = opendir(argv[1]); // specify directory here: "." is the […]

使用“uniq -c”命令时需要从输出中删除计数

我正在尝试读取一个文件,并按特定字段的出现次数对其进行sorting。 假设我想从日志文件中找出最重复的date,然后使用uniq -c选项并按降序对其进行sorting。 像这样的东西 uniq -c | sort -nr 这会产生这样的输出 – 809 23/Dec/2008:19:20 实际上计数的第一个字段是我的问题….我想从上面的输出得到ony的date,但米无法得到这个。 我试图使用切割命令,并做到了这一点 uniq -c | sort -nr | cut -d' ' -f2 但这只是打印空白…请有人可以帮助我获得date,并砍掉计数。 我只想要 23/Dec/2008:19:20 谢谢

Shell:在目录下查找列表中的文件

我有一个列表,其中包含大约1000个文件名在一个目录及其子目录下进行search。 有数百个文件超过1,000,000个的子目录。 以下命令将运行1000次查找: cat filelist.txt | while read f; do find /dir -name $f; done 有更快的方法来做到这一点?

如何在root用户下从PHP运行一个bash脚本

如何从根目录用户 (具有所有权限),而不是没有用户的PHP运行bash脚本 – PHP的默认用户? 多数民众赞成我sudo visudo后输出: Defaults env_keep += "LINES COLUMNS" Defaults env_keep += "LSCOLORS" Defaults env_keep += "SSH_AUTH_SOCK" Defaults env_keep += "TZ" Defaults env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY" Defaults env_keep += "EDITOR VISUAL" Defaults env_keep += "HOME MAIL" #User privilege specification root ALL=(ALL) ALL %admin ALL=(ALL) ALL # Uncomment to allow people in group […]

在ac程序中运行一个shell命令

我想在我的c程序中运行一个shell命令。 但事情是,我不想让我的程序等待,直到命令执行。 不需要读取shell命令的输出(无论如何都不返回数据)所以基本上,这是可能的吗?

pipe道实施

我想实现一个支持pipe道的linux shell。 我已经完成了简单的命令,在后台运行的命令,redirect,但pipe道仍然丢失。 我已经阅读了一些代码片段,但仍然无法理清工作的解决scheme。 我到目前为止: int fd[2]; pipe(fd); pid_t pid = fork(); if (pid == -1) return -1; if (pid == 0) { close(fd[1]); //close write to pipe, in child execlp("cat", "cat", "names.txt", NULL); } else { close(fd[0]); //close read from pipe, in parent execlp("sort", "sort", NULL); } 我是一个新手程序员,正如你可能知道的那样,当我正在编写一些我不太了解的东西时,显然是这样,我喜欢从一些非常简单和具体的东西开始,然后从那里开始构build。 因此,在能够在pipe道中实现三个或更多不同的命令之前,我希望能够计算“ls names.txt | sort”或类似的东西,其中names.txt是一个名称文件无序的文件。 更新的代码,但仍然不起作用。 谢谢。

将输出redirect到C中的文件

我用C编写了一个基本的shell来执行基本的命令,它会执行命令ls , ls -al , ls -al | more ls -al | more等等 我想在我的shell中执行以下命令。 喜欢 ; ls -al > a.txt 这会给我一个包含ls -al进程输出的a.txt文件。 我发现了一个解决scheme,它改变了我的shell中的命令,如[command1] | tee [filename] [command1] | tee [filename] 。 在这种情况下,它会将ls -al > a.txt更改为ls -al | tee a.txt ls -al | tee a.txt 。 但是这个过程也将输出传给文件和terminal。 如何停止在terminal打印输出。 还是有更好的解决scheme,而不是使用tee命令。 提前致谢…

如何创build一个dynamicvariables并为其赋值?

我正在尝试创build一个dynamicvariables并将其分配给它 #!/bin/bash . . active_id=$p_val flag_$active_id=100 但是我这样做是错误的,有什么帮助?