리눅스와 Bash Shell 명령어

김희영·2025년 11월 21일

토막개발지식

목록 보기
24/27

운영체제 구조의 차이

Windows
유저 → Bash Shell(or PowerShell) → CMD(명령 처리기) → 커널 → 드라이버 → 하드웨어

Linux
유저 → 쉘(Bash 등) → 커널 → 드라이버 → 하드웨어

-> 쉘: 사용자가 운영체제에 명령을 전달하는 인터페이스
+) Linux는 쉘에서 커널로 바로 연결

Bash 명령어

pwd

pwd (print working directory)
현재 내가 위치한 디렉터리(작업 경로)를 출력한다.
예) /home/user/project


ls

현재 디렉터리에 존재하는 파일과 폴더 목록을 출력한다.

옵션:

  • ls -l : 파일 권한, 소유자, 크기, 수정 시간 등 상세 정보를 표시한다
    • ll 로도 같은 결과를 얻을 수 있다(일부 환경에서는 alias 로 설정되어 있음)
    • 출력형식 : 사용자별_권한 하드링크_수 파일의_소유자 파일의_그룹 파일크기 수정날짜 파일명
  • ls -a : 숨김 파일(.으로 시작하는 파일)까지 모두 출력한다
  • ls -al : 숨김 파일 + 상세 정보 모두 보기

clear

터미널 화면의 출력 내용을 모두 지우고 깨끗하게 만든다.
(단축키: Ctrl + L)


cd 디렉터리명

디렉터리를 이동할 때 사용하는 명령어.

형식: cd [경로]

주요 사용법:

  • cd /절대경로 : 루트(/) 기준으로 이동하는 절대 경로 방식
  • cd .. : 상위 디렉터리로 이동
  • cd ~ : 현재 로그인한 사용자의 홈 디렉터리로 이동
  • cd - : 직전에 있었던 디렉터리로 이동

mkdir 디렉터리명

디렉터리 생성

옵션:

  • mkdir -p : 하위 디렉터리까지 생성

rmdir 디렉터리명

디렉터리 삭제 (빈 디렉터리만 삭제)


rm 파일명

파일 삭제

옵션:

  • rm -r : 디렉터리 삭제
  • rm -rf : 빈 디렉터리가 아니여도 강제 삭제

touch 파일명

파일이 없으면 생성, 있으면 수정시간 변경


echo "문자열"

문자열 출력

주요 사용법:

  • echo $변수 : 변수 출력
  • echo "출력내용" > file.txt : 출력 결과를 파일로 저장
  • echo "출력내용" >> file.txt : 출력 결과를 기존 파일에 저장

cat 파일명

파일 내용 출력

주요 사용법:

  • cat file1.txt file2.txt > merged.txt : 파일 2개를 출력하고, 출력 결과를 파일로 저장 (= 파일 2개 합치기)

less 파일명

긴 파일 페이지 단위로 보기
+) 나올 때는 q

주요 사용법:

  • /검색 내용 : less 후 하면 파일 내 검색. (nN으로 이전, 다음 검색 결과로 이동 가능)

head 파일명

파일의 처음 10줄 출력

옵션:

  • head -n : n개 줄 출력

tail 파일명

파일의 마지막 10줄 출력

옵션:

  • tail -n : n개 줄 출력

cp 원본파일 복제파일

파일 복사

옵션:

  • cp -r : 디렉터리 복사
  • cp -i : 덮어쓰기 방지

mv 이동대상 이동위치

파일, 디렉터리 이동 및 이름 변경
(같은 위치에 파일 명만 다르면 이름 변경 됨)

옵션:

  • mv -i : 덮어쓰기 방지

find

파일, 디렉터리 검색

옵션:

  • find [경로] -name "파일명" : 특정 이름의 파일을 검색.
  • find [경로] -name "*.확장자" : 특정 확장자를 가진 파일을 검색.
  • find [경로] -size +숫자c : 특정 크기 이상의 파일을 검색.
  • find [경로] -mtime -숫자 : 최근 숫자일 이내에 수정된 파일을 검색.

grep "문자열" 파일명

