[Linux] 쉘 명령어

심재혁·2023년 11월 15일

[Linux] 리눅스

목록 보기
2/3
post-thumbnail

"해당 내용들은 데미안계열의 리눅스OS의 쉘 명령어임을 미리 말씀드립니다!"


1. 디렉터리 관련

  • pwd : 사용자가 현재 위치해 있는 폴더 경로 출력
  • mkdir : 새로운 디렉토리를 생성
  • ls : 현재 위치에서 파일, 폴더 목록 출력
    ls -l : 현재 위치에서 파일, 폴더 목록을 자세히 출력 (권한, 수정날짜, 소유자, 소유그룹 등등
    ls -al : 숨김파일도 출력
  • cd [파일명] : 디렉토리로 이동 명령어
    cd /root/abc/cdb : 절대경로로 이동 (파일명을 정확하게 기입)
    cd / : root 경로로 이동
    cd home/[사용자명]/[파일명] : 다시 기존의 폴더로 이동
    cd ../ : 상위 폴더로 이동
    cd ./ : 현재경로를 의미
    cd -: 방금 이전까지 있었던 폴더로 이동

  • clear : 입력중인 명령창 깨끗하게 정리

자동완성과 히스토리

  • tap키를 눌러 자동완성
  • history명령어로 이전 명령어 조회
  • 도스키 사용(상하 화살표 키)

2. 파일 관련

rm 명령어

파일이나 디렉토리 삭제

rm [파일명]: 파일 삭제명령어. (remove 약자)

ex) rm first_dir

rm -r [파일명]: 파일과 디렉토리 삭제

ex) rm -r first_dir

rm -rf [파일명]: 파일과 디렉토리를 묻지 않고 삭제

ex) rm -rf first_dir


cp 명령어

파일이나 디렉토리를 복사

  • cp (복사대상) (복사된파일명)/(복사파일이름)

    ex)cp test_dir first_dir/second_dir

  • cp -r [복사대상][복사된파일명]/[복사파일이름]

    ex) cp -r test_dir first_dir/second_dir


mv 명령어

파일이나 디렉토리를 이동, 잘라내기와 같은 기능

  • mv [이동할 파일][이동 될 위치] (-r 옵션 필요 X)

    ex) mv test.txt first_dir

  • mv는 파일명을 변경하는데도 많이 사용된다.

    ex) mv test.txt new_text.txt


touch 명령어

용량 0인 파일을 생성, 이미 존재할 경우 수정시간을 변경

  • touch [파일명]

    ex) touch test.txt


cat 명령어

텍스트로 작성된 파일을 화면의 출력

  • cat [파일명]

    ex) cat test.txt


head, tail 명령어

  • 텍스트로 작성된 파일의 앞 10행, 마지막 10행 출력
  • n 숫자 옵션을 주어 원하는 행숫자별로 출력 가능

    ex) tail -n 1 /etc/passwd
    ex) head etc/passwd


리다이렉션( >, >>, |, <등)의 활용

echo : 터미널 화면에 출력하는 명령어

echo와 > : 표준 출력의 결과를 덮어쓰기로 파일로 저장하는 기능

echo와 >> : 표준 출력의 결과를 파일에 추가모드로 저장하는 기능

sort와 < : 파일의 내용을 전달하여 정렬 후 출력

| : 왼쪽 실행문의 결과값을 오른쪽 실행문의 입력값으로 전달

  • echo "[문장]" : 터미널 창에 문자열 출력

    ex) echo "hello world!"

  • echo "[문장]" > [파일명] : echo를 통해 파일에 write하는 방법

    ex) echo "hello world!" > first.txt


grep 명령어

파일 내에서 특정 패턴이나 문자열을 검색

기본 사용법

  • grep [옵션][패턴][파일명/디렉토리]
    • r옵션: 디렉토리 내 모든 파일에서 검색
    • i옵션: 대소문자 구분없이 검색
    • n옵션: 라인수 출력

ex) grep -rni "hello" mydir
hello 문자열을 라인 수와 함께 mydir폴더에서 대소문자 구분없이 검색


find 명령어

