/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、「user」を含むすべての行を抽出します/etc/mysql/debian.cnf
  • tail -n 1、入力の最後の行だけが表示されます。
  • cut -d"=" -f2、 "="で区切られた行の2番目の部分を抽出します。
  • 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、 "/"で区切られた5番目のフィールドを抽出します。つまりディレクトリ名です。
  • 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を抽出してさまざまな値をフィルタリングするために使用されます。

関連情報