파일 내 특정 문자열 검색

옵션:

  • grep -n : 검색 결과에 줄 번호 표시
  • grep -i : 대소문자 구분 없이 검색
  • grep -v : 특정 문자열이 포함되지 않은 줄 출력

ps

현재 실행 중인 프로세스 확인

옵션:

  • ps -e : 모든 실행 중인 프로세스 확인
  • ps -aux : 실행 중인 프로세스 상세 출력
  • ps aux | grep "프로세스명" : 특정 프로세스 검색

kill PID값

프로세스 종료

옵션:

  • kill -9 : 강제 종료
  • pkill 프로세스명 : 특정 이름 가진 프로세스 전부 종료

history

이전에 실행한 명령어 목록 확인

옵션:

  • history | grep "명령어" : 특정 명령어 검색
  • !번호 : 특정 번호에 해당하는 명령어 다시 실행
  • !! : 가장 최근에 실행한 명령어 다시 실행.
  • !명령어 : 가장 최근에 실행한 특정 명령어 다시 실행.

chmod 권한 파일명

파일 및 디렉토리 권한 변경
+) 권한 : 유저권한/그룹권한/이외권한 순서.
읽기 : 4
쓰기 : 2
실행 : 1
그리고 권한이 있는 걸 다 더해서 씀

ex)
760은
유저는 읽기/쓰기/실행 가능
그룹은 읽기/쓰기 가능
이외는 권한 없음

아니면 그냥 chmod 대상연산자권한 파일명 같이 써도 된다.
대상 : u(user), g(group), a(all) (이거 설정 안하면 모두에게 추가 됨)
연산자 : +(권한추가), -(권한제거), =(해당 권한 설정후 나머지는 제거)
권한 : r(읽기), w(쓰기), x(실행)

ex) chmod u+w file.txt
유저에게 쓰기 권한 추가


chown 사용자 파일명

파일 및 디렉토리 소유권 변경
+)chown 사용자:그룹 파일명 으로 파일의 소유자와 그룹도 변경 가능.

옵션:

  • chown -R 사용자:그룹 디렉토리명 : 디렉토리 및 내부 파일들도 소유권을 변경.

df -h

전체 디스크 용량 확인
+)du -h 하면 특정 디렉토리 용량 확인


scp 파일명 원격서버:경로

원격서버로 SSH를 이용한 파일 전송

옵션:

  • scp -r 디렉토리 user@서버:/경로/ : 원격 서버로 디렉토리 전송.
  • scp user@서버:/경로/파일명 로컬경로/ : 원격 서버에서 파일 다운로드.
  • scp -r user@서버:/경로/ 로컬경로/ : 원격 서버에서 디렉토리 다운로드.

wget Url

인터넷에서 파일을 다운로드

옵션:

  • wget -O 저장할파일명 URL : 다운로드할 파일 이름을 변경.
  • wget -b URL : 백그라운드에서 다운로드 실행.
  • wget -i 파일명 : 파일에 저장된 여러 개의 URL을 한 번에 다운로드.

curl Url

특정 웹 페이지의 데이터를 가져오기

옵션:

  • curl -o 파일명 URL : 데이터를 파일로 저장.
  • curl -I URL : HTTP 응답 헤더만 출력.
  • curl -H "헤더" URL : 특정 요청 헤더를 추가하여 API 요청.
  • curl -X POST -H "Content-Type: application/json" -d '데이터' URL : JSON 데이터를 POST 요청으로 전송.
  • curl -s -o /dev/null -w "%{http_code}\n" URL : 응답 상태 코드만 출력.

명령어 &

명령어를 백그라운드에서 실행.


jobs

실행중인 백그라운드 작업목록 확인


bg %번호

중지된 작업을 백그라운드에서 다시 실행.


fg %번호

백그라운드 작업을 포그라운드로 전환.


nohup 명령어 &

터미널 종료 후에도 프로세스 실행 유지.

옵션:

  • nohup 명령어 > output.log 2>&1 & : 출력을 특정 파일에 저장하며 실행.

profile
내는 반드시 엄청난 개발자가 되고 말것어

0개의 댓글