Tag: unix

只有mkdir,如果它不存在

在我的bash脚本中: mkdir product; 当我运行脚本不止一次,我得到: mkdir: product: File exists 在控制台中。 所以我期待只运行mkdir如果目录不存在。 这可能吗?

如何编写一个以超级用户身份运行某些命令的shell脚本,而不是以超级用户身份执行某些命令,而不必亲自进行操作?

我想编写一个shell脚本来自动执行一系列命令。 问题是一些命令必须以超级用户身份运行,一些命令不能以超级用户身份运行。 到目前为止我所做的是这样的: #!/bin/bash command1 sudo command2 command3 sudo command4 问题是,这意味着有人必须等到command1完成之后才提示input密码,那么,如果command3花费足够长时间,则必须等待command3完成。 如果这个人可以起来走开,那么一个小时后回来就可以完成了。 例如,下面的脚本有这个问题: #!/bin/bash sleep 310 sudo echo "Hi, I'm root" sleep 310 sudo echo "I'm still root?" 我怎样才能让用户在一开始就input一次密码,然后走开? 更新: 感谢您的回应。 我在Mac OS X Lion上运行并运行Stephen P的脚本,得到了不同的结果:(我也添加了$ HOME) pair@abbey scratch$ ./test2.sh uid is 501 user is pair username is home directory is /Users/pair pair@abbey scratch$ sudo […]

在UNIX系统上杀死一个不存在的进程

我的系统上有一个不存在的进程: abc 22093 19508 0 23:29 pts/4 00:00:00 grep ProcA abc 31756 1 0 Dec08 ? 00:00:00 [ProcA_my_collect] <defunct> 如何在不重启机器的情况下杀死上述进程? 我曾尝试过 kill -9 31756 sudo kill -9 31756

会话和进程组在Unix中的用法和含义?

Unix进程有一个会话ID,是进程组的一部分 – 可以用诸如setsid()/ getpgrp()之类的函数来改变/查询进程组。 然而,过程组和会话的概念总是不见了,有谁能够解释具有不同会话和过程组提供了什么意义 – 为什么/何时想创build一个新会话或在同一个会话和/或过程组中放置多个过程?

如何指导cron每隔一周执行一次工作?

我想通过在每天的特定时间每周二执行的cron来执行一个任务。 每个星期二都很简单: 0 6 * * Tue 但是如何在“每个第二个星期二”(或者如果你更喜欢 – 每隔一周)做到这一点呢? 我不想在自己的脚本中实现任何逻辑,但只保留在cron的定义。

我如何区分“二进制”和“文本”文件?

非正式地,我们大多数人都明白,有“二进制”文件(目标文件,图像,电影,可执行文件,专有文件格式等)和“文本”文件(源代码,XML文件,HTML文件,电子邮件等)。 一般来说,你需要知道一个文件的内容,以便能够对它做任何有用的事情,并且如果编码是“二进制”或“文本”就形成了这个观点,这并不重要。 当然文件只是存储数据的字节,所以它们都是“二进制的”,“文本”并不意味着什么都不知道编码。 然而,讨论“二进制”和“文本”文件仍然是有用的,但为了避免这个不准确的定义,我将继续使用“恐吓”引号。 但是,有各种各样的工具可以处理各种文件,实际上,您希望根据文件是“文本”还是“二进制”来做不同的事情。 一个例子是在控制台上输出数据的任何工具。 简单的“文本”将看起来很好,是有用的。 '二进制'的数据混乱了你的terminal,一般没有用处。 当确定是否应该输出匹配到控制台时,GNU grep至less使用这个区别。 所以,问题是,你如何判断文件是“文本”还是“二进制”? 而进一步限制,你如何告诉一个像Linux文件系统的Linux? 我不知道任何文件系统的元数据表明文件的“types”,所以通过检查文件的内容,问题进一步变成了“文本”还是“二进制”? 为了简单起见,我们将“文本”限制为可在用户控制台上打印的字符。 特别是你将如何执行这个? (我认为这是暗示在这个网站上,但我想这是有帮助的,一般来说,指出现有的代码,这样做,我应该指定),我不是真的在现有的程序可以用来做什么这个。

我怎么知道我是否运行嵌套的shell?

当使用* nix shell(通常是bash)时,我经常产生一个子shell,我可以用它来处理一个小任务(通常在另一个目录中),然后退出以恢复父shell的会话。 有一段时间,我会忽略是运行一个嵌套的shell,还是运行在我的顶层shell中,而且我会意外地产生一个额外的子shell或者错误地退出顶层shell 。 有没有一种简单的方法来确定我是否在嵌套shell中运行? 还是我用完全错误的方式去解决我的问题(通过产生子弹)?

在一个unix命令中用一个前缀重命名文件夹中的所有文件

重命名前缀为“Unix_”的文件夹中的所有文件,即假设一个文件夹有两个文件a.txt和b.pdf,则它们都应该从一个命令重命名为Unix_a.txt和Unix_b.pdf

如何执行存储在variables中的命令?

调用一些存储在variables中的命令的正确方法是什么? 1和2之间有什么区别? #!/bin/sh cmd="ls -la $APPROOTDIR | grep exception" #1 $cmd #2 eval "$cmd"

用于UNIX系统的样式较less的Markdown查看器

我在JavaScript中有一个Markdownstring,我想用命令行的less (或者more )样式的查看器显示它(用粗体等)。 例如,用一个string "hello\n" + "_____\n" + "*world*!" 我想有输出popup滚动内容,看起来像 你好 世界 这是可能的,如果是的话如何?