我试图弄清楚如何编写一个脚本来自动从 OSX 上文件夹中的图像创建 .cbz 文件。
我的目录树将如下所示:
/toplevel/
cbz/
comics/
Comic1/
comic1file1.jpg
comic1file2.gif
comic1file3.png
Comic2/
comic2file1.jpg
comic2file2.gif
Publisher/
Comic3/
comic3file1.jpg
comic3file2.gif
comic3file3.png
Comic4/
comic4file1.jpg
comic4file2.gif
Run Code Online (Sandbox Code Playgroud)
我想做的是运行一个脚本,该脚本将找到包含实际文件而不是子文件夹的任何文件夹并将其压缩,将其从 .zip 重命名为 .cbz 并将 .cbz 文件移动到顶层的 /cbz 文件夹。任何包含子文件夹的文件夹不应包含任何文件,因此这可能会有所帮助。另外,我不希望存在比上面示例中显示的更深的子文件夹。
我在哪里:此代码片段将查看文件夹并为每个子文件夹创建 .cbz 文件。
for dir in `ls`; do zip $dir $dir/*; mv $dir*zip $dir.cbz; done
Run Code Online (Sandbox Code Playgroud)
我还发现了一些片段,这些片段将执行与所选文件夹下的每个子文件夹类似的操作,但我得到了不同的结果,并且非常有兴趣了解仅对文件夹执行操作的最佳方法。另外,我不知道如何检查给定文件夹是否包含子文件夹或文件。(我想理想情况下我应该检查是否两者都存在,但对于我当前的情况来说,不应该是这种情况。)有什么想法吗?
如何将 TAR 操作写入日志文件?
tar -czvf arh.tar.gz public_html > 1.log
Run Code Online (Sandbox Code Playgroud)
TAR -czvf 成功了,谢谢大家!
现在在 bash 脚本中:
for i in */ ; do
sitefolder="$HOME/domains/${i%%/}/public_html"
if [ -d "$sitefolder" ]
then
( tar -czvf $tbackups/$i".tar.gz" public_html >> $logs/backups.log ; )
fi
done
Run Code Online (Sandbox Code Playgroud)
我如何在日志文件中进行输出,例如:
domain.com 成功归档,domain1.com 成功归档,依此类推。
bash中什么情况下会进行PATHrehashed?我不知道什么时候需要打电话hash -r以及什么时候会自动发生。我能想到的最好的办法是,每当键入未找到的命令时,都会重新修改 PATH 。
今天更新 Macports 后,我得到-bash: __git_ps1: command not found.
这是为什么?
在 AWS 中工作时,我创建了一个 Ubuntu 14.04 实例,并注意到登录会话之间没有保留历史记录。进一步调查显示 .bash_history 文件不存在。为什么没有创建 .bash_history?
我在超级用户这里找到了以下不错的倒计时脚本,我可以将其包含在我的 .bash_profile 中:
function countdown(){
date1=$((`date +%s` + $1));
while [ "$date1" -ne `date +%s` ]; do
echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";
sleep 0.1
done
}
Run Code Online (Sandbox Code Playgroud)
据我所知,由于命令的差异,它在 OSX 上不起作用date。另一位用户这样评论,但该问题仍然没有解决。
同样的问题(我认为)也在这里讨论和解决,但我无法弄清楚如何修改倒计时脚本以利用此解决方案。
Gnu Parallel 是一个功能强大的工具,我用它来并行运行许多独立的 BASH 命令作为一组。我希望能够顺序运行相同的命令,而不会对我使用的命令进行重大更改。我知道有一个开关可以强制按顺序运行输出,但我希望 gnuparallel 实际上按顺序运行。我的原因是为了在一台容易过热的机器上进行测试,解决我的硬件问题不是一种选择,此外,人们可能会想象其他测试方案,顺序运行 gnuparallel 会很有用。
所以。有没有办法简单地按顺序运行 gnuparallel 或者我需要手动将 gnuparallel 命令集解压到其组件命令中并按顺序运行它们?
我正在使用 bash 脚本来自动化一些任务。这就是我到目前为止所做的:
#!/usr/bin/env bash
PS3='Please enter your choice: '
options=("Create new group" "Add users to group" "Change directory ownership" "Change directory permissions" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Create new group")
read -e -p "Enter the group name: " -i "www-pub" groupname
groupadd groupname
echo "You have added a new group: " groupname
;;
"Add users to group")
## Here
;;
"Change directory ownership")
read -e -p "Enter the group name: " -i "www-pub" "Enter the …Run Code Online (Sandbox Code Playgroud) 我想知道当前运行的路径./a.out
有多个 MPI 进程,但我只需要几个 PID 之一./a.out。所以我首先使用下面的代码来 grep 它:
ps aux | grep -P "Rl.*a\.out" | grep -oP "\d+"|head -n 1
Run Code Online (Sandbox Code Playgroud)
它给出一个 PID,例如 12345。
现在我想使用:
lsof -p12345
Run Code Online (Sandbox Code Playgroud)
知道PID 12345的文件路径。
如何将两步合并到一个命令行中?
bash ×10
macos ×4
linux ×3
automation ×1
centos ×1
command-line ×1
finder ×1
gnu-parallel ×1
grep ×1
macports ×1
script ×1
shell ×1
tar ×1
terminal ×1
terminal.app ×1
ubuntu ×1
zip ×1