我想history在 CentOS/RHEL 6中将日期/时间添加到命令的输出中。我希望默认情况下这适用于机器上的所有用户。这本身很容易。这似乎只是添加的一种情况:
export HISTTIMEFORMAT="%Y%m%d %T "
Run Code Online (Sandbox Code Playgroud)
应该在哪里添加?我已经看到了一些关于是否将其添加到/etc/profile或 的相互矛盾的信息/etc/bashrc。我相信两者都会同样有效。
有没有人对我应该使用哪个文件进行此特定修改有任何建议?
我正在尝试构建一个接受各种选项的 shell 脚本,这getopts似乎是一个很好的解决方案,因为它可以处理选项和参数的可变排序(我认为!)。
我只会使用短选项,每个短选项都需要一个相应的值,例如:./command.sh -a arga -g argg -b argb但我希望允许以非特定顺序输入选项,这是大多数人习惯使用 shell 命令的方式.
另一点是我想自己检查选项参数值,最好是在case语句中。这样做的原因是我:)在case声明中的测试产生了不一致的结果(可能是由于我缺乏理解)。
例如:
#!/bin/bash
OPTIND=1 # Reset if getopts used previously
if (($# == 0)); then
echo "Usage"
exit 2
fi
while getopts ":h:u:p:d:" opt; do
case "$opt" in
h)
MYSQL_HOST=$OPTARG
;;
u)
MYSQL_USER=$OPTARG
;;
p)
MYSQL_PASS=$OPTARG
;;
d)
BACKUP_DIR=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 2;;
:)
echo "Option -$OPTARG requires an argument" >&2
exit 2;; …Run Code Online (Sandbox Code Playgroud) 我正在编写一个包装脚本,用于getopts为mysqldump. 到目前为止,它运行良好。
然而,我想做的一件事是能够在我的 shell 脚本中添加另一个选项,其内容应该准确地传递给 mysqldump 命令。有点像这样传递的选项:
./mysqldumpwrapper.sh -u username -p password -h localhost -o "--no-create-db --replace"
-o 参数的字符串内容完全传递给我的mysqldump命令。
因为我getopts在尝试上述操作时正在使用,所以我得到以下输出:
Invalid option: --
有谁知道如何解决这个问题?
有没有办法逃避选项的输入,这样getopts就不会将内容解析为另一个选项?
然后,当涉及到从我的 shell 脚本触发实际命令时,这就是我所得到的:
mysqldump "$OPTIONSPASSTHROUGH" --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASS "$DB" > "$FILE_DEST"
因为 OPTIONSPASTHROUGH 变量中很可能有空格,所以我在该命令中引用了该变量。那是对的吗?
我有 4 个 2.5" 7.2k 驱动器,我想在我的 KVM 实验室盒上构建一些 RAID 阵列,用于一些 VM 存储。
有 2 个 320GB 驱动器和 2 个 500GB 驱动器。我正在寻找使用 4x 320GB 分区创建 RAID 10 阵列。然后我将把 500GB 驱动器上剩余的 180GB 用另一个备用驱动器构建到 RAID 5 分区中。我意识到性能会受到影响,因为 RAID 10 阵列中的 2 个驱动器会发生争用,并且使用不匹配的驱动器也不是最佳的,但这仅适用于实验室/测试环境。
最初我以为我只会创建 4 个匹配的分区,创建 RAID 10 阵列,在此基础上创建 LVM 并完成。但是一旦我开始研究 RAID 和 4k 磁盘上的 LVM,扇区/块对齐的主题就出现了,现在我不知道从哪里开始。
320GB 驱动器报告扇区大小(逻辑/物理):512 字节/512 字节 500GB 驱动器报告扇区大小(逻辑/物理):512 字节/4096 字节
因此,从一些阅读中,我需要考虑以下变量:
以下是我基于此的资源:https : //askubuntu.com/a/19572和http://tytso.livejournal.com/2009/02/20
在一些关于 …
因此,在bash大多数其他 shell 中执行此类操作将无法在子目录中创建多个子目录或文件...
mkdir */test
touch */hello.txt
Run Code Online (Sandbox Code Playgroud)
当然,实际上有很多方法可以做到这一点,我的首选方法是find在可能的情况下使用而不是使用for循环,主要是为了可读性。
但我的问题是,为什么上述方法不起作用?
据我所知,这是因为完整的目标文件/路径不存在,但如果我尝试使用mkdir或touch. 我一直只是继续前进,从未真正质疑过它。
但是有没有人对此有一个像样的解释来帮助我一劳永逸地理解?