我通常使用 Ubuntu LTS 服务器,从我理解的符号链接/bin/sh到/bin/dash. 许多其他发行版虽然符号链接/bin/sh到/bin/bash.
#!/bin/sh由此我了解到,如果脚本在顶部使用,它可能不会在所有服务器上以相同的方式运行?
当您希望在服务器之间最大程度地可移植这些脚本时,是否有建议将哪个 shell 用于脚本?
我正在寻找一个程序,将 ASCII 字符串转换为类似于下面的“ascii 艺术”:
.-"^`\ /`^"-。
.' ___\ /___`。
//.---. .---.\
| // '-. ___________________________ .-' \\ |
| ;| \/---------------------------// |; |
\ || |\_) 红帽 (_/| || /
\ | \ . \; | 企业 Linux || ; / . / | /
'\_\ \\ \ \ \ | ||/ / / // /_/'
\\ \ \ \| 服务器版本 5.3 |/ / / //
`'-\_\_\ 代号 Tikanga /_/_/-'`
'---------------------------'
我没有匹配的示例,但我希望将字符串转换为一些多行文本,例如:
__ __ / | / | | | …
有没有办法找出目录位于哪个分区?
我知道我可以df用来列出分区和挂载点,但我需要能够通过一个简单的命令找出任何目录所在的分区。
我很好奇为什么要运行 bash 而不是 zsh。我的意思是 zsh 与 bash 完全向后兼容。不要误会我的意思:我不喜欢 bash 或任何东西。我只是真的想知道使用它是否比 zsh 有任何优势。
那么有什么理由使用 bash 而不是 zsh 呢?
我是 bash 新手,但我想创建一个脚本,允许用户从选项列表中选择多个选项。
基本上我想要的是类似于下面的例子:
#!/bin/bash
OPTIONS="Hello Quit"
select opt in $OPTIONS; do
if [ "$opt" = "Quit" ]; then
echo done
exit
elif [ "$opt" = "Hello" ]; then
echo Hello World
else
clear
echo bad option
fi
done
Run Code Online (Sandbox Code Playgroud)
(来自http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss9.1)
但是,我的脚本会有更多选项,并且我希望允许选择多个选项。所以像这样:
1) 选项 1
2) 选项 2
3) 选项 3
4) 选项 4
5) 完成
对他们选择的那些有反馈也会很棒,例如在他们已经选择的旁边加号。例如,如果您选择“1”,我想分页清除并重新打印:
1) Option 1 +
2) Option 2
3) Option 3
4) Option 4
5) Done
Run Code Online (Sandbox Code Playgroud)
然后,如果您选择“3”:
1) Option 1 +
2) Option …Run Code Online (Sandbox Code Playgroud) 我想在 Linux 中运行一个可执行文件,无论它返回什么退出状态,我都想返回一个好的退出状态。(即没有错误。)
(这是因为我正在使用sh -ex并且我希望脚本继续运行,即使一个(特定)命令失败。)
我正在致力于自动创建 subversion 存储库和相关网站,如我写的这篇博文中所述。我在向 www-data 用户运行以下命令的部分遇到了问题:
svnadmin create /svn/repository
Run Code Online (Sandbox Code Playgroud)
在脚本的开头有一个检查,以确保它以 root 或 sudo 身份运行,并且该命令之后的所有内容都需要以 root 身份运行。有没有一种好方法可以将那个命令作为 www-data 运行然后切换回 root 来完成?
所以我使用GNU Screen来管理多个正在运行的脚本/程序。多路复用和可拆卸性非常有用。
我从磁盘中删除了一个脚本,现在我在查找备份时遇到了一些麻烦。但是,其中一个终端会话在删除文件之前正在执行脚本,并且它继续正常工作。
有没有办法劫持当前正在运行脚本的终端会话来恢复这个文件的内容?
我正在尝试从不可靠的远程服务器同步文件,这意味着连接往往会“随机”失败
rsync:连接意外关闭
rsync 是用 --partial 调用的,所以我希望能够在循环中调用 rsync 直到文件完全传输。似乎没有告诉 rsync 重试的标志。
编写脚本的最佳方法是什么?bash for 循环?
我有两个布局相似的目录树,即
.
|-- dir1
| |-- a
| | |-- file1.txt
| | `-- file2.txt
| |-- b
| | `-- file3.txt
| `-- c
| `-- file4.txt
`-- dir2
|-- a
| |-- file5.txt
| `-- file6.txt
|-- b
| |-- file7.txt
| `-- file8.txt
`-- c
|-- file10.txt
`-- file9.txt
Run Code Online (Sandbox Code Playgroud)
我想合并 dir1 和 dir2 目录树以创建:
merged/
|-- a
| |-- file1.txt
| |-- file2.txt
| |-- file5.txt
| `-- file6.txt
|-- b
| |-- file3.txt
| |-- file7.txt …Run Code Online (Sandbox Code Playgroud)