셸 의 개요, 조작 명령
셸 은 프로그램 / 사용자 명령 을 받 고 운영 체제 커 널 을 호출 하 는 명령 해석 기 입 니 다.
셸 해석 기
(1) Linux 에서 제공 하 는 Shell 해상도 기 는 다음 과 같 습 니 다.
[atguigu@hadoop101 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
(2) bash 와 sh 의 관계
[atguigu@hadoop101 bin]$ ll | grep bash
-rwxr-xr-x. 1 root root 941880 5 11 2016 bash
lrwxrwxrwx. 1 root root 4 5 27 2017 sh -> bash
(3) Centos 기본 해상도 기 는 bash 입 니 다.
[atguigu@hadoop102 bin]$ echo $SHELL
/bin/bash
Shell 스 크 립 트 입문
1. 스 크 립 트 형식 스 크 립 트 는 \ #! /bin / bash 시작 (해상도 지정) 2. 첫 번 째 셸 스 크 립 트: helloworld (1) 수요: 셸 스 크 립 트 를 만 들 고 helloworld (2) 사례 실 체 를 출력 합 니 다.
[atguigu@hadoop101 datas]$ touch helloworld.sh
[atguigu@hadoop101 datas]$ vi helloworld.sh
hello World. sh 에 다음 내용 을 입력 하 십시오.
#!/bin/bash
echo "helloworld"
(3) 스 크 립 트 의 일반적인 실행 방식 첫 번 째: bash 또는 sh + 스 크 립 트 의 상대 경로 나 절대 경로 (스 크 립 트 + x 권한 부여 하지 않 음) sh + 스 크 립 트 의 상대 경로 사용
[atguigu@hadoop101 datas]$ sh helloworld.sh
Helloworld
sh+
[atguigu@hadoop101 datas]$ sh /home/atguigu/datas/helloworld.sh
helloworld
bash+
[atguigu@hadoop101 datas]$ bash helloworld.sh
Helloworld
bash+
[atguigu@hadoop101 datas]$ bash /home/atguigu/datas/helloworld.sh
Helloworld
두 번 째: 스 크 립 트 를 입력 하 는 절대 경로 나 상대 경로 로 스 크 립 트 를 실행 합 니 다 (실행 가능 한 권한 + x 가 있어 야 합 니 다) (a) 먼저 helloworld. sh 스 크 립 트 의 + x 권한 을 부여 해 야 합 니 다.
[atguigu@hadoop101 datas]$ chmod 777 helloworld.sh`
(b) 스 크 립 트 실행
[atguigu@hadoop101 datas]$ ./helloworld.sh
Helloworld
[atguigu@hadoop101 datas]$ /home/atguigu/datas/helloworld.sh
Helloworld
메모: 첫 번 째 실행 방법 은 본질 적 으로 bash 해상도 기 가 스 크 립 트 를 실행 하 는 것 이기 때문에 스 크 립 트 자체 가 실행 권한 이 필요 하지 않 습 니 다.두 번 째 실행 방법 은 본질 적 으로 스 크 립 트 가 스스로 실행 되 어야 하기 때문에 실행 권한 이 필요 합 니 다.3. 두 번 째 Shell 스 크 립 트: 다 중 명령 처리 (1) 필요:
/home/atguigu/ banzhang.txt, banzhang.txt “I love cls”。
(2) 사례 실습:
[atguigu@hadoop101 datas]$ touch batch.sh
[atguigu@hadoop101 datas]$ vi batch.sh
batch. sh 에 다음 내용 을 입력 하 십시오.
#!/bin/bash
cd /home/atguigu
touch cls.txt
echo "I love cls" >>cls.txt
Shell 의 변수
4.1 시스템 변수
상용 시스템 변수
$HOME、$PWD、$SHELL、$USER
2. 사례 실 조 (1) 시스템 변수의 값 보기 [
atguigu@hadoop101 datas]$ echo $HOME
/home/atguigu
(2) 현재 셸 의 모든 변 수 를 표시 합 니 다: set
[atguigu@hadoop101 datas]$ set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
4.2 사용자 정의 변수 1. 기본 문법 (
1) : =
(2) :unset
(3) :readonly , : unset
2. 변수 정의 규칙 (1) 변수 이름 은 알파벳, 숫자, 밑줄 로 구 성 될 수 있 지만 숫자 로 시작 할 수 없습니다. 환경 변수 이름 은 대문자 로 권장 합 니 다. (2) 등호 양쪽 에 빈 칸 (3) 이 있 으 면 안 됩 니 다. bash 에서 변 수 는 기본 형식 이 문자열 형식 이 므 로 줄 수 치 를 직접 연산 할 수 없습니다. (4)변수의 값 이 빈 칸 이 있 으 면 두 따옴표 나 작은 따옴표 로 묶 어야 합 니 다. 3. 사례 실 조 (1) 정의 변수 A
[atguigu@hadoop101 datas]$ A=5
[atguigu@hadoop101 datas]$ echo $A
5
(2) A
[atguigu@hadoop101 datas]$ A=8
[atguigu@hadoop101 datas]$ echo $A
8
(3) A
[atguigu@hadoop101 datas]$ unset A
[atguigu@hadoop101 datas]$ echo $A
(4) B=2, unset
[
atguigu@hadoop101 datas]$ readonly B=2
[atguigu@hadoop101 datas]$ echo $B
2
[atguigu@hadoop101 datas]$ B=9
-bash: B: readonly variable
(5) bash , ,
[atguigu@hadoop102 ~]$ C=1+2
[atguigu@hadoop102 ~]$ echo $C
1+2
(6) 변수의 값 에 빈 칸 이 있 으 면 작은 따옴표 나 작은 따옴표 로 묶 어야 합 니 다.
[atguigu@hadoop102 ~]$ D=I love banzhang
-bash: world: command not found
[atguigu@hadoop102 ~]$ D="I love banzhang"
[atguigu@hadoop102 ~]$ echo $A
I love banzhang
(7) , Shell
export
[atguigu@hadoop101 datas]$ vim helloworld.sh
helloworld.sh echo $B
#!/bin/bash
echo "helloworld"
echo $B
[atguigu@hadoop101 datas]$ ./helloworld.sh
Helloworld
B 。
[atguigu@hadoop101 datas]$ export B
[atguigu@hadoop101 datas]$ ./helloworld.sh
helloworld
2
4.3 특수 변수: $n 1. 기본 문법 $n(기능 설명: n 은 숫자 이 고 $0 은 이 스 크 립 트 의 이름 을 대표 합 니 다. $1 - 9 는 첫 번 째 부터 아홉 번 째 매개 변수, 10 이상 의 매개 변 수 를 대표 합 니 다. 10 이상 의 매개 변 수 는 큰 괄호 로 포함 해 야 합 니 다. 예 를 들 어 9 는 첫 번 째 부터 아홉 번 째 매개 변수, 10 이상 의 매개 변 수 를 대표 합 니 다.매개 변수, 10 이상 의 매개 변 수 는 큰 괄호 로 포함 되 어야 합 니 다. 예 를 들 어 {10}) 2. 사례 실 조 (1) 는 이 스 크 립 트 파일 의 이름, 입력 매개 변수 1 과 입력 매개 변수 2 의 값 을 출력 합 니 다.
[atguigu@hadoop101 datas]$ touch parameter.sh
[atguigu@hadoop101 datas]$ vim parameter.sh
#!/bin/bash
echo "$0 $1 $2"
[atguigu@hadoop101 datas]$ chmod 777 parameter.sh
[atguigu@hadoop101 datas]$ ./parameter.sh cls xz
./parameter.sh cls xz
4.4 특수 변수: $\ # 1. 기본 문법 $\ # (기능 설명: 모든 입력 매개 변수 개 수 를 가 져 오고 순환 에 자주 사용). 2. 사례 실 조 (1) 입력 매개 변수의 개 수 를 가 져 옵 니 다.
[atguigu@hadoop101 datas]$ vim parameter.sh
#!/bin/bash
echo "$0 $1 $2"
echo $#
[atguigu@hadoop101 datas]$ chmod 777 parameter.sh
[atguigu@hadoop101 datas]$ ./parameter.sh cls xz
parameter.sh cls xz
2
4.5 특수 변수: ∗, *, ∗, @ 1. 기본 문법 ∗ (기능 설명: 이 변 수 는 명령 줄 의 모든 매개 변 수 를 대표 합 니 다. * (기능 설명: 이 변 수 는 명령 줄 의 모든 매개 변 수 를 대표 합 니 다. ∗ (기능 설명: 이 변 수 는 명령 줄 의 모든 매개 변 수 를 대표 합 니 다. * 모든 매개 변 수 를 하나의 전체 로 봅 니 다) @(기능 설명: 이 변 수 는 명령 줄 의 모든 매개 변 수 를 대표 합 니 다. 그러나 @ (기능 설명: 이 변 수 는 명령 줄 의 모든 매개 변 수 를 대표 합 니 다. 그러나 @ (기능 설명: 이 변 수 는 명령 줄 의 모든 매개 변 수 를 대표 합 니 다. 그러나 @ 매개 변 수 를 구분 합 니 다) 2. 사례 실 조 (1) 입력 한 모든 매개 변 수 를 인쇄 합 니 다.
[atguigu@hadoop101 datas]$ vim parameter.sh
#!/bin/bash
echo "$0 $1 $2"
echo $#
echo $*
echo $@
[atguigu@hadoop101 datas]$ bash parameter.sh 1 2 3
parameter.sh 1 2
3
1 2 3
1 2 3
4.6 특수 변수: $? 1. 기본 문법 $?helloworld. sh 스 크 립 트 가 올 바 르 게 실행 되 었 는 지 판단 합 니 다.
[atguigu@hadoop101 datas]$ ./helloworld.sh
hello world
[atguigu@hadoop101 datas]$ echo $?
0
연산 자
1. 기본 문법 (1) "(연산 식)" 또는 "(연산 식)" 또는 "(연산 식)" 또는 "[연산 식]" (2) expr +, -, *, /,% 더하기, 빼 기, 나 누 기, 나머지 주의: expr 연산 자 사이 에 빈 칸 이 있어 야 합 니 다. 2. 사례 실 조: (1) 3 + 2 의 값 을 계산 합 니 다.
[atguigu@hadoop101 datas]$ expr 2 + 3
5
(2) 3 - 2 의 값 을 계산한다.
[atguigu@hadoop101 datas]$ expr 3 - 2
1
(3) 계산 (2 + 3) X4 의 값 (a) expr 한 걸음 에 계산 완료
[atguigu@hadoop101 datas]$ expr `expr 2 + 3` \* 4
20
(b) $[연산 식] 방식 사용
[atguigu@hadoop101 datas]# S=$[(2+3)*4]
[atguigu@hadoop101 datas]# echo $S
조건 부 판단
1. 기본 문법 [condition] (주의 condition 전후 에 빈 칸 이 있어 야 함) 주의: 조건 이 비어 있 지 않 으 면 true 이 고, [atguigu] 는 true 로 돌아 가 고, [] 는 false 로 돌아간다. 2. 상용 판단 조건 (1) 두 정수 간 비교
=
-lt (less than) -le (less equal)
-eq (equal) -gt (greater than)
-ge (greater equal) -ne (Not equal)
(2) 파일 권한 에 따라 판단
-r (read) -w (write)
-x (execute)
(3) 파일 형식 에 따라 판단
-f (file)
-e (existence) -d (directory)
3. 사례 실 기
(1)23 22
[atguigu@hadoop101 datas]$ [ 23 -ge 22 ]
[atguigu@hadoop101 datas]$ echo $?
0
(2)helloworld.sh
[atguigu@hadoop101 datas]$ [ -w helloworld.sh ]
[atguigu@hadoop101 datas]$ echo $?
0
(3)/home/atguigu/cls.txt
[atguigu@hadoop101 datas]$ [ -e /home/atguigu/cls.txt ]
[atguigu@hadoop101 datas]$ echo $?
1
(4) (&& , ,|| , )
[atguigu@hadoop101 ~]$ [ condition ] && echo OK || echo notok
OK
[atguigu@hadoop101 datas]$ [ condition ] && [ ] || echo notok
notok
프로 세 스 제어 (중점)
7.1 if 판단
1.
if [ ];then
fi
if [ ]
then
elif [ ]
then
else
fi
주의사항: (1) [조건 판단 식], 중 괄호 와 조건 판단 식 사이 에 빈 칸 (2) if 가 있어 야 합 니 다.
[atguigu@hadoop101 datas]$ touch if.sh
[atguigu@hadoop101 datas]$ vim if.sh
#!/bin/bash
if [ $1 -eq "1" ]
then
echo "banzhang zhen shuai"
elif [ $1 -eq "2" ]
then
echo "cls zhen mei"
fi
[atguigu@hadoop101 datas]$ chmod 777 if.sh
[atguigu@hadoop101 datas]$ ./if.sh 1
banzhang zhen shuai
7.2 case 구문 1. 기본 문법
case $ in
" 1")
1, 1
;;
" 2")
2, 2
;;
… …
*)
,
;;
esac
주의사항: 1) case 줄 끝 은 단어 "in" 이 어야 합 니 다. 모든 패턴 이 일치 하려 면 오른쪽 괄호 ")" 로 끝내 야 합 니 다. 2) 더 블 분점 ";" 명령 시퀀스 가 끝 났 음 을 나타 내 며 자바 의 break 에 해당 합 니 다. 3) 마지막 "*)" 는 기본 모드 로 자바 의 default 에 해당 합 니 다. 2. 사례 실 조
(1) , 1, banzhang, 2, cls, , renyao。
[atguigu@hadoop101 datas]$ touch case.sh
[atguigu@hadoop101 datas]$ vim case.sh
!/bin/bash
case $1 in
"1")
echo "banzhang"
;;
"2")
echo "cls"
;;
*)
echo "renyao"
;;
esac
[atguigu@hadoop101 datas]$ chmod 777 case.sh
[atguigu@hadoop101 datas]$ ./case.sh 1
1
7.3 for 순환
1. 1
for (( ; ; ))
do
done
2. 사례 실 기
(1) 1 100
[atguigu@hadoop101 datas]$ touch for1.sh
[atguigu@hadoop101 datas]$ vim for1.sh
#!/bin/bash
s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
[atguigu@hadoop101 datas]$ chmod 777 for1.sh
[atguigu@hadoop101 datas]$ ./for1.sh
“5050”
3. 기본 문법 2
for in 1 2 3…
do
done
4. 사례 실 기
(1)
[atguigu@hadoop101 datas]$ touch for2.sh
[atguigu@hadoop101 datas]$ vim for2.sh
#!/bin/bash
#
for i in $*
do
echo "ban zhang love $i "
done
[atguigu@hadoop101 datas]$ chmod 777 for2.sh
[atguigu@hadoop101 datas]$ bash for2.sh cls xz bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
(2) 8727 ℃ 와 * 와 8727 ℃ 와 @ 의 차이 점 (a) 을 비교 합 니 다.
[atguigu@hadoop101 datas]$ touch for.sh
[atguigu@hadoop101 datas]$ vim for.sh
#!/bin/bash
for i in $*
do
echo "ban zhang love $i "
done
for j in $@
do
echo "ban zhang love $j"
done
[atguigu@hadoop101 datas]$ bash for.sh cls xz bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
(b) 따옴표 "" 에 포 함 될 때 "$*" 는 모든 인 자 를 하나의 전체 로 하고 "$1 2... 2... 2... n" 형식 으로 모든 인 자 를 출력 합 니 다. "$@" 은 각 인 자 를 분리 하여 "$1", "2"... "n" 형식 으로 모든 인 자 를 출력 합 니 다.
[atguigu@hadoop101 datas]$ vim for.sh
#!/bin/bash
for i in "$*"
#$* , for
do
echo "ban zhang love $i"
done
for j in "$@"
#$@ , “$@” ,
do
echo "ban zhang love $j"
done
[atguigu@hadoop101 datas]$ chmod 777 for.sh
[atguigu@hadoop101 datas]$ bash for.sh cls xz bd
ban zhang love cls xz bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
7.4 while 순환
1.
while [ ]
do
done
2. 사례 실 기 (사례 실 기)
1) 1 100
[atguigu@hadoop101 datas]$ touch while.sh
[atguigu@hadoop101 datas]$ vim while.sh
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
[atguigu@hadoop101 datas]$ chmod 777 while.sh
[atguigu@hadoop101 datas]$ ./while.sh
5050
read 읽 기 콘 솔 입력
1. 기본 문법
read( )( )
:
-p: ;
-t: ( )。
:
2. 사례 실 기 (1) 는 7 초 동안 콘 솔 에서 입력 한 이름 을 읽 습 니 다.
[atguigu@hadoop101 datas]$ touch read.sh
[atguigu@hadoop101 datas]$ vim read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds " NAME
echo $NAME
[atguigu@hadoop101 datas]$ ./read.sh
Enter your name in 7 seconds xiaoze
xiaoze
함수.
9.1 시스템 함수
1.basename
basename [string / pathname] [suffix]
( :basename (‘/’) ,
。
:
suffix , suffix ,basename pathname string suffix 。
2. 사례 실 기
(1) /home/atguigu/banzhang.txt
[atguigu@hadoop101 datas]$ basename /home/atguigu/banzhang.txt
banzhang.txt
[atguigu@hadoop101 datas]$ basename /home/atguigu/banzhang.txt .txt
banzhang
dirname
dirname ( : ( ), ( ))
4.
(1) banzhang.txt
[atguigu@hadoop101 ~]$ dirname /home/atguigu/banzhang.txt
/home/atguigu
사용자 정의 함수
1. 기본 문법
[ function ] funname[()]
{
Action;
[return int;]
}
funname
2. 경험 치 기술 (1) 은 함 수 를 호출 하기 전에 함 수 를 먼저 밝 혀 야 합 니 다. 셸 스 크 립 트 는 한 줄 씩 실 행 됩 니 다. 다른 언어 처럼 먼저 컴 파일 되 지 않 습 니 다. (2) 함수 반환 값 은 $? 시스템 변 수 를 통 해서 만 얻 을 수 있 습 니 다. 추가: return 반환, 추가 하지 않 으 면 마지막 명령 으로 결 과 를 실행 합 니 다. return 뒤꿈치 n (0 - 255)3. 사례 실 조 (1) 는 두 개의 입력 매개 변수의 합 을 계산한다.
[atguigu@hadoop101 datas]$ touch fun.sh
[atguigu@hadoop101 datas]$ vim fun.sh
#!/bin/bash
function sum()
{
s=0
s=$[ $1 + $2 ]
echo "$s"
}
read -p "Please input the number1: " n1;
read -p "Please input the number2: " n2;
sum $n1 $n2;
[atguigu@hadoop101 datas]$ chmod 777 fun.sh
[atguigu@hadoop101 datas]$ ./fun.sh
Please input the number1: 2
Please input the number2: 5
7
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.