linux 그까짓 일
8514 단어 linux
간단 한 셸 프로그램
다음은 셸 프로그램 을 직접 보 겠 습 니 다.
-----------------
#!/bin/sh # This is to show what a example looks like. echo "Our first example" echo # This inserts an empty line in output echo "We are currently in the following directory." /bin/pwd echo echo "This directory contains the following files" /bin/ls
셸 구조:
#!/bin / sh 는 다음 스 크 립 트 는 시스템 의 Bourne 셸 해석 기 를 사용 하여 실행 을 설명 합 니 다. \ #!이 스 크 립 트 의 셸 경 로 를 설명 하 는 특수 한 표시 자 입 니 다. \ #주석 줄 본 줄 의 내용 은 주석 역할 을 하 며 내용 은 실행 되 지 않 습 니 다.
echo 출력 문 구 는 프로 그래 밍 에서 print 출력 에 해당 합 니 다.
/ bin / pwd 는 현재 경 로 를 표시 합 니 다. pwd 는 자주 사용 할 것 입 니 다. 앞 에 / bin / 는 이 명령 의 절대 경 로 를 표시 합 니 다.
/ bin / ls 는 현재 디 렉 터 리 에 있 는 내용 을 표시 합 니 다. 이것 은 설명 하지 않 습 니 다. Liux 를 하 는 것 이 가장 먼저 알 아야 합 니 다.
다음 실행: [root@bogonbin] \ # sh exple. shOut 첫 번 째 예제 --- 인쇄 내용
우 리 는 현재 다음 디렉토리 에 있 습 니 다. --- 인쇄 내용 / bin --- 현재 경 로 를 표시 합 니 다.
this directory contains the following files --- 인쇄 내용 alsaunmute date gettext mail red touch --- 현재 디 렉 터 리 에 있 는 파일 arch dd grep mailx rm tracepathash df gtar mkdir rmdir tracepath6ash. static dmesg gunzip mknod rpm tracerouteau mix - minimal dnsdomainname gzip mktemp rvi traceroute6awk doexec hostname more rview truebasename domainname igawk mount sed exple.sh
아주 간단 합 니 다. 이것 은 가장 간단 한 셸 프로 그래 밍 입 니 다. 단지 제 가 평소에 사용 하 는 명령 들 을 하나 로 통합 시 키 는 것 에 불과 합 니 다.DOS 의 일괄 처 리 를 잘 아 시 는 지 모 르 겠 습 니 다.그들 은 우리 가 평평 하 게 작 동 하 는 명령 을 함께 집행 하 는 것 과 유사 하 다.셸 은 해석 적 인 언어 이다.사실 우 리 는 이러한 프로 그래 밍 이 우리 시스템 에 대한 의존 도가 비교적 강하 다 는 것 을 알 게 될 것 이다.예 를 들 어 / bin / pwd 에서 pwd 명령 을 실행 합 니 다. 시스템 에 pwd 가 bin / 디 렉 터 리 에 놓 여 있 지 않 으 면 프로그램 이 여기까지 실행 되 는 데 오류 가 발생 할 수 있 습 니 다.비교적 정규 적 인 해석: Shell 은 기본적으로 명령 해석 기 로 DOS 의 command. com 과 유사 하 다.사용자 명령 (예 를 들 어 ls 등) 을 받 고 해당 프로그램 을 호출 합 니 다.비교적 통용 되 는 셸 은 표준 Bourne 셸 (sh) 과 C 셸 (csh) 이 있다.
대화 식 셸 과 비 대화 식 셸
대화 식 모드 는 셸 이 입력 을 기다 리 고 제출 한 명령 을 실행 하 는 것 입 니 다. 이 모드 를 대화 식 이 라 고 부 르 는 것 은 셸 이 사용자 와 상호작용 을 하기 때 문 입 니 다. 이 모드 는 대부분의 사용자 들 이 잘 알 고 있 습 니 다. 로그 인, 명령 실행, 서명 을 합 니 다. 서명 을 하면 셸 도 종 료 됩 니 다. 셸 도 다른 모드 에서 실행 할 수 있 습 니 다. 비 대화 형 모드 에서 도 실행 할 수 있 습 니 다.식. 이 모드 에서 셸 은 대화 하지 않 고 파일 에 저 장 된 명령 을 읽 고 실행 합 니 다. 파일 의 끝 에 읽 으 면 셸 도 종 료 됩 니 다.
셸 프로그램 을 만 드 는 절차:
첫 번 째 단계: 명령 과 제어 구 조 를 포함 하 는 파일 을 만 듭 니 다. 두 번 째 단계: 이 파일 을 실행 할 수 있 는 권한 을 수정 합 니 다. 물론 한 사용자 가 파일 을 실행 하려 면 이 파일 에 대해 실행 권한 이 있어 야 합 니 다. "chmod u + x" 명령 을 사용 하여 사용자 에 게 실행 권한 을 부여 합 니 다. 세 번 째 단계: 실행. / example 현재 디 렉 터 리 에서 파일 을 직접 실행 할 수도 있 습 니 다."sh example" 명령 을 실행 합 니 다.
셸 변수
우 리 는 셸 에 대해 초보적인 인식 을 가지 고 있 지 않 습 니까? 그러면 그것 은 단지 간단 한 명령 집합 일 뿐 입 니까? no! 하나의 언어 로 서 그 는 당연히 자신의 문법 도 가지 고 있 습 니 다. 다음 과 같이 당신 이 어떤 언어 를 알 고 있다 면, 다음은 셸 이 당신 이 알 고 있 는 언어 와 어떤 차이 가 있 는 지 보 겠 습 니 다.
변수: 셸 이 데 이 터 를 전달 하 는 방법 으로 모든 값 을 나타 내 는 기호 이름 입 니 다.
셸 은 두 가지 변수 가 있 습 니 다. 임시 변수 와 영구 변수 입 니 다.
임시 변 수 는 셸 프로그램 내부 에서 정 의 된 것 입 니 다. 사용 범 위 는 프로그램 을 정의 하 는 데 만 한정 되 어 있 으 며 다른 프로그램 에 서 는 볼 수 없습니다. 사용자 정의 변수, 위치 변 수 를 포함 합 니 다. 사용자 정의 변수의 형식 요구: 글자 마다 밑줄 로 시작 하고 알파벳, 숫자 또는 밑줄 로 구성 되 며 대소 문자 의 의미 가 다 릅 니 다. 변수 이름 의 길 이 는 제한 되 지 않 습 니 다.변 수 를 사용 할 때 변수 이름 앞 에 접두사 '$' 를 붙 여야 합 니 다.
변 수 를 정의 하고 보기: [root@bogon ~]# NUM=100[root@bogon ~]# echo $NUM100[root@bogon ~]# TIME=$(date)[root@bogon~] \ # echo $TIME 5 6 월 1 일 22: 57: 28 CST 2012 [root@bogon ~]# B=fnngj[root@bogon ~]# echo $Bfnngj[root@bogon ~]# A=$B[root@bogon ~]# echo $Afnngj
영구 변 수 는 환경 변수 로 셸 스 크 립 트 의 실행 이 끝나 지 않 고 사라 집 니 다. [root@bogon ~]# echo $LANGzh_CN.UTF-8[root@bogon~] \ # echo $PATH / usr / kerberos / sbin: / usr / kerberos / bin: / usr / local / sbin: / usr / local / bin: / sbin: / usr / sbin: / usr / bin: / usr / bin: / usr / X11R6 / bin: / root / bin 위의 이 시스템 설정 들 은 내 셸 프로그램 이 끝나 면 사라 지지 않 을 것 입 니 다.
우리 시스템 에서 정의 하 는 어떤 변 수 를 보 세 요. [root@bogon ~]# set | moreA=fnngjB=fnngjBASH=/bin/bashBASH_ARGC=()BASH_ARGV=()BASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")BASH_VERSION='3.00.15(1)-release'COLORS=/etc/DIR_COLORS.xtermCOLUMNS=80.............
변수 삭제: [root@bogon~] \ # unset A 는 unset 명령 을 실행 하면 변 수 를 삭제 할 수 있 습 니 다.
명령 읽 기
이 명령 은 비교적 재 미 있 지만 변 하 는 과정 에서 도 흔히 볼 수 있다. 예 를 들 어 프로그램 이 특정한 문장 으로 실 행 될 때 멈 춰 서서 사용자 에 게 내용 을 입력 하 라 고 요구 한 다음 에 사용자 가 입력 한 내용 에 따라 계속 집행 한다.
read 명령: 키보드 에서 데 이 터 를 읽 고 변 수 를 할당 합 니 다: read USERNSME
[root@bogon shell]# touch read.sh[root@bogon shell]# vi read.sh
#! /bin/sh
read first second third
echo "the first parameter is $first"
echo "the second parameter is $second"
echo "the third parameter is $third"
[root@bogon shell]# sh read.sh100 200 300 여기 서 사용자 에 게 첫 번 째 매개 변 수 는 100 이 고 두 번 째 매개 변 수 는 200 이 며 세 번 째 매개 변 수 는 300 입 니 다.
셸 변수의 산술 연산
산술 연산 도 우리 가 자주 사용 하 는 것 이다. 다음은 셸 의 간단 한 덧셈 과 곱셈 을 살 펴 보 자.
expr 명령: 정수 형 변 수 를 산술 연산 합 니 다. 예 를 들 어 [root@localhost ~]# expr 3+53+5[root@localhost ~]# expr 3 + 58[root@localhost ~]# expr 9 - 54[root@localhost ~]# expr 9 / 51[root@localhost이 곱셈 은 별표 (*) 때문에다른 의미 도 있 습 니 다. 만약 당신 이 찾 을 때 * 알 수 없 는 문 자 를 대표 하기 때문에 곱셈 으로 사용 하려 면 여기에 전의 기호 (\) 를 넣 어야 합 니 다.
셸 인 스 턴 스
앞 에 미 션 계획 이 있 습 니 다. 지금 은 미 션 계획 에 따라 의미 있 는 셸 프로그램 을 쓰 겠 습 니 다. 한 학교 에 쓰레기 같은 apache 서버 가 있 습 니 다. 저녁 8 시 부터 10 시 까지 이 서버 를 방문 하 는 학생 이 많 습 니 다. 그리고 이 서버 는 자주 끊 깁 니 다. 학 교 는 장 비 를 추가 할 돈 도 없습니다. 지금 은 셸 프로그램 을 쓰 겠 습 니 다.2 분 마다 apache 를 검사 하 라 고 하 세 요. 서버 가 끊 기 면 다시 시작 하 세 요. (물론 이 문 제 는 원본 에서 해결 할 수 없습니다)
apache 가 시작 되 었 는 지 여 부 를 어떻게 판단 합 니까? [root@bogon bin]# pgrep httpd7942 7944 7946 7947 7948 7950 서버 가 끊 겼 다 면 pgrep httpd 를 입력 하면 입력 이 없습니다.
우 리 는 이미 판단 방법 을 알 았 으 니, 아래 에 이 프로그램 을 쓰기 시작 할 수 있다.
#!/bin/sh
#"if....else" usage
# using this program to show your system's service.
echo "now, the web services of this linux system will be detect..."
echo
# Detesct www service
web='/usr/bin/pgrep httpd'
if["$web"!=""]
then
echo "the web sercice is running."
else
echo "the web sercice is running."
/etc/rc.d/init.d/httpd start
fi
사실 핵심 내용 은 pgrep httpd 가 비어 있 는 실행 재 부팅 명령 을 판단 하 는 것 입 니 다. ^ ^!
작업 계획 에 대해 서 는, 장 에 소개 되 어 있 습 니 다. 위의 매개 변수 에 대한 의미:http://www.cnblogs.com/fnng/archive/2012/05/20/2510641.html
[root@bogon test]# crontab -e*/2 20-22 * * 1-7 test.apache
: wq! 저장 종료. 그리고 우 리 는 아무 일 도 없습니다. 계획 에 따라 스 크 립 트 를 실행 합 니 다. 하하!
--------------------------------------------------------------------------------------------------------
후기:
셸 프로 그래 밍 에 대해 서 는 순환 문 (if... else) 조차 소개 하지 않 았 습 니 다. 마지막 예 에서 사용 되 었 습 니 다. 셸 프로 그래 밍 은 두 꺼 운 책 일 수 있 습 니 다. 하지만 제 가 현재 공부 하고 있 는 중점 이 아 닙 니 다. 시간 이 있 으 면 셸 의 내용 을 한 편 더 보충 하 겠 습 니 다.
올해 초부 터 Liux 를 공부 하기 시 작 했 는데 지금까지 일 단락 된 셈 이다. 사실은 공부 하 는 과정 에서 많은 문제 에 부 딪 혔 다.단지 내 가 배 운 주요 내용 을 정리 하 였 을 뿐이다. 기본적으로 아무것도 모 르 고 지금까지 Liux 에 대해 조금 알 게 되 어 기쁘다. 그러나 이 공 부 는 너무 오래 걸 렸 다 고 생각한다. 아마도 나 는 한두 달 에 원 고 를 할 수 있 을 것 이다. 올 해 는 북방 에서 남방 으로 직장 을 옮 기 는 것 을 한 번 겪 었 을 것 이다. 그리고 지금 은 일이 매우 바 쁘 고 생활 속 에 여러 가지 자질구레한 일이 너무 많다. 그래서 배 웠 다.학습 시간 이 매우 적다. 그러나 나 는 여기에서 자신의 일과 공 부 를 계속 쓰 고 있 을 것 이다.
다음 공 부 는 두 가지 측면 에서 Oacle 과 성능 테스트 를 하 겠 습 니 다.
나 는 줄곧 데이터베이스 바보 이 며, 데이터베이스 에 대해 기본적으로 흥미 가 없다. 그러나 그것 은 나의 기술 발전의 단판 이기 때문에, 나 는 약간의 시간 을 들 여 이 방면 의 지식 을 보충 하고 싶다.
성능 테스트 는 항상 제 가 좋아 하 는 부분 입 니 다. 현재 의 작업 은 성능 테스트 가 없습니다. 하지만 지난 작업 에서 성능 테스트 를 한 적 이 있 습 니 다. 다음 목 표 는 전문 적 인 성능 테스트 를 하 는 것 입 니 다. loadrunner 와 jmeter 는 모두 해 본 적 이 있 습 니 다. 하지만 저 는 지금 이론 에 중점 을 두 겠 습 니 다. 성능 테스트 의 중점 은 도구 에 있 지 않 고 관련 된 지식 면 이 많 습 니 다. 조금 깨 달 으 면 기록 할 것 입 니 다.여기. 허허!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.