리눅스 쉘 사용법

April·2022년 11월 1일
0

🌱server

목록 보기
7/18

파일 및 권한 관리

리눅스와 파일

  • 모든 것을 파일이라는 철학을 따름
    • 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있음
    • 마우스 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어 짐
  • 파일 네임 스페이스
    • 전역 네임 스페이스 사용
      • /media/files/april.png
        • /: root를 의미. root부터 시작

쉘(shell)

  • 사용자와 컴퓨터 하드웨어 또는 OS간 인터페이스
    • 사용자의 명령을 해석해서, 커널에 명령을 요청해주는 역할
    • 관련된 시스템콜을 사용해서 프로그래밍이 작성되어 있다

기본 명령어

접속한 ID 확인

// 로그인 한 사용자의 ID 찾기
whoami

sudo 명령어

  • 슈퍼 관리자 root가 있으나 root에서 작업하진 않음
  • root 계정으로 로그인 하지 않은 상태에서 root 권한이 필요한 경우 sudo 명령어 사용
// 시스템 전체, 리눅스 패키지의 프로그램을 업데이트 하는 명령어
// ubuntu 패키지 인덱스 정보 업데이트(배포판 버전에 따른 패키지 업데이트 버전 정보 등)
sudo apt-get update

// 참고: 설치된 ubuntu 패키지 업그레이드(함부로 하지 말 것!)
// sudo apt-get upgrade

pwd 현재 디렉토리 위치

 pwd
 
 // 상위 디렉토리로 이동
 .. cd

ls 파일 목록 출력

 ls
 
 // 숨김 파일까지 출력
 ls -al

chmod 파일 권한 변경

 // chmod 권한 파일
 chmod 400 keyfile.pem
 
 // 자주 사용하는 명령어
 // 디렉토리명 하위 모든 권한 주기
 chmod -R 777 디렉토리명


cat 파일 보기

 // mysql.cnf 파일 내용이 출력 됨
 cat mysql.cnf

rm 파일 및 폴더 삭제

❗️ 리눅스는 휴지통이 없으니 주의!

  • r옵션: 하위 디렉토리를 포함한 모든 파일 삭제
  • f옵션: 강제로 파일이나 디렉토리를 삭제
rm mysql.cnf

rm -rf mysql.cnf




리다이렉션과 파이프

standard system (표준 입출력)

command로 실행되는 프로세스, 3가지 스트림

💡 모든 스트림은 일반적인 plain text로 console에 출력하도록 되어있음

  • 표준 입력 스트림(standard input stream) - stdin
  • 표준 출력 스트림(standard output stream) - stdout
  • 오류 출력 스트림(standard input stream) - stderr

리다이렉션(Redirection)

💡 표준 스트림의 흐름을 바꿔줄 수 있다

연산자설명
>명령어 출력을 화면에 보이기보다는 지정된 파일이나 장치로 보냄. 파일이 존재하지 않는다면 새로운 파일을 만들고 이미 같은 이름의 파일이 존재한다면 덮어 쓰임.
ex. dir > april.txt
디렉토리 경로를 확인한 결과 april.txt 파일에 저장함.
<키보드보다는 지정된 파일에서 명령어를 위한 입력을 가져옴.
ex. sort < april.txt
april.txt 파일의 내용을 정렬시킴.
>>파일이 이미 존재하는 파일일 때 덮어쓰기보다는 지정된 파일에 명령어 결과를 추가함.파일이 존재하지 않으면 지정된 이름으로 파일을 생성시킴.
>&어느 한 명령어의 출력을 디른 명령어의 입력으로 보냄.
<&어느 한 명령어의 입력을 읽고 다른 명령어의 출력으로 보냄.

예시)

// ls로 출력되는 표준 출력 스트림의 방향을 file.txt로 바꿔줌
// ls로 출력되는 결과가 file.txt에 저장됨
// > 명령어는 덮어쓰기 됨
ls > file.txt

// >> 명령어는 기존 파일에 추가
// file.txt의 기존 내용 끝에 ls 결과를 추가 함
ls >> file.txt

파이프(Pipe)

💡 두 프로세스 사이에서, 한 프로세스의 출력 스트림을 또 다른 프로세스의 입력 스트림으로 사용할 때 사용


예시)

// ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림에 들어감
// grep file.txt는 grep 명령의 입력 스트림을 검색해서 file.txt가 들어 있는 입력 내용만 출력
// 따라서, ls 명령으로 해당 디렉토리/파일 중에 file.txt 파일이 있는지를 출력 함
ls | grep file.txt

// 자주 사용하는 명령어
// 운영되는 프로그램 중에 bash가 있는지를 출력 함
ps aux | grep bash




프로세스 관리

프로세스 vs 바이너리

  • 코드 이미지 또는 바이너리: exe 실행 파일
    • exe 실행 파일은 0과 1로 이루어져 있기 때문에 바이너리로 불림
  • 실행 중인 프로그램: 프로세스
    • 가상 메모리 및 물리 메모리 정보
    • 시스템 리소스 관련 정보
    • 스케줄링 단위

ps 프로세스 상태 확인

ps aux

// 실행중인 프로세스 중에 bash만 출력 함
// 자기 자신도 보여지기 때문에 두 개가 보여짐
ps aux | grep bash


kill 프로세스 중지 시키기

  • pid를 찾아서 명령어 실행
    • 1343, 13266
  • -9: 강제 종료 옵션
kill -9 pid

하드링크와 소프트링크

하드링크와 소프트링크


cp 파일 복사

  • 1MB 사이즈의 A파일을 B파일로 복사
  • cp 명령어로 A파일을 B파일로 복사 후 A파일을 수정하면 B파일은 변경되지 않음
    • 이게 소프트링크..
// A와 B는 각각 물리적으로 10MB 파일로 저장
 cp A B
 
 // 자주 사용하는 명령어
 // 폴더명 하위의 파일을 모두 복사
 cp -rf * 폴더명

ln 명령어

  • ln 명령어로 A파일을 B파일로 복사 후 A파일을 수정하면 B파일도 변경됨
    • 이게 하드링크..
  • A와 B는 독립적인 관계라 A를 삭제해도 B는 삭제되지 않음. 다만 A를 수정하면 B도 변경된다는 점에서 cp 명령어와 차이점이 있다
ln A B

소프트(심볼릭) 링크 ln -s

  • windowOS의 바로가기와 기능 동일
  • ls -al 명령어 입력하면 소프트링크 확인 가능
  • rm A로 A를 삭제하면 B는 접근 불가
 ln -s A B


우분투 패키지 관리


apt-get 패키지 인덱스 정보 업데이트

  • ubuntu 패키지 인덱스 정보 업데이트
    (배포판 버전에 따른 패키지 업데이트 버전 정보 등)
sudo apt-get update

패키지 설치

sudo apt-get install 패키지명

패키지 삭제(설정파일 제외)

sudo apt-get remove 패키지명

패키지 삭제(설정파일 포함)

sudo apt-get --purge remove 패키지명


profile
🚀 내가 보려고 쓰는 기술블로그

0개의 댓글