쉘(Shell), 쉘스크립트(Shell Script), 쉘명령어 정리 (계속수정)

kmb·2023년 5월 7일
1

Linux

목록 보기
2/2
post-thumbnail

쉘(Shell)

운영체제에서 사용자가 입력하는 명령어를 읽고 해석해서 운영체제가 이해 할 수 있도록 도와주는 명령어 해석기.
즉 운영체제의 커널과 사용자 사이를 이어주는 역할.

Linux에서의 쉘 종류는 다음과 같다.
1. Bourne Again Shell (bash) : 본쉘 기반의 쉘. 리눅스의 표준쉘이다 (프롬프트 : #, 경로 : /bin/bash)
2. Boume Shell (sh) : 유닉스7버전의 기본 쉘 (프롬프트 : $, 경로 : /bin/sh)
3. C Shell (csh) : C언어 기반으로 개발된 쉘 (프롬프트 : %, 경로 : /bin/csh)
4. Korn Shell (ksh) : 본쉘을 확장해서 만들어진 쉘. C쉘의 여러 기능이 추가 (프롬프트 : $, 경로 : /bin/ksh)
5. TENEX C Shell (tcsh) : C쉘과 통합된 쉘 (프롬프트 : >, 경로 : /bin/tcsh)


쉘 스크립트(Shell Script)

운영체제의 쉘(Shell)을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시키는 인터프리트(interpret) 방식의 컴파일되지 않은 프로그램.

쉘(Shell)에서 사용 할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일.

 

  • 쉘 스크립트 특징
  1. 파일로 작성 후, 파일을 실행해야한다.
  2. 파일의 가장 위쪽 첫라인은 #!/bin/bash 로 시작
  3. 쉘 스크립트 파일은 코드 작성이후 실행권한을 부여해야한다.
  4. 파일이름은 일반적으로 '파일이름.sh' 이다
  5. 주석은 #내용 으로 처리한다

기본 쉘명령어

명령어설명예시
clearconsole에 있는 명령어를 모두 지운다
ctrl + c프로세스 종료
cat파일의 내용을 텍스트로 출력한다cat test.txt
pwd현재위치의 디렉토리를 출력
cd 경로명현재 디렉토리 위치를 다른위치로 이동cd test
cd /최상위 경로로 이동
cd ..현재경로의 한칸 상위경로로 이동
cd ~/ 경로명어느경로에 있던 해당 경로에 direct로 이동cd ~/ test
./현재폴더의 위치를 의미
ls현재 위치한 디렉토리에 있는 폴더와 파일 확인할 때 사용
ls -al현재 위치한 디렉토리에 있는 폴더와 파일을 자세하게 확인
ls --all숨겨진 파일을 볼 수 있다 (파일명앞에 . 이 붙어있다)
mkdir폴더를 생성mkdir user
rm -r폴더를 삭제rm -r user
touch파일을 생성touch test.txt
rm파일을 삭제rm test.txt
cp파일을 복사cp a.txt b.txt (a.txt파일을 b.txt라는 이름의 파일로 복사)
mv파일을 다른 디렉토리 위치로 이동. 혹은 파일 이름을 변경할때 사용
mv 변경전파일명 변경후 파일명기존 파일의 이름을 변경mv b.txt c.txt (b.txt파일이 c.txt파일로 변경)
mv 이동시킬파일명 폴더명파일을 특정폴더로 이동mv b.txt user
ln -s 파일명 바로가기파일명바로가기 파일을 생성ln -s a.txt a-link.txt
apt-cache search 파일명apt저장소목록에 특정파일이 있는지 조회apt -cache search tomcat
apt list | grep 파일명apt 저장소목록을 |(파이프라인)을 타서 grep 명령어로 특정 파일명만 추려낸다apt list | grep tomcat
apt updateapt 저장소 목록 최신화 업데이트
apt install -y 파일명apt저장소 목록의 파일을 설치apt install -y tomcat9
apt remove 파일명설정파일을 제외한 나머지를 지운다apt remove tomcat9
apt --purge remove 파일명모든파일을 지운다apt --purge remove tomcat9
add-apt-repository PPA파일이름PPA 저장소파일 추가add-apt-repository ppa:rivergod/tomcat8.5
add-apt-repository --remove PPA파일이름잘못된 버전의 PPA 저장소를 삭제add-apt-repository --remove ppa:rivergod/tomcat8.5
netstat 옵션명네트워크 연결상태, 라우팅테이블, 인터페이스 상태를 보여준다netstat -nlpt (도메인주소를 숫자로, 대기중인 네트워크, PID 및 사용중인 프로그램명, TCP 프로토콜 출력)
service --status-all등록된 서비스들의 목록을 볼 수 있다. [+] 는 실행중인서비스 [-]는 실행중이지 않은 서비스
service 서비스명 start서비스를 실행한다service tomcat8 start
service 서비스명 restart프로세스를 종료한경우 다시 서비스를 실행할때 사용service tomcat8 restart
service 서비스명 stop서비스를 종료 (종료가 안되거나 서비스로 등록이 안되어있는 프로세스는 kill 명령어로 강제종료)service tomcat8 stop
systemctl list-unit-files실행중인 전체서비스 목록을 출력
systemctl status 서비스명서비스의 상태를 확인systemctl status tomcat8
systemctl stop 서비스명서비스를 종료 (종료가 안되거나 서비스로 등록이 안되어있는 프로세스는 kill 명령어로 강제종료)systemctl stop tomcat8
systemctl start 서비스명서비스를 실행systemctl start tomcat8
systemctl restart 서비스명프로세스를 종료한경우 다시 서비스를 실행할때 사용systemctl restart tomcat8
kill -l서비스를 강제종료를 할 수 있는 옵션들 출력
ps -ef현재 실행중인 프로세스 전체 출력
ps -ef | grep 서비스이름특정 서비스의 프로세스 정보를 출력ps -ef | grep tomcat8
ps -ef | grep 서비스이름 | grep -v grep특정 서비스의 프로세스 정보 중 grep 명령어의 정보를 제외하고 출력ps -ef | grep tomcat8 | grep -v grep
ps -ef | grep 서비스이름 | grep -v grep | awk '{print $번호}'특정 서비스의 프로세스 정보중 grep 명령어 정보를 제외하고 출력되는 정보를 배열단위로 끊어서 확인ps -ef | grep tomcat8 | grep -v grep | awk '{print $1}' ==> tomcat8이 출력된다
vim 파일명일반모드 편집기능 활성화yy : 현재행 복사 p : 붙여넣기 ctrl+b : 위로 한 화면 스크롤 ctrl+f : 아래로 한 화면 스크롤 x : 현재커서의 문자삭제 $ : 행의 맨끝으로 이동
sudo passwd root최고관리자 root의 비밀번호를 설정
chmod 소유자권한번호 그룹권한번호 그외사용자번호 파일명파일명에 대한 권한을 소유자, 그룹, 그외사용자 별로 read, write, execute 권한을 덮어쓰기로 부여 ( r=4 w=2 x=1 -=0 )chmod 646 test.txt
chmod u+(rwx중아무거나),g+(rwx중아무거나),o+(rwx중아무거나) 파일명파일명에 대한 권한을 소유자(u), 그룹(g), 그외사용자(o) 별로 read, write, execute 권한을 추가로 부여 ( r=4 w=2 x=1 -=0 )chmod u+x,g+wx,o+x test.txt
chown 소유자명:그룹명 파일명그룹의 소유자를 변경chown root:ubuntu text.txt
find / -name 파일명최상위 경로인 / 부터 파일명의 위치를 찾는다find / -name tomcat8
tail -f 파일명실시간(-f)으로 파일명의 마지막부분을 출력해서 로그파일의 최근 변경내역을 확인tail -f catalina.out
tail -f 원래파일명 > 옮길파일명표준출력의 방향을 원래파일명에서 옮길파일명으로 변경tail -f catalina.out > mylog.out
nohup리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작하게 해주는 명령어 (뒤에 & 를 붙이면 백그라운드로 실행)nohup java -jar *.jar &
백그라운드에서 출력 종류에 따라 redirection을 나눌수있다 ( 0 : 표준입력 스트림, 1 : 표준출력 스트림, 2 : 표준오류 스트림 )nohup java -jar v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
source강제로 적용시키는 명령어source ./. bashrc
export환경변수를 설정하는 명령어
tar파일을 압축하거나 풀때 사용하는 명령어tar -csf hello.tar a.txt b.txt
cron자동 재시작 명령어
echo표춘출력 모니터로 글자를 출력echo "안녕"
timedatectl시간 관련 명령어timedatectl list-timezones | grep Seoul

 

출처

  • easyup 개발자를 위한 AWS DevOps 입문 강의
profile
꾸준하게

0개의 댓글