[ASAC 06] Shell, Linux 명령어

2024. 9. 12. 20:17·ASAC
728x90

 

이 글은 ASAC 06기를 수강하며 강의 자료 참고 및 추가 자료 수집을 통해 작성된 글입니다.

Shell 종류

  1. Bourne Shell (sh, 쉘 혹은 본쉘) : AT&T 벨 연구소의 스티븐 본 개발
    • 쉘을 수행할때 : #!/bin/sh = 상단에 셔뱅(shebang)을 추가한 뒤 스크립트를 작성(Batch File)
  2. Bourne-Again Shell (bash, 바쉘 혹은 배쉬) : GNU 프로젝트 일환 개발, 유닉스 계열 운영체제 기본 쉘
  3. Z Shell (zsh, 지쉘) : 커스텀이 자유로워 예쁜 테마를 가진 쉘을 사용할 수 있고, 인터렉티브가 훨씬 개선
  • ZShell > Bash > Shell 순서로 최적화
  • 루트 > 일반 > 게스트 계정 순서로 높은 권한

Bash 명령어

쉘 시작 or 설정 재로딩 명령어

source ~/.bashrc // 파일 수정 후 터미널을 껐다 켜는 대신, 설정 재로딩 명령어

쉘 설정 파일 경로

~/.bashrc // 공통 설정 파일. rc = runcommands
~/.bash_profile // 계정 설정 파일. 또는 ~/.bash_login, ~/.profile 순서.

쉘 종료 명령어

 ~/.bash_logout

쉘 수행

  • 스크립트 앞에 #!/bin/sh (셔뱅)

ZSehll 명령어

쉘 시작 or 설정 재로딩 명령어

source ~/.bashrc // 파일 수정 후 터미널을 껐다 켜는 대신, 설정 재로딩 명령어

쉘 설정 파일 경로

~/.zshrc // 공통 설정 파일.
~/.zprofile // 계정 설정 파일. 또는 ~./zshenv

(기타) 히스토리 저장

~/.zsh_history

(기타) 세션 관리

~/.zsh_sessions

쉘 수행

  • 스크립트 앞에 #!/bin/sh (셔뱅)

리눅스 명령어

기본 명령어 뒤에 -로 시작하는 옵션을 줄 수 있다.

기본 경로

  • ~ : 유저의 디렉토리 위치
  • / : 루트. 절대 경로의 경우 모두 루트로 시작한다.
  • . : pwd와 동일함. 이를 통해 이동하는 경우를 상대 경로라고 한다.

파일 생성

touch 파일명

vi 파일명 // vi 에디터로 접속하여 바로 파일 쓰기 및 생성 가능.

vi 명령어

vi는 에디터

  • 명령 모드 : 기본적으로 처음 들어가면 명령 모드. insert 모드에서 esc 누르면 명령 모드로 전환
    • 한 글자 삭제 : x 누르면 커서 뒤 글자를 삭제
    • 한 줄 삭제 (잘라내기) : 특정 행에서 dd 누르면 해당 행을 삭제. 앞에 숫자가 붙으면, 현재 행으로부터 n개 행 잘라내기
    • 한 줄 복사 : 특정 행에서 yy 누르면 해당 행을 복사. 앞에 숫자가 붙으면, 현재 행으로부터 n개 행 복사
    • 한 줄 붙여넣기 : 특정 행에서 p 누르면, 바로 다음 행에 버퍼에 복사된 내용 붙여넣기
    • 되돌리기 : u 누르면 직전 명령어 되돌리기. ctrl + z 역할
    • 커서 한 줄 위로 : k 누르면 현재 행의 아랫 줄로 커서 이동
    • 커서 한 줄 아래로 : j 누르면 현재 행의 윗 줄로 커서 이동
    • 커서 오른쪽으로 : l
    • 커서 왼쪽으로 : h
    • 커서 있는 줄의 맨 앞으로 : 0
    • 커서 있는 줄의 맨 뒤로 : $
    • 파일 맨 끝으로 : G
    • n개 행 윗 줄로 : 숫자(n)-
    • n개 행 아랫 줄로 : 숫자(n)+
  • 입력 모드 : i 누르면, insert 모드로 전환
  • 마지막행 모드 : 명령 모드에서 :로 시작하는 명령어 입력 후 엔터를 입력해야 한다.
    • 모두 :로 시작해야 한다.
    • 쓰기 : w
    • 종료 : q
    • 강제 종료 : q!
    • 일반적으로 :wq를 많이 사용하여 쓰기(저장) 후 종료한다.

vscode 에디터

code 파일명

해당 파일을 vscode로 열기

디렉토리 생성

mkdir 디렉토리명

새 디렉토리 생성

디렉토리 내 파일 or 디렉토리 조회

ls // 현재 디렉토리 내부 숨겨진 파일 혹은 디렉토리 제외 모든 이름 확인
ls -al // 옵션 : a = 모든 것. 숨겨진 파일 포함. l = 상세하게. 세부 권한 및 생성일 등을 확인할 수 있음
ll // = ls -al

ls 경로 // 굳이 특정 경로로 이동(cd)할 필요없이, 뒤에 경로를 적어주어서 해당 경로 하위 모든 파일 보기 가능

삭제

rm 파일명 // 파일 삭제. 파일 여러개 삭제 시 파일명 사이 공백 입력
rm -rf 디렉토리명 // 디렉토리 삭제 시, rm만으로는 되지 않는다. -rf 옵션 필요. r = recursive (재귀). f = force (강제)

