/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, "="로 구분된 줄의 두 번째 부분을 추출합니다.
  • 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, "/"로 구분된 다섯 번째 필드를 추출합니다.디렉터리 이름입니다.
  • 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 DATABASES. awk '{print $1}'각 줄에서 첫 번째 단어를 추출한 다음 모든 greps를 추출하여 다양한 값을 필터링하는 데 사용됩니다.

관련 정보