고수 에 게 LINUX 노트 배우 기. - 19.

제1 9 절 셸 기초 본 절 에서 말 한 내용: 19.1 셸 기본 문법 은 마침내 앞의 장 에서 centos 7 기초 소 개 를 완 성 했 고 나머지 몇 장 은 모두 이 몇 가지 측면 을 중심 으로 소개 했다.셸 과 스 크 립 트 에 대해 업무 중의 실제 응용 을 통 해 다음 과 같은 몇 가 지 를 정리 하 겠 습 니 다. 1. 스 크 립 트 는 매우 중요 합 니 다. 특히 Liux 자동화 운영 에 있어 2. 스 크 립 트 는 많이 연습 하고 적어도 읽 을 수 있 습 니 다.건 의 는 다른 사람의 대본 을 자신의 것 으로 수정 하 는 것 이다.3. 정규 표현 식 은 마음 을 가 라 앉 히 고 4, 3 검객 'grep awk sed' 를 잘 배 워 야 합 니 다. 19.1.1 셸 이 무엇 인지 익 혀 야 합 니 다. 영어 단어의 뜻 과 같이 명령 해석 기 입 니 다. 사용자 와 커 널 사이 의 명령 해석 번역 기능 계산기 가 어떤 언어 를 알 고 있 습 니까?이 진 언어 인 류 는 어떤 언어 를 알 고 있 습 니까?기호 언어 는 컴퓨터 와 인류 간 의 소통 에 있어 번역 이 필요 하 다. 이것 이 바로 셸 이 공중 에 나타 난 원인 이다. 앞의 장 을 통 해 시스템 의 영혼 이 커 널 이라는 것 을 알 고 모든 사용자 가 커 널 을 직접 조작 할 수 있다 면.나 는 모든 시스템 이 유리 처럼 바삭 한 응용 프로그램 -> 셸 -> 커 널 -> 하드웨어 인간 의 명령 -> 키보드 입력 -> 셸 -> 바 이 너 리 명령 -> 커 널 입력 이 명령 을 수행 하 는 과정 에서 명령 결과 19.1.2 에 어떤 셸 이 있 는 지 보 여 준다 고 믿는다.root@node-1 ~]\# cat/etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin 은/bin/bash 가 있 는 스 크 립 트 의 첫 줄 이\#!/bin/bash 라 는 말 은 이 셸 을 명령 해석 기 19.2 SHELL 변수 로 호출 하고 19.2.1 을 사용 하여 스 크 립 트 를 작성 하 는 절차 입 니 다. 1) 디 렉 터 리 를 만 들 고 스 크 립 트 파일 을 집중 적 으로 저장 합 니 다.2) 스 크 립 트 내용 작성 하기;vi 스 크 립 트 이름. sh\#\# 스 크 립 트 파일 편집\#!/bin/bash\#\# 설명 해석 기\# 설명 내용\#\# 정 보 를 설명 할 수 있 습 니 다. 명령 및 제어 문 구 를 나중에 볼 수 있 습 니 다.\# 스 크 립 트 의 핵심 내용: wq\# 파일 저장 3) 스 크 립 트 파일 에 실행 권한 을 부여 합 니 다. chmod + x 각 본명. sh4) 스 크 립 트 스 크 립 트 이름 을 실행 합 니 다. sh;주의사항: 스 크 립 트 의 경 로 는 절대 경 로 를 사용 하 는 것 을 권장 합 니 다.root@node-1 ~]# mkdir/root/bash[root@node-1 ~]# vim/root/bash/test1.sh[root@node-1 ~]# cat/root/bash/test1.sh #this is a test#!/bin/bashecho "Nice to meet you!"mkdir/tmp/aatouch/tmp/aa/aa.txt[root@node-1 ~]# chmod +x/root/bash/test1.sh [root@node-1 ~]#/root/bash/test1.sh Nice to meet you!
[root@node-1 ~]# ll/tmp/aa/tmp/tmp:total 0drwxr-xr-x 2 root root 19 Mar 10 10:41 aa
/tmp/aa: totalk 0 - rw - r - r - 1 root root 0 Mar 10 10: 41 aa. txt 19.2.2 echo 명령: 결 과 를 되 돌려 주 고 표시 합 니 다. 입력 하면 출력 합 니 다.문법: echo [옵션] "되 돌아 가 야 할 값"옵션: 옵션 - e 특수 문자 가 나타 나 면 의 미 를 바 꾸 지 않 고 일반 문자 로 대 합 니 다.반환 값 에서 강제 줄 바 꾸 기,\t 대표 탭 문자;내용 중 옵션: "내용\t 내용"탭 "내용 내용"삽입 강제 줄 바 꾸 기 [root@node-1 ~]# echo -e "my name is\t tom"my name is tom[root@node- 1 ~]\# echo - e "my name is tom"my name is tom 19.2.3 스 크 립 트 의 변수 적용;1. 개술: 변 수 는 광주리 이 고 광주리 에 변수의 값 을 담 고 광주리 만 가 져 가면 값 도 가 져 가 고 값 은 가 변 이다.[root@node-1 ~]# NAME="tom"[root@node-1 ~]# echo $NAMEtom[root@node-1 ~]# NAME="TOM"[root@node- 1 ~]\# echo $NAMETOM 2. 장점: 입력 을 간소화 하여 스 크 립 트 내용 을 더욱 선명 하 게 하고 스 크 립 트 의 적용 성 을 높 인 다.3. 분류: 사용자 정의 변수, 환경 변수, 위치 변수, 미리 정 의 된 변수;4. 사용자 정의 변수의 정의: a. 정의 변수: 변수 이름 = 변수 값 b. 변수 보기: echo $변수 이름 c. 사용 변수: 명령 에서 $변수 이름 d 를 직접 사용 합 니 다. 취소 변수: unset 변수 이름 e. 변수의 역할 범위: 부분 변수 이름 = 변수 값, 이 변 수 는 현재 bash 에서 만 유효 합 니 다.전역 변수: export 변수 이름 = 변수 값 입 니 다. 이 변 수 는 현재 bash 와 현재 하위 bash 에서 유효 합 니 다.주: 현재 프로 세 스 의 하위 프로 세 스 를 bash 명령 으로 열 수 있 습 니 다. exit 는 부모 bash 프로 세 스 로 되 돌아 갑 니 다.f. 변수 값 에 사용 되 는 괄호: "": 약 한 참조, 작은 따옴표 에 있 는 특수 기 호 를 명령 과 함께 실행 합 니 다 [root@node- 1 ~]\# A = "give me $5"-- 전의 문자 없 음 [root@node-1 ~]# echo $Agive me[root@node- 1 ~]\# A = "give me\$5"-- 작은 따옴표 [root@node- 1 ~]\# echo $Agive me $5 ': 강 인용, 작은 따옴표 에 $,"、\등 특수 기호 가 효력 을 상실 하여 모두 일반 문자 로 간주 합 니 다.[root@node- 1 ~]\# A = 'give me\$5' -- 작은 따옴표 [root@node- 1 ~]\# echo $Agive me\$5 ` :在定义变量时,引用命令,在值中引用变量等同于$(),''不可嵌套,$()可以嵌套;
[root@node-1 ~]# DuEtc=
du - sh/etc/& echo $DuEtc35M/etc/$(): 변 수 를 정의 할 때 명령 을 참조 하여 끼 워 넣 을 수 있 습 니 다.예: AC = $(rpm - qf $(which rz) [root@node-1 ~]# QfNtp=$(rpm -qf $(which ntpdate))[root@node-1 ~]# echo $QfNtpntpdate-4.2.6p5-28.el7.centos.x86_64 주: 변수 값 에 '작은 따옴표' 가 포함 되 어 있 을 때\'를 사용 하여 작은 따옴표 를 전의 해 야 합 니 다.g. 변수 이름 은 특수 기 호 를 사용 할 수 없고 보통 대문자 와 밑줄 을 사용 합 니 다.19.2.3 미리 정 의 된 변수: 사용 자 는 사용 할 수 있 고 만 들 수 없 으 며 직접 할당 할 수 없습니다. $0: 스 크 립 트 자체 의 이름 $: 스 크 립 트 후의 모든 매개 변수 $\#: 스 크 립 트 매개 변수 개수 $?:이전 명령 이 성공 적 으로 실행 되 었 는 지, 반환 값 이 0 이면 성공 합 니 다. 0 이 아 닌 실패 [root@node-1 ~]# vim/root/bash/print.sh[root@node-1 ~]# chmod +x/root/bash/print.sh [root@node-1 ~]\#/root/bash/print. sh aa bb 본 셸 스 크 립 트 의 파일 이름:/root/bash/print. sh 매개 변수 갯 수: 2 매개 변 수 는 어떤 것 이 있 습 니까? aa bb 실행 성공 여부: 0 첫 번 째 매개 변수: aa 두 번 째 매개 변수: bb [root@node-1 ~]# cat/root/bash/print.sh #!/빈/bashecho "이 셸 스 크 립 트 의 파일 이름: $0"echo "매개 변수 개수: $\#"echo "매개 변 수 는 어떤 것 이 있 습 니까? $"echo "실행 성공 여부: $?"echo "첫 번 째 매개 변수: $1"echo "두 번 째 매개 변수: $2"19.2.4 환경 변수의 정의: 1) 환경 변 수 는 사용자 작업 환경 을 설정 합 니 다. 이름 은 수정 할 수 없습니다. 값 은 수정 할 수 있 습 니 다.2) 환경 변수의 상용: PATH = 외부 명령 의 저장 경 로 를 설정 하고 TMUT = 로그 인 시간 초과 설정, 단위: 초 HISTSIZE = 과거 기록 을 설정 하 는 개수 LANG = 언어 환경 설정 (vi/etc/sysconfig/i18n 영구 수정 문자 집합): export PATH = 3) 환경 변수의 보기: env 명령 은 현재 작업 환경의 모든 환경 변수/etc/profile,/etc/bashrc 파일 이 로그 인 할 때마다 실행 되 는 설정 파일 을 봅 니 다./root/.bash_profile,/root/. bashrc 모든 루트 독립 된 환경 변수 설정 파일;다른 사용자 도 존재 합 니 다. Oacle 을 설치 할 때 Oacle 사용자 관련 환경 변 수 를 수정 해 야 합 니 다.root@node-1 src]\# lltotal 326364 - rw - r - r - 1 root 142376665 Aug 11 2014 jdk - 7u67 - linux - x64. tar. gz - rw - r - r - 1 root 191817140 May 3 2019 jdk - 8u201 - linux - x64. tar. gz2) 설치 명령 [root@node-1 src]# tar -zxf jdk-7u67-linux-x64.tar.gz [root@node-1 src]# mv jdkjdk1.7.0_67/jdk-7u67-linux-x64.tar.gz jdk-8u201-linux-x64.tar.gz[root@node-1 src]# mv jdk1.7.0_67//usr/local/[root@node-1 local]# ln -s jdk1.7.0_67/jdk[root@node-1 local]# lltotal 4drwxr-xr-x. 2 root root 6 Apr 11 2018 bindrwxr-xr-x. 2 root root 6 Apr 11 2018 etcdrwxr-xr-x. 2 root root 6 Apr 11 2018 gamesdrwxr-xr-x. 2 root root 6 Apr 11 2018 includelrwxrwxrwx 1 root root 12 Mar 10 11:25 jdk -> jdk1.7.0_67/drwxr-xr-x 8 10 143 4096 Jul 26 2014 jdk1.7.0_67.............................................................................HOME=/usr/local/jdk/export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH[root@node- 1 local]\# source/etc/profile 4) 환경 변 수 를 검증 합 니 다 [root@node- 1 local]\# java - versionjava version java version "1.7.0 67"Java (TM) SE Runtime Environment (build 1.7.0 67 - b11) Java HotSpot (TM) 64 - Bit Server VM (build 24.65 - b04, mixed mode) 5)root@node-1 local]# cd/usr/local/src[root@node-1 src]# tar -zxf jdk-8u201-linux-x64.tar.gz[root@node-1 src]# mv jdk1.8.0_201//usr/local/[root@node-1 src]# cd/usr/local/[root@node-1 local]# ln -snf jdk1.8.0_201 jdk[root@node-1 local]# lltotal 8drwxr-xr-x. 2 root root 6 Apr 11 2018 bindrwxr-xr-x. 2 root root 6 Apr 11 2018 etcdrwxr-xr-x. 2 root root 6 Apr 11 2018 gamesdrwxr-xr-x. 2 root root 6 Apr 11 2018 includelrwxrwxrwx 1 root root 12 Mar 10 11:32 jdk -> jdk1.8.0_201drwxr-xr-x 8 10 143 4096 Jul 26 2014 jdk1.7.0_67drwxr-xr-x 7 10 143 4096 Dec 16 2018 jdk1.8.0_201.......[root@node- 1 local]\# java - versionjava version "1.8.0 201"Java (TM) SE Runtime Environment (build 1.8.0 201 - b09) Java HotSpot (TM) 64 - Bit Server VM (build 25.201 - b09, mixed mode) 의 빈 틈 없 는 업그레이드 에 성 공 했 으 며, 다른 소프트웨어 버 전도 nginx 등 과 같이 이렇게 처리 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기