파일이나 디렉토리를 검색하여 위치 출력

  • 기본사용법

    • find [경로][옵션] [행동]
    • -name옵션 : 파일명으로 검색
    • -type: 타입으로 검색 (f는 파일, d 디렉토리 등 파일타입으로 검색)
    • -exec, \, {}
      • exec : find로 찾은 결과에 대해 실행명령.
      • \ : exec의 종료지점을 의미
      • {} : find로 찾은 대상이 담기는 공간을 의미
  • 사용예시

    find . -type f -name "*.txt"
    → 현재폴더에서 파일타입 중에 .txt로 끝나는 파일명 검색

  • 활용예시

    find . -name ".txt" | xargs grep -n “hello”
    → |(파이프라인)을 통해 그 다음 명령어로 전달
    → xargs는 입력받은 파일을 한줄씩 읽는것을 의미

    find . -name ".txt" -exec echo {} \;
    → find로 찾은 파일에 대해 echo명령어 실행
    → find . -name "*.txt" -exec cp {} ./testFolder/ \;

    ex) find . -name "txt" | xargs grep -rni "hello" 를 -exec형으로 변환
    -> find . -name "
    txt" -exec grep -rni "hello" {} \;


3. 사용자와 그룹

  • 리눅스에서 super권한이 있는 root계정과 그외 계정으로 사용자는 구성

  • sudo 키워드는 현재 계정에서 root권한을 이용하여 명령어를 실행하는 프로그램

  • (현재 사용자의 비밀번호를 입력)

  • etc/sudoers 파일에 sudo를 쓸수 있는 사용자와 명령어가 따로 정의되어 있어 아무사용자가 아무명령어를 사용하는 것은 불가

  • 신규 사용자 생성 및 비밀번호 입력

    useradd newuser
    passwd newuser

  • 사용자 교체후 파일권한 관련 테스트

    • su - newuser 엔터 후 전환하고자 하는 계정의 비밀번호 입력
    • 원래 사용자로 돌아오려면 exit
    • root계정으로 교체하려면 su -
    • sudo 키워드는 현재 계정에서 root 권한을 이용하여 명령어를 실행하는 프로그램(현재 사용자의 비밀번호를 입력)
      • /etc/sudoers 파일에 sudo를 쓸수 있는 사용자와 명령어가 따로 정의돼 있어서 아무사용자가 아무명령어를 사용하는 것은 불가
  • su - : root 계정으로 전환 -> root계정의 비밀번호

  • sudo : root계정의 권한을 빌려오는 것 -> 현재계정의 비밀번호

  • 현재계정 목록 조회

    cat /etc/passwd

  • 계정삭제

    sudo userdel newuser1
    sudo userdel -r newuser1


파일권한

chmod xxx test.txt

test.txt파일에 대하여 소유자:소유그룹:그외(other)에 대해 권한을 부여

  • 숫자 표기법

    • 권한은 rwx(421)권한으로 구성(Read, Write, Execute)
    • 그러므로 chmod 777 test.txt 형식으로 변경
    • test.txt 파일의 소유자, 그룹,other에게 rwxrwxrwx권한을 부여한다는 의미
  • 기호적 표기법

    • 권한을 변경할 때, 숫자 대신 기호를 사용하는 방법
    • chmod u+x test.txt: 소유자에게 실행권한 추가
    • chmod g-w test.txt: 그룹의 쓰기 권한 제거
    • chmod o=r test.txt: 다른 사용자의 권한을 읽기만 가능하게 설정
  • 파일 소유자와 그룹
    chown 소유자: 소유그룹 파일명
    특정파일의 소유자와 그룹을 새롭게 부여하는 것


3. 그외

프로세스 관련

  • ps: 프로세스 목록조회
  • -e: 모든 프로세스
  • -f: "Full format표시
  • PID(프로세스 ID), PPID(부모 프로세스 ID)
  • kill -9[PID]: 프로세스 종료

    ps -e | grep -i "nginx" => 특정한 프로세스를 검색해 찾는 방법


패키지 관련 (yum, apt-get)

  • yum은 레드헷 계열, apt-get는 데비안 계열의 패키지 관리 도구
  • ex)sudo apt-get install openjdk-11-jdk

네트워크 관련

  • ifconfig: IP정보 등 네트워크 설정정보 출력

  • ping [hostname/IP]: 네트워크 연결상태확인

  • nc -zv 또는 telnet: 특정 port까지 열려있는지 확인
    nc는 netcat의 약자
    내가 외부로 연결된 것을 확인할 때

    ex) nc -zv naver.com 443

  • netstat:현재 서버에 연결된 네트워크 정보 출력
    외부에서 나한테 연결된게 무엇인지 확인할 때

  • ssh: 원격 호스트와의 터미널 세션을 제공

    ex)ssh [username]@hostname/IP

  • scp: 파일 전송

    ex)scp [source][destination]


0개의 댓글