我在目录中有一组文件,编号如下:
file1.txt
file2.txt
...
file30.txt
...
Run Code Online (Sandbox Code Playgroud)
现在,我想对特定范围的文件运行命令,比如 18 到 31。
到目前为止,我已经使用了以下方法,
三个论点
command file1[8-9].txt file2[0-9].txt file3[0-1].txt
Run Code Online (Sandbox Code Playgroud)
现在假设我想要所有其他数字,
环形
for i in `jot - 18 31 2`; do echo file${i}.txt; done | xargs command
Run Code Online (Sandbox Code Playgroud)
这似乎是一个更可靠的循环(空格有效)
for i in `jot - 18 31 2`; do echo "\"file${i}.txt\" "; done | xargs command
Run Code Online (Sandbox Code Playgroud)
但似乎应该有一种更简单的方法来做到这一点。我猜最好的解决方案是创建一个 bash 函数,它将文件集返回到命令行。然后我可以做类似的事情,
command `filerange file 18 31`
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法或建议来有效地做到这一点?
如果我错过了在网络或superuser.
我有目录a和目录b。他们很大。b 与 a 几乎相同。“几乎”意味着 4-5 个文件不同,我不知道它们是哪个。我想将 b 复制到 a 上,但只复制不同的文件。我在 bash 中。
(不,我不能简单地删除 a 并用 b 替换它,因为 1)a 是受版本控制的 2)完整副本(或 mv)需要太多。我只想复制不同的文件)。
我正在寻找一种工具,允许使用简单的正则表达式(或仅多个匹配项)支持进行反向增量搜索。例如,如果我想找到命令“foo bar baz”,我可以执行以下操作来快速找到命令:
CRTL-R(开始搜索)输入“foo”(匹配最近使用 foo 的命令)继续输入“foo|baz”(匹配包含“foo”和“baz”的最近命令。
这样的东西存在吗?如果没有,我怎么能自己去实施呢?
如果我在 OS X (10.6.4) 终端中检查我的 bash shell,例如键入echo $0,我的 shell 前面会有一个破折号,如下所示:-bash. 这个破折号是什么意思?
我对 gzip 文件发疯了。
我可以使用 WinRAR 在 Windows 中解压缩文件,但在任何 UNIX 操作系统上都不可能。
该文件似乎没问题。如果我做
file the_name_of_the_file.gz
Run Code Online (Sandbox Code Playgroud)
我得到:
the_name_of_the_file.gz: gzip compressed data, from Unix, last modified: Sun Jan 30 14:10:21 2011
Run Code Online (Sandbox Code Playgroud)
但如果我这样做
gunzip -f the_name_of_the_file.gz
Run Code Online (Sandbox Code Playgroud)
我总是得到:
gzip: the_name_of_the_file.gz: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
当我尝试在 Ubuntu 或 MacOSX 中使用 GUI 工具提取文件时,会发生同样的问题,
有任何想法吗?
我正在尝试从 PHP 执行 .sh 脚本,但是它没有执行。
我检查了错误日志,并且收到了“sh:权限被拒绝”错误。我检查了在哪个用户下运行 php,它是在 apache 用户下完成的。
我尝试将 .sh 的所有权更改为 apache 用户,但没有结果。
起初我以为这是因为脚本在 www/ 目录之外,但是即使我将脚本放在同一目录中,仍然会出现错误。
除了将 apache 用户添加到 SUDOers 列表之外,还有其他解决方案吗?
如果我使用 'php filename.php' 命令从 putty 启动它,sh 脚本运行良好。
有一个非常奇怪的问题。我创建了一个小的 bash 脚本,它通过 ssh(使用公钥身份验证)在远程主机上运行命令。
当我从命令行手动运行此脚本时,它工作正常,但是当放置在 /etc/cron.hourly 中时,它会失败并显示Permission denied, please try again.错误。
ssh -i /root/.ssh/id_rsa user@remote "command";在脚本中显式设置密钥echo `id` > /tmp/whoami.log来仔细检查);和系统是 Ubuntu 12.04 服务器,我在远程端没有太多访问权限进行故障排除,但正如我所说,手动运行 ssh 或从命令行运行相同的 bash 脚本。
知道为什么会发生这种情况或如何解决吗?
结果我弄错了,ssh 密钥受密码保护(钥匙串加载 ssh 代理),因此为什么它从脚本中失败,但在从 bash 会话运行时却没有。添加. ~/.keychain/$HOSTNAME-sh到我的脚本中解决了问题(感谢@grawity 为我指明了正确的方向并提供了全面的答案)。
我正在尝试制作一个模块化脚本。我有几个从单个脚本调用的脚本/命令。
我想为每个单独命令的输出添加前缀。
例子:
我的文件都是commands.sh/command1.sh/command2.sh
command1.sh输出
file exists
file moved
command2.sh输出
file copied
file emptied
allcommands.sh运行脚本command1.sh和command2.sh
我想为这两个脚本的每个输出添加前缀,如下所示:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied
有没有办法使 bash 提示动态化,以便在登录服务器时改变颜色?
所以我希望在我的系统上颜色为绿色,并在连接到服务器时更改为红色。我有大量的服务器,我不想.bashrc在所有这些服务器上添加不同的内容。
我有一个行为不端的程序,我需要从我的脚本中调用它。一旦在 stdin 上看到某些内容,它就会退出。有没有办法关闭标准输入?