복사

cp 기존파일명 새파일명 // 기존 파일을 새 파일로 복사
cp -r 기존디렉토리명 새디렉토리명 // 기존 디렉토리를 새 디렉토리로 복사. r = recursive (재귀)

cp는 원본이 바뀌지 않고, 복사만 진행된다.

이동 혹은 명칭 변경

mv 기존파일명 새로운경로 // 기존 파일을 새로운 경로로 이동시킨다. 혹은 명칭을 변경한다.
// 이미 존재하는 경로라도 덮어쓸 때 경고를 주지 않는다.

mv -r 기존디렉토리명 새로운경로 // 기존 디렉토리를 새로운 경로로 이동시킨다. 혹은 명칭을 변경한다.
mv -b 기존파일명 새로운경로 // 새로운 경로가 이미 존재하는 경로라면, 백업 파일 생성 (~로 끝나는 파일)
mv -i 기존파일명 새로운경로 // 새로운 경로가 이미 존재하는 경로라면, 사용자에게 덮어쓰기 여부를 물어봄

mv -f 기존파일명 새로운경로 // 만약 파일이 쓰기 보호되어 있는 경우, 덮어쓰기 강제

cp와 달리 mv는 원본이 바뀐다.

출력

echo 문자열 // 문자열 출력
echo 문자열 > 파일명 // 특정 파일로 문자열 덮어쓰기
echo 문자열 >> 파일명 // 특정 파일 맨 뒤에 문자열 붙이기

환경변수 출력 시 변수명 앞에 $붙여서 출력

세션 한정 환경변수 설정

export 변수명=값

세션에 한정된 환경변수 설정 (세션 종료 시 사라짐)

파일 출력

cat 파일명 // 파일 모든 line 출력
head -숫자 파일명 // 해당 파일의 앞에서부터 n개 행을 출력
tail -숫자 파일명 // 해당 파일의 뒤에서부터 n개 행을 출력. (출력은 앞->뒤 순서임)
tail -f 파일명 // 실시간 로그 확인하기. f = fetch

파이프

  • 파이프 | : shift + . 연결되어 이어 수행. 앞선 명령어의 output을 파이프로 연결된 다음 명령어의 input으로 사용

문자열 중 특정 조건 검색

grep 문자열 // 문자열 중 특정 조건 검색
grep -E 문자열 // 정규 표현식 사용 검색
grep -i 문자열 // 대소문자 구분 없는 검색
grep -n 문자열 // 검색된 라인 넘버 표기

특정 문자열을 포함하는 파일 및 디렉토리 검색

ls -al | grep 문자열 // 전체 파일 및 디렉토리에서 특정 문자열을 포함하는 파일 및 디렉토리만 출력

권한 명령어

chmod 파일명 권한(Owner, Group, Other 순서) 
  • READ : 4
  • WRITE : 2
  • EXECUTE : 1
  • chmod +x => 모든 권한을 준다. 앞에 대상 그룹이 적혀있지 않으면, 모든 그룹
  • chmod a+x => all
  • u : user
  • g : group
  • o : others

ex) chmod 700 => Owner에게 7권한(4+2+1 = 읽기, 쓰기, 실행 권한), Group과 Other에게는 모든 권한 없음

압축

tar -x 파일명 // 압축 풀기. extract
tar -c 파일명 // 압축하기. create
tar -xvf 파일명 // -v = verbose. 어떤 파일이 풀리는지 상세히 보기, -f = filename 지정

명령어 확장

여러 개의 명령어들을 다음 기호들을 사용해 이어서 명령어 확장을 수행할 수 있다.

  • && : 명령어들을 독립적으로 수행. | 파이프와 달리 앞 명령어 결과가 다음 명령어의 입력으로 들어가지 않음
  • ; : 앞 명령어가 실패해도, 다음 명령어 실행 (&& 보다 완화된 연결)
  • & : 앞 명령어와 다음 명령어 동시 실행
  • || : 앞 명령어가 실패하면, 다음 명령어 실행
728x90

'ASAC' 카테고리의 다른 글

[ASAC 06] GitHub 명령어 정리  (1) 2024.09.27
[ASAC 06] 세션과 JWT, CORS 관련 질문 정리  (0) 2024.09.12
[ASAC 06] CORS  (1) 2024.09.11
[ASAC 06] HTTPS  (1) 2024.09.11
[ASAC 06] 웹 저장소 (쿠키, 세션, 웹 스토리지)  (4) 2024.09.11
'ASAC' 카테고리의 다른 글
  • [ASAC 06] GitHub 명령어 정리
  • [ASAC 06] 세션과 JWT, CORS 관련 질문 정리
  • [ASAC 06] CORS
  • [ASAC 06] HTTPS
suhsein
suhsein
티끌모아 태산
  • suhsein
    기억 못 할 거면 기록이라는 좋은 수단이 있다
    suhsein
  • 전체
    오늘
    어제
    • 분류 전체보기
      • ASAC
      • Next.js
      • Docker
      • MySQL
      • Java
      • Spring-Proxy, AOP
      • Spring Boot, JPA
      • Spring Security
      • DB
      • 알고리즘
      • PS
      • TOPCIT
      • AWS 자격증
      • 비공개
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 안녕하세요
  • 인기 글

  • 태그

    티스토리챌린지
    동적프로그래밍
    Alias
    DP
    해시
    외판원순회
    오블완
    포인터
    tsp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
suhsein
[ASAC 06] Shell, Linux 명령어
상단으로

티스토리툴바