Articles of unix

使用Curl命令行实用程序并行下载

我想从一个网站下载一些页面,并且使用curl成功地完成了这个工作,但是我想知道是否像下载pipe理器那样一次下载多个页面,这会加速一些事情。 是否有可能在curl命令行工具中做到这一点? 我正在使用的当前命令是 curl 'http://www…../?page=[1-10]' 2>&1 > 1.html 我在这里下载从1到10的页面,并将它们存储在一个名为1.html的文件中。 另外, curl可以将每个URL的输出写成单独的文件,如URL.html ,其中URL是正在处理的页面的实际URL。

Bash读/写文件描述符 – 寻找文件的开始

我试图在bash中使用读/写文件描述符,这样我就可以删除后面提到的文件描述符的文件,例如: F=$(mktemp) exec 3<> "$F" rm -f "$F" echo "Hello world" >&3 cat <&3 但是cat命令没有输出。 如果我使用单独的文件描述符进行读写,我可以达到我想要的效果: F=$(mktemp) exec 3> "$F" exec 4< "$F" rm -f "$F" echo "Hello world" >&3 cat <&4 打印Hello world 。 我怀疑当你从写入切换到读取时,bash不会自动寻找文件描述符的开始,下面的bash和python代码的组合证实了这一点: fdrw.sh exec 3<> tmp rm tmp echo "Hello world" >&3 exec python fdrw.py fdrw.py import os f = os.fdopen(3) […]

从stat函数输出中了解和解码文件模式值

我一直在试图了解下面提到的代码究竟发生了什么。 但我无法理解。 $mode = (stat($filename))[2]; printf "Permissions are %04o\n", $mode & 07777; 比方说我的$模式值是33188 $ mode&07777产生一个值= 420 $ mode值是十进制数吗? 为什么我们要select07777,为什么我们要做一点点操作。 我无法理解这里的逻辑。

使用SED的首字母大写

如何将一个单词的第一个字母replace为大写字母,例如 Trouble me Gold rush brides 成 Trouble Me Gold Rush Brides

检查环境variables是否已经设置

我正在写一个shell脚本,我必须检查是否设置了环境variables,如果没有设置,那么我必须设置它。 有没有办法检查shell脚本,是否已经设置了环境variables?

在pthread启动函数中返回()与pthread_exit()

下面的程序显示我们可以使用return()或pthread_exit()来返回一个可用于pthread_join()的状态variables的void *variables。 (1)是否应该优先使用另一种? (2)为什么使用return()工作? 通常情况下,我们会考虑将返回值放在堆栈上,但是由于线程已经完成,堆栈应该会消失。 还是堆栈不会被破坏,直到pthread_join()之后? (3)在你的工作中,你看到很多状态variables的用法吗? 看来90%的代码我只看到状态参数NULL。 由于任何通过void * ptr改变的东西已经在调用线程中反映出来,所以看起来没什么意思。 任何返回的新的void * ptr都必须指向启动线程的malloc-ed,这使得接收线程有责任处理它。 我错在认为状态variables是半无意义的吗? #include <iostream> #include <pthread.h> using namespace std; struct taskdata { int x; float y; string z; }; void* task1(void *data) { taskdata *t = (taskdata *) data; t->x += 25; t->y -= 4.5; t->z = "Goodbye"; return(data); } void* task2(void […]

Unixpipe入ls

我以为我理解* nixpipe道,直到现在…我有一个可执行文件称为studio ,符号链接到我安装的Android Studio ,我假设我可以得到链接到的位置 which studio | ls -l 但是这不起作用。 它给我的相当于在当前目录下运行ls -l 。 如果我运行which studio ,我会得到/home/me/bin/studio 。 如果我运行ls -l /home/me/bin/studio我会得到预期的输出,显示符号链接的位置。 那么为什么pipe道版本不工作? 我还没有关于pipe道的什么?

如何在Linux / Unix上添加基于文件types的文件扩展名?

这是一个关于Unix shell脚本(任何shell)的问题,但是也可以理解任何其他的“标准”脚本语言解决scheme: 我有一个目录充满文件的文件名是这样的散列值: fd73d0cf8ee68073dce270cf7e770b97 fec8047a9186fdcc98fdbfc0ea6075ee 这些文件有不同的原始文件types,如png,zip,doc,pdf等 任何人都可以提供一个脚本来重命名这些文件,以便它们获得适当的文件扩展名,可能是基于file命令的输出? 回答: JF塞巴斯蒂安的脚本将同时用于输出文件名以及实际的重命名。

“ls”命令在Linux / Unix中如何工作?

我想知道“Is”命令在Linux和Unix中是如何工作的。 据我所知,ls fork&exec到linux / unix shell,然后获取当前文件树的输出(eg./home/ankit/)。 我需要更详细的解释,因为我不确定在调用fork之后会发生什么。 任何人都可以详细解释'ls'命令的function吗?

从内部检测一个chroot监狱

如何检测没有root权限的chroot监狱? 假设一个标准的BSD或Linux系统。 我想到的最好的方法是查看“/”的inode值,并考虑是否合理低,但是我想要一个更准确的检测方法。 [edit 20080916 142430 EST]文件系统是不够的,因为复制像/ boot和/ dev这样的东西来欺骗被监禁的用户并不困难。 [edit 20080916 142950 EST]对于Linux系统来说,检查/ proc中的意外值是合理的,但是那些首先不支持/ proc的系统呢?