我有一个目录,里面有很多文件和目录。为了整理一下,我将把所有这些文件放到一个目录中,所以我打算做这样的事情:
$ ls | wc -l
123
$ mkdir new_directory
$ mv * ./new_directory
Run Code Online (Sandbox Code Playgroud)
但是,这显然行不通,因为它会尝试new_directory进入new_directory. 是否有一些简单的方法可以在一行中完成我想要的操作,而不必复制和粘贴该目录中的所有文件和目录?
谁能告诉我如何获取在 bash 中执行的命令的 PID。
例如,我有一个运行 imapsync 的 bash 脚本。
当脚本被杀死时,imapsync 进程并不总是被杀死,所以我希望能够从我的脚本中以编程方式识别 imapsync 的 PID,这样我就可以在信号处理程序中自己杀死 imapsync 进程。
那么如何以编程方式从父 bash 脚本中获取子进程的 PID?
比较两个目录结构并删除目标位置中无关文件和目录的最佳方法是什么?
我有一个正在开发的小型网络照片库应用程序。用户使用 FTP 添加和删除图像。我编写的网络画廊软件会即时创建新的缩略图,但它不处理删除。我想要做的是安排一个命令/bash 脚本以预定义的时间间隔来处理这个问题。
原始图像/home/gallery/images/使用子目录存储并组织在相册中。缩略图缓存在 中/home/gallery/thumbs/,使用与图像目录相同的目录结构和文件名。
我尝试使用以下方法来实现这一点:
rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs
Run Code Online (Sandbox Code Playgroud)
如果所有缩略图都已被缓存,这会正常工作,但不能保证会是这种情况,当发生这种情况时,thumb 目录会将原始全尺寸图像复制到其中。
我怎样才能最好地实现我想要做的事情?
我想检查一个文件是否存在
[ -f /path/to/file/ ]
但是,我以普通用户身份运行此命令,并且该文件归 root 所有。我如何使用 sudo 来完成此操作。
sudo [ -f /path/to/file/ ] 不起作用。
我已经hostname在多台服务器(RedHat、Ubuntu)上进行了测试,结果hostname -f证明不可靠,有时只返回短名称(如本问题所述)。
我可以在别名中看到 fqn :(hostname -a其中一个别名是我要查找的 fqn),但是别名的顺序不是固定的。
是否有另一种方法可以可靠地获取完全限定名称并将其存储在 bash 变量中?
我想更改当前正在运行的脚本的 nice 级别:
#!/bin/bash
nice_it ( ) {
nice
ps -o "%p %r %y %x %n %c %a"
}
nice_it
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为nice试图更改由它启动的命令的 nice 级别。
有可能在 bash 中实现这一点吗?
所以我偶然发现了svn color并认为它是我们所有开发人员都会喜欢的有用的东西。read me for this 说将一些代码放入您的~/.bash_profile. 是否有一些全局.bash_profile我可以添加这个?也许另一种方式?
我想在 FreeBSD 9.1 中禁用邮件检查。我的登录 shell 是 BASH,所以我尝试添加
unset MAILCHECK
Run Code Online (Sandbox Code Playgroud)
在/root/.bashrc和 中/root/.profile,但我仍然收到这些消息。
题
有没有办法摆脱这些消息?
我曾经为一家公司工作,该公司有一个定制的 shell 来管理他们在 Linux 上运行的一个产品,我希望复制这个 shell 的一个关键特性。
所有工作都由后台进程完成,日志的输出显示给所有连接的用户。
日志会在你的 shell 的背景中拖尾,并且提示行将始终完美地停留在底部。
例如
Log line 1
Log line 2
Log line 3
![ROOT@PRODUCT51-LIVE]:~/ #
Run Code Online (Sandbox Code Playgroud)
我尝试使用 bash 执行此操作的方法是在用户 .bashrc 文件中启动一个分离的尾部,但是当命令的输出发送到 stdout 时 - 它出现在 bash 提示符下,例如
![ROOT@PRODUCT51-LIVE]:~/ #Log line 1
Log line 2
Log line 3
Run Code Online (Sandbox Code Playgroud)
并且用户必须按 Enter 或CtrlC获得干净的提示行。
我不知道如何让提示总是跳到输出的底部,我认为我使用错误的术语在谷歌上找到任何东西,因为我运气不好 - 有谁知道如何做到这一点用 bash 吗?
例如,使用命令
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
Run Code Online (Sandbox Code Playgroud)
将foo.txt包含两行
foo
bar
Run Code Online (Sandbox Code Playgroud)
上面的命令不打印任何内容。