Tag: unix

Linux:复制并创build目标目录,如果它不存在

我想要一个命令(或者可能是cp的一个选项)创build目标目录,如果它不存在。 例: cp -? file /path/to/copy/file/to/is/very/deep/there

在Unix命令行中从文件中读取随机行的简单方法是什么?

在Unix命令行中从文件中读取随机行的简单方法是什么?

在unix命令中,在man页面中显示的括号中的数字是什么意思?

例如:man(1),find(3),updatedb(2)? 括号内的数字是什么意思(Brit。“brackets”)?

PowerShell是否准备好在Windows上replace我的Cygwin shell?

我在辩论是否应该学习PowerShell,或者只是坚持使用Cygwin / Perl脚本/ Unix shell脚本等。 PowerShell的好处在于,没有Cygwin的队友可以更轻松地使用脚本; 然而,我不知道我是否真的在写这么多的通用脚本,或者甚至人们会使用它们。 Unix脚本function非常强大,PowerShell能够保证切换吗? 以下是我将在PowerShell中查找的一些特定事物(或等价物): grep的 分类 uniq的 Perl(PowerShell与Perl的function有多近?) AWK SED 文件(提供文件信息的命令) 等等

使用grep –exclude / – include语法不通过某些文件grep

我正在寻找目录树中文本文件中的stringfoo= 。 它在一台普通的Linux机器上,我有bash shell: grep -ircl "foo=" * 在目录中还有许多与“foo =”匹配的二进制文件。 由于这些结果是不相关的,并减缓search,我希望grep跳过search这些文件(主要是JPEG和PNG图像)。 我该怎么做? 我知道有–exclude=PATTERN和–include=PATTERN选项,但是什么是模式格式? grep的手册页说: –include=PATTERN Recurse in directories only searching file matching PATTERN. –exclude=PATTERN Recurse in directories skip file matching PATTERN. searchgrep include , grep include exclude , grep exclude和variants找不到任何相关的东西 如果只有某些文件有更好的方法,我完全可以这么做。 移动违规文件不是一个选项。 我不能只search某些目录(目录结构是一个大混乱,到处都是)。 另外,我不能安装任何东西,所以我必须使用常用工具(如grep或build议的查找 )。

closures它们后重新打开stdout和stdin文件描述符

我正在写一个函数,给定一个参数,将redirect到一个文件或从文件读取标准input。 为此,我closures与stdout或stdin关联的文件描述符,这样当我打开文件时,它会在我刚刚closures的描述符下打开。 这个工作,但问题是,一旦完成,我需要恢复标准输出和标准input,他们应该真正的。 我可以做的标准输出是打开(“/ dev / tty”,O_WRONLY); 但我不知道为什么这个工作,更重要的是我不知道stdin的等价语句。 所以我有,为标准输出 close(1); if (creat(filePath, O_RDWR) == -1) { exit(1); } 和stdin close(0); if (open(filePath, O_RDONLY) == -1) { exit(1); }

如何以root身份运行PHP exec()?

我试图在PHP中build立一个防火墙pipe理器,但是当我执行时, <?php exec('iptables -L'); ?> <?php exec('iptables -L'); ?> ,结果数组是空的。 我试过, <?php echo exec('whoami'); ?> <?php echo exec('whoami'); ?> ,响应是www-data (Apache正在使用的用户)。 我能做些什么来以root身份执行exec函数? (最好不要更改Apache用户。)

使用SO_REUSEADDR – 之前打开的套接字会发生什么?

在unixnetworking编程中,我总是在服务器使用的套接字上设置SO_REUSEADDR选项来监听连接。 这基本上说,另一个套接字可以在机器上的同一个端口上打开。 当从崩溃中恢复并且套接字未正确closures时,这非常有用 – 应用程序可以重新启动,只需在同一个端口上打开另一个套接字并继续监听。 我的问题是,旧sockets会发生什么? 毫无疑问,所有的数据/连接仍然会在旧套接字上被接收。 它是否被操作系统自动closures?

如何控制popen stdin,stdout,stderrredirect?

我很困惑如何popen()redirect标准input,标准输出和stderr的subprocess在UNIX中。 关于popen()的手册页在这方面不是很清楚。 电话 FILE *p = popen("/usr/bin/foo", "w"); 派生一个subprocess并执行一个带有参数“-c”,“/ usr / bin / foo”的shell,并将这个shell的stdin(redirect到foo的stdin),stdoutredirect到p。 但是,stderr会发生什么? 它背后的一般原则是什么? 我注意到,如果我在foo中打开一个文件(使用fopen,socket,accept等),并且父进程没有标准输出,则会为其分配下一个可用的文件编号,即1。 这提供了来自fprintf(stderr,…)等调用的意外结果。 这可以通过写作来避免 FILE *p = popen("/usr/bin/foo 2>/dev/null", "w"); 在父母程序中,但是他们有更好的方法吗?

如何提供密码给在bash中提示一个的命令?

我在写一个UNIX shell函数,它将执行一个命令,提示用户input密码。 我想将密码硬编码到脚本中并提供给命令。 我已经尝试将密码input到命令中,如下所示: function() { echo "password" | command } 这可能不适用于某些命令,因为在提示input密码之前,命令可能会刷新input缓冲区。 我也试着将标准inputredirect到一个包含这样的密码的文件,但是这也不起作用: function() { echo "password" > pass.tmp command < pass.tmp rm pass.tmp } 我知道有些命令允许将密码作为参数提供,但我宁愿通过标准input。 我正在寻找一个快速和肮脏的方式在bash中input密码到一个命令。