shell(1)

9778 단어
bash 변수 클래스:
로 컬 변수: 부분 변수 라 고도 부 르 며 현재 셸 프로 세 스 에 만 유효 합 니 다.
환경 변수: 현재 셸 및 하위 셸, 하위 셸...
특수 변수: $?  이전 명령 이 실 행 된 상 태 는 0 이 실 행 된 것 을 나타 낸다.실패 한 코드 가 많 습 니 다.
zhangsan@huanghao-Virtual-Machine:/$ cm kk
  “cm”    。      'cm''config-manager'    
zhangsan@huanghao-Virtual-Machine:/$ echo $?
127
zhangsan@huanghao-Virtual-Machine:/$ echo $?
0

 
변수 할당:
zhangsan@huanghao-Virtual-Machine:/$ age=23
zhangsan@huanghao-Virtual-Machine:/$ echo $age
23

변수의 값 을 다른 변수 에 부여 합 니 다:
zhangsan@huanghao-Virtual-Machine:/$ age=23
zhangsan@huanghao-Virtual-Machine:/$ age1=$age
zhangsan@huanghao-Virtual-Machine:/$ echo $age1
23

현재 문제 가 있 습 니 다. 위의 코드 를 실행 한 후 age 와 age 1 의 값 은 각각 얼마 입 니까?age 1 의 값 은 age 의 변화 에 따라 변 하지 않 습 니까?다음은 age 에 값 을 새로 부여 합 니 다. 보 세 요.
zhangsan@huanghao-Virtual-Machine:/$ age=24
zhangsan@huanghao-Virtual-Machine:/$ echo $age
24
zhangsan@huanghao-Virtual-Machine:/$ echo $age1
23

다음 코드 를 보 세 요. age 의 값 이 존재 할 때 age 의 값 을 변수 에 부여 합 니 다. 존재 하지 않 는 것 은 뒤의 값 을 변수 에 부여 하 는 것 입 니 다.
zhangsan@huanghao-Virtual-Machine:/$ result=${age-40}
zhangsan@huanghao-Virtual-Machine:/$ echo $result
24
zhangsan@huanghao-Virtual-Machine:/$ result=${age2-40}
zhangsan@huanghao-Virtual-Machine:/$ echo $result
40

age 값 이 존재 할 때 값 을 부여 하고 존재 하지 않 을 때 오류 정 보 를 되 돌려 줍 니 다:
zhangsan@huanghao-Virtual-Machine:/$ result=${age?'error'}
zhangsan@huanghao-Virtual-Machine:/$ echo $result
24
zhangsan@huanghao-Virtual-Machine:/$ result=${age2?'error'}
bash: age2: error

위의 코드 가 무슨 소 용이 있 는 지 생각해 보 세 요.시험 해 보다
zhangsan@huanghao-Virtual-Machine:/$ result=${age3?'age3 does not exist'}
bash: age3: age3 does not exist

 
출력:
echo $age
echo "hello"
#      
echo -n 'hello'   
#      
echo -e 'hello\tworld'   
echo -e "hello
world
"

 
작은 따옴표: 강 한 인용, 따옴표 에 있 는 문자열 은 무엇이든 그대로 있 습 니 다.
두 따옴표: 약 한 인용, 따옴표 의 변 수 를 변수의 값 으로 바 꿉 니 다.
반 따옴표: 키보드 위 ~ 아래 문자, 명령 교체
zhangsan@huanghao-Virtual-Machine:/$ age=23
zhangsan@huanghao-Virtual-Machine:/$ echo 'i am $age'
i am $age
zhangsan@huanghao-Virtual-Machine:/$ echo "i am $age"
i am 23
zhangsan@huanghao-Virtual-Machine:/$ echo "today is `date +%F`"
today is 2016-01-25

 
변수의 인용
${varname}
괄호
zhangsan@huanghao-Virtual-Machine:/$ age=23
zhangsan@huanghao-Virtual-Machine:/$ echo $age
23
zhangsan@huanghao-Virtual-Machine:/$ animal=pig
zhangsan@huanghao-Virtual-Machine:/$ echo "There are some ${animal}s"
There are some pigs
zhangsan@huanghao-Virtual-Machine:/$ echo "There are some $animals"
There are some

왜 맨 뒤에 출력 표시 변수 가 값 이 없 습 니까?동물 을 변수 로 인식 하기 때문이다.
 
변수의 취소:
zhangsan@huanghao-Virtual-Machine:/$ age=23
zhangsan@huanghao-Virtual-Machine:/$ echo $age
23
zhangsan@huanghao-Virtual-Machine:/$ unset age
zhangsan@huanghao-Virtual-Machine:/$ echo $age

