如何理解 /etc/default/automysqlbackup 中的以下命令?

如何理解 /etc/default/automysqlbackup 中的以下命令?

我试图理解/etc/default/automysqlbackup文件中的以下命令:

USERNAME=`grep user /etc/mysql/debian.cnf | tail -n 1 | cut -d"=" -f2 | awk '{print $1}'`

PASSWORD=`grep password /etc/mysql/debian.cnf | tail -n 1 | cut -d"=" -f2 | awk '{print $1}'`

DBNAMES=`find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `

DBNAMES=`mysql --defaults-file=/etc/mysql/debian.cnf --execute="SHOW DATABASES" | awk '{print $1}' | grep -v ^Database$ | grep -v ^mysql$ | grep -v ^performance_schema$ | grep -v ^information_schema$ | tr \\\r\\\n ,\ `

但我根本不明白。如果有人能向我解释一下那里发生的事情,我将非常感激。

答案1

USERNAME=`grep user /etc/mysql/debian.cnf | tail -n 1 | cut -d"=" -f2 | awk '{print $1}'`

使用以下命令运行管道:

  • grep user /etc/mysql/debian.cnf,从中提取所有包含“用户”的行/etc/mysql/debian.cnf
  • tail -n 1,仅显示其输入的最后一行;
  • cut -d"=" -f2,提取由“=”分隔的行的第二部分;
  • awk '{print $1}',这会删除该行中第一个单词周围的所有空格。

所有这一切的目的(未完美实现)是提取分配给userin 的最后一个值/etc/mysql/debian.cnf。结果存储在名为 的变量中USERNAME

线路PASSWORD相似。

DBNAMES=`find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `

运行以下命令:

  • find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d,其中列出了 中的目录/var/lib/mysql及其完整路径;
  • cut -d'/' -f5,提取由“/”分隔的第五个字段,IE目录的名称;
  • grep -v ^mysql\$,这会删除任何与“mysql”完全匹配的行;
  • tr \\\r\\\n ,\,它将所有回车符替换为“,”,并将所有换行符替换为空格。

目的是列出 中的所有目录/var/lib/mysql,用空格分隔,不包括/var/lib/mysql/mysql目录。结果存储在名为 的变量中DBNAMES

DBNAMES=`mysql --defaults-file=/etc/mysql/debian.cnf --execute="SHOW DATABASES" | awk '{print $1}' | grep -v ^Database$ | grep -v ^mysql$ | grep -v ^performance_schema$ | grep -v ^information_schema$ | tr \\\r\\\n ,\ `

具有相同的目的,但它解析MySQL命令的输出SHOW DATABASESawk '{print $1}'用于从每一行中提取第一个单词,然后所有的greps 过滤掉各种值。

相关内容