보통 리눅스 명령은 /bin 또는 /usr/bin 디렉토리에 별도의 실행 파일로 존재한다.
but, 셸 내장 명령은 셸 안에 포함되어 있어서(ex, cd 명령어) 별도의 실행 파일을 필요로 하지 않는다.
[배시 셸의 출력 명령 echo 와 printf]
문자열 출력이나 셸 변수 값 출력, 명령 결과 출력 등에 사용된다.
echo : 화면에 한 줄의 문자열 출력 <-형식 echo [-n] [문자열]
printf : c언어의 printf 함수 형식과 비슷. ex) printf "%d + %d = %d \n" 10 10 20
[배시 셸의 특수 문자 사용]
ⓐ * (별 표) : '모든'을 나타낼 때 사용된다.
ex) ls * <-현재 디렉터리의 모든 파일과 서브 디렉터리를 나열
cp * /tmp <-현재 디렉터리의 모든 파일을 /tmp 디렉터리 아래에 복사
ls -F t* <-t,tmp 등 파일명이 t로 시작하는 모든 파일의 이름과 파일 종류를 출력.
ⓑ ? (물음표) , [] (대괄호) : 하나의 문자를 나타내는데 사용된다.
ex) ls t*.txt <-t1.txt, ta.txt. 등을 출력한다.
ls -l tmp[135].txt <-tmp1.txt, tmp3.txt, tmp5.txt 파일이 있을경우 해당 파일의 상세 정보를 출력한다.
ls [A-Za-z]*[0-9] <-파일명이 영문으로 시작하고 숫자로 끝나는 모든 파일 목록을 출력한다.
ⓒ ~ (물결) , - (붙임표) : 디렉터리를 나타내는 특수 문자이다.
~(물결)은 현재 작업 중인 사용자의 홈 디렉터리를 나타내고, [~로그인ID]는 해당 사용자의 홈 디렉터리를 나타낸다.
ex)cp *.txt ~/ch3 <- 확장자가 txt인 모든 파일을 현재 작업 중인 사용자의 홈 디렉터리의 tmp 디렉터리로 복사
cp ~prankster/linux.txt <- prankster라는 사용자의 홈 디렉터리 아래에서 linux.txt. 파일을 찾아 현재 디렉터리로 복사
cd - <- 이전 작업 디렉터리로 이동
ⓓ ; (세미콜론) , | (파이프) : 연결 관련 특수문자.
;은 연결된 명령을 왼쪽부터 차례로 실행, |는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달.
ex) data;ls;pwd <-날짜 출력 후 현재 디렉터리의 파일 목록 출력 후 현재 작업 디렉터리의 절대 경로 보여줌.
ls -al / more <- ls -al / 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력된다.
ⓔ ' ' (작은따옴표) , " " (큰따옴표) : 특수문자 기능을 없애고 문자로 간주하려 처리하도록 해준다.
ex) echo '$SHELL' <- $SHELL 문자열이 화면에 그대로 출력됨.
echo "$SHELL" <- 셸 환경 변수인 SHELL에 저장된 값인 현재 셸의 종류가 화면에 출력됨.
위와 같이 ' '는 모든 특수 문자를, " "는 $, ``, \을 제외한 모든 특수 문자를 일반 문자로 간주하여 처리
ⓕ`` (백쿼터, 키보드 숫자 1 왼쪽에 있는 키) : 셸은 ``로 감싸인 문자열을 명령으로 해석한다.
ex)echo "Today is `date`" <-'date'는 명령으로 해석되어 date 명령의 실행 결과로 바뀜.
ls /platform/'uname -m' <-uname -m 명령의 실행 결과를 문자열로 바꿔 디렉터리 이름으로 사용.
ⓖ \ (\ 누르면 나오는 특수문자. 역빗금) :
특수 문자 앞에서 해당 특수 문자의 효과를 없애고 일반 문자처럼 처리하게 해 준다.