읽 기 전용 변수: 취소 할 수 없습니다. 수정 할 수 없습니다.
zhangsan@huanghao-Virtual-Machine:/$ readonly animal=pig
bash: animal:     
zhangsan@huanghao-Virtual-Machine:/$ unset animal
bash: unset: animal:      :    variable

환경 변수의 설명:
zhangsan@huanghao-Virtual-Machine:/$ export AGE

성명 할 때 값 을 부여 할 수도 있 습 니 다.
zhangsan@huanghao-Virtual-Machine:/$ export AGE

환경 변수 이름
다음은 몇 가지 명령 을 소개 합 니 다.
#           (3 )
env
printenv
export

환경 변수 경로 추가
export PATH=/usr/local/apache/bin:$PATH

명령 바 꾸 기:
zhangsan@huanghao-Virtual-Machine:/$ echo "Today is `date +%F`"
Today is 2016-01-25
zhangsan@huanghao-Virtual-Machine:/$ echo `date +%F-%H:%M:%S`
2016-01-25-16:47:22

생 성 시퀀스
zhangsan@huanghao-Virtual-Machine:/$ seq 3
1
2
3
zhangsan@huanghao-Virtual-Machine:/$ seq 3 6
3
4
5
6
zhangsan@huanghao-Virtual-Machine:/$ seq 1 3 10
1
4
7
10

export 에서 생 성 된 환경 변 수 는 셸 이 시스템 을 다시 시작 하거나 다시 시작 한 후에 잃 어 버 립 니 다. 그러면 환경 변 수 를 설정 파일 로 저장 할 수 있 습 니 다.
#    
/etc/profile,   /etc/profile.d/*   , /etc/bashrc

#    
~/.bash_profile   ~/.bashrc

파일 로드 순서 설정
#   
/etc/profile     /etc/profile.d/*     /bash_profile    ,     ~/.bashrc   /etc/bashrc

#    
~/.bashrc     /etc/bashrc    /etc/profied/*

#                  ,            

파일 분류 설정
profile 클래스: 환경 변 수 를 설정 하고 명령 이나 스 크 립 트 를 실행 합 니 다. (사용자 가 로그 인 하기 전이 나 bash 가 시작 되 기 전)
bashrc 클래스: 로 컬 변 수 를 설정 하고 명령 별명 을 설정 합 니 다.
프로필 수정 이 완료 되면 다음 명령 을 사용 해 야 합 니 다. 예 를 들 어:
souce ~/.bash_profile
명령 별명:
alias vi=vim
alias cdnet='cd /etc/sysconfig/network-scripts/'
unalias vi    #    

입력 재 설정:
command < file
출력 방향 변경
command > file
1 은 표준 출력  2 는 오류 출력
command 2>file
정확 함 과 오 류 는 모두 방향 을 바꾼다.
command > file 2>&1   #모두 file 로 출력
command > file 2 > file2  #다른 파일 로 출력
command &>file   병합 출력 흐름
파이프:
command | command2       #첫 번 째 명령 의 출력 을 두 번 째 명령 의 입력 으로 삼다
command | command2 | command3 | … | commandN
주의해 야 할 것 은 파이프 가 정확 한 실행 결과 만 전달 하고 오류 가 발생 하면 종료 된다 는 것 이다.
zhangsan@huanghao-Virtual-Machine:/$ echo "abc" | tr "a-z" "A-Z"
ABC
zhangsan@huanghao-Virtual-Machine:/$ echo 'AbCd' | tr 'ABCD' 'abcd'
abcd

명령 기록
cut – d '- f2 문자열 을 빈 칸 으로 자 르 고 두 번 째 문자열 을 출력 합 니 다.
cut –d: –f2   자르다
uniq  중 복 된 줄 이동
가끔 이런 상황 이 발생 한다.
zhangsan@huanghao-Virtual-Machine:/$ ls /var/log |file
Usage: file [-bchikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]

file 뒤에 파일 을 따라 가 야 하기 때문에 없 으 면 안 됩 니 다. 이 경우 우 리 는 - 대체 할 수 있 습 니 다.
zhangsan@huanghao-Virtual-Machine:/$ ls /var/log |file -
/dev/stdin: ASCII text

file  파일 형식 보기
명령 을 하나 더 기록 하 다 tee
command | tee /tmp/tee.out |command2    # command      tee.out      command2

좋은 웹페이지 즐겨찾기