小编bat*_*tad的帖子

HISTTIMEFORMAT 修改。在 /etc/bash.rc 或 /etc/profile 中?

我想history在 CentOS/RHEL 6中将日期/时间添加到命令的输出中。我希望默认情况下这适用于机器上的所有用户。这本身很容易。这似乎只是添加的一种情况:

export HISTTIMEFORMAT="%Y%m%d %T  "
Run Code Online (Sandbox Code Playgroud)

应该在哪里添加?我已经看到了一些关于是否将其添加到/etc/profile或 的相互矛盾的信息/etc/bashrc。我相信两者都会同样有效。

有没有人对我应该使用哪个文件进行此特定修改有任何建议?

command-history centos profile bashrc

9
推荐指数
1
解决办法
2万
查看次数

bash getopts,仅短选项,都需要值,自己的验证

我正在尝试构建一个接受各种选项的 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)

bash getopts

8
推荐指数
1
解决办法
2万
查看次数

shell 脚本选项传递给子命令

我正在编写一个包装脚本,用于getoptsmysqldump. 到目前为止,它运行良好。

然而,我想做的一件事是能够在我的 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 变量中很可能有空格,所以我在该命令中引用了该变量。那是对的吗?

bash getopts arguments

5
推荐指数
1
解决办法
4657
查看次数

混合驱动器上的软件 RAID 10 + LVM,扇区对齐?

我有 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 字节

因此,从一些阅读中,我需要考虑以下变量:

  • 分区开始/对齐
  • RAID 条带大小
  • RAID 超级块位置 (?)
  • LVM PV --数据对齐
  • 然后对齐 LV 中的任何文件系统

以下是我基于此的资源:https : //askubuntu.com/a/19572http://tytso.livejournal.com/2009/02/20

在一些关于 …

software-raid partition mdadm lvm fdisk

4
推荐指数
1
解决办法
2987
查看次数

mkdir、touch 等的 bash/shell 路径名扩展?

因此,在bash大多数其他 shell 中执行此类操作将无法在子目录中创建多个子目录或文件...

mkdir */test
touch */hello.txt
Run Code Online (Sandbox Code Playgroud)

当然,实际上有很多方法可以做到这一点,我的首选方法是find在可能的情况下使用而不是使用for循环,主要是为了可读性。

但我的问题是,为什么上述方法不起作用?
据我所知,这是因为完整的目标文件/路径不存在,但如果我尝试使用mkdirtouch. 我一直只是继续前进,从未真正质疑过它。
但是有没有人对此有一个像样的解释来帮助我一劳永逸地理解?

shell wildcards

4
推荐指数
1
解决办法
4657
查看次数