본문 바로가기
IT/OS

[Linux] 리눅스 기초 - 디렉토리 및 명령어

by 신림쥐 2024. 4. 16.
728x90
반응형

 

     


     

    리눅스 디렉토리 구조

     

    • /          - 최상위 디렉토리
    •  /bin    - 중요한 명령어 가 있는 디렉토리 , 부팅에 필요한 명령어가 있으며 부팅후에 일반 시스템 계정 사용자들도 사용할 수 있는 명령어가 있는 위치
    •  /boot   - 커널 시스템 부팅에 관련된 파일을 저장하고 있다.
    •  /dev    - 시스템 디바이스 파일을 저장, 가상디렉토리, 리눅스 시스템은 각종 디바이스 장치를 하나의 파일로 취급한다.
    •  /etc     - 시스템 전체 환경설정 파일을 저장
    •  /home - 사용자의 홈디렉토리와 FTP,WWW 등과 같은 서비스 디렉토리들이 저장, ID와 동일한 이름으로 디렉토리를 가진다. 시스템에 상용되진 않지만 단지 리모트상에서 시스템으로 접속하는 사용자들을 위한 공간
    •  /mnt    - 플로피 , CD-ROM등 마운트를 위한 디렉토리, 임시디렉토리로 자동 인식하지 않는다. 보통 여러개의 하위 디렉토리로 나누어 사용되고 , 평소에는 각 디렉토리들은 비어있다.
    •  /lib      - 프로그램들에 필요한 각종 라이브러리 저장
    •  /proc   - 실행중인 프로세서나 현재 시스템 정보를 파일형태로 보여주는 가상디렉토리, 즉 디렉토리에 존재하는 파일들은 실제 HDD에 저장되지 않고 커널에 의해 메모리에 적재된다.
    •  /root   - 시스템 관리자의 홈 디렉토리
    •  /sbin   - 시스템 관리자용 명령어를 저장
    •  /tmp   - 일시적인 저장을 위한 디렉토리 (정기적으로 삭제 된다.)
    •  /usr    - 각종 어플리케이션 등이 설치되어 있는 디렉토리
    •  /var    - 시스템 운영중에 생성되었따가 삭제되는 데이터를 저장하는 디렉토리

     

    기본 파일 및 디렉토리 조작

     

    cd

    • 디렉토리 이동

    ls

    • 현재 자신이 속해있는 폴더 내의 파일, 폴더 표시
    // 현재 경로에 하위 파일 조회
    $ ls
    
    // 특정 경로에 하위 파일 조회
    $ ls /mnt/d/src/images/ST/776

    pwd

    • 현재 자신이 위치한 디렉토리

    mkdir

    • 현재 디렉토리에 폴더 생성
    mkdir 766

    rmdir

    • 디렉토리 삭제

    touch

    • 파일 생성 (크기 0)

    cp

    • 파일 복사 (디렉토리 내부까지 복사 시, cp -R)
    cp src/images/ST/776/* Users/kim/Desktop/files
    // cp [1경로] [2경로] 
    // 1경로에 있는 파일을 2경로에 복사

    mv

    • 파일 이동

    rm

    • 파일 삭제 (디렉토리 삭제 시에는 보통 rm -R을 많이 사용)

    cat

    • 파일의 내용을 화면에 출력
    $ cat /etc/issue

    more

    • 화면 단위로 보기 쉽게 내용 출력

    less

    • more보다 조금 더 보기 편함

    find

    • 특정한 파일을 찾는 명령어

    grep

    • 특정 패턴으로 파일을 찾는 명령어

     

     

    사용자 및 그룹 관리

     

    useradd

    • 새로운 사용자 계정 생성

    passwd

    • 사용자 계정의 비밀번호 설정

    userdel

    • 사용자 계정 삭제

    usermod

    • 사용자 계정 수정

    groupadd

    • 그룹 생성

    groupdel

    • 그룹 삭제

    groups

    • 그룹 확인

    newgrp

    • 자신이 속한 그룹 변경

     

     

    시스템 상태 확인

     

    ps

    • 현재 실행되고 있는 프로세스 목록 출력

    top

    • 리눅스 시스템의 운용 상황을 실시간으로 모니터링 가능

    free

    • 시스템 메모리의 정보 출력

    df

    • 파일 시스템의 디스크 공간 사용 정보를 표시

    du

    • 디렉토리의 디스크 사용량을 표시

     

    네트워크 상태 확인

     

    ping

    • 네트워크 상태 점검 및 도메인 IP 확인

    ifconfig

    • 리눅스 IP 확인 및 설정

    netstat

    • 네트워크의 상태

    traceroute

    • 알고 싶은 목적지까지 경로를 찾아줌

    route

    • 라우팅 테이블 구성 상태

     

     

    압축 및 권한 관리

     

    tar, gzip 등

    • 압축 파일 묶거나 품

    chmod

    • 파일 또는 디렉토리 권한 수정

    chown

    • 파일 또는 디렉토리 소유자, 소유 그룹 수정

    chgrp

    • 파일 또는 디렉토리 소유 그룹 수정

    umask

    • 파일 생성 시의 권한 값을 변경

     

    터미널 관리

    clear

     

     

     

    • 현재 커맨드 화면을 깨끗하게 지움
    • 기본 단축키: Ctrl + L
    $ clear

     

    reset

    • 터미널 자체를 새로 초기화
    • 방향키를 통해 이전에 입력한 명령어는 확인이 가능, putty로 접속한 경우 화면을 지우지 않는다.
    $ reset

     

     

    alias

    • 명령어에 별칭을 지정

    unalias

    • 명령어 별칭을 제거

    echo

    • 문자열을 출력 (환경 변수 확인 및 설정에 유용)

    stty

    • 터미널 라인 설정을 변경

    tput

    • 터미널 특성을 설정 (예: 텍스트 색상 변경 등)

     

     

    실행 파일 도구

    explorer.exe

    • 디렉토리가 찾기 어려운 경우 윈도우 파일탐색기 열기
    • 예를 들어 추가한 폴더(temp)의 경로를 윈도우에서 찾고 싶은 경우 명령어를 통해 윈도우탐색기를 열수 있다.
    $ explorer.exe .
      •  

     

     

     

    원격 서버와의 상호작용을 자동화 도구

    sshpass

    • SSH(Secure Shell) 연결에서 비밀번호를 자동으로 입력하기 위해 사용하는 유틸리티
      • 비밀번호 노출: sshpass는 비밀번호를 명령줄에 평문으로 입력하므로 보안에 취약할 수 있습니다. 특히, 스크립트나 로그 파일에 비밀번호가 저장될 수 있습니다.
      • 대체 방법: SSH 키 기반 인증을 사용하는 것이 훨씬 안전합니다. 키 기반 인증을 설정하면 비밀번호를 사용하지 않고도 SSH 접속이 가능합니다.
    • 자동화 스크립트나 배치 작업 에서 SSH 연결을 자동화할 때, 비밀번호를 입력하는 과정에 사용한다.
    • 보안적인 측면에서 SSH 키 인증을 사용하는 것이 더 안전합니다. 가능하다면 SSH 키 기반 인증을 고려하는 것이 좋다.
    sshpass -p 'password' ssh user@hostname
    
    //  'password'는 SSH 로그인에 사용할 비밀번호, 
    // 'user'는 사용자 이름, hostname은 원격 서버의 주소
    // SSH 접속
    sshpass -p 'my_password' ssh user@192.168.1.100
    
    // 파일 전송
    sshpass -p 'my_password' scp /path/to/local/file user@192.168.1.100:/path/to/remote/directory
    
    // 명령 실행
    sshpass -p 'my_password' ssh user@192.168.1.100 'ls -l /path/to/directory'

     

     

    spawn

    • UNIX 및 UNIX-like 시스템에서 프로세스를 생성(스폰)하기 위해 사용되는 명령어나 함수
      • 프로세스 생성: 새로운 쉘이나 명령어 실행을 위한 프로세스를 생성합니다.
      • 자동화: 자동으로 명령어를 입력하고 결과를 처리하는 스크립트를 작성할 수 있습니다.
      • 상호작용: 대화형 프로그램과 상호작용하여 테스트 자동화나 반복적인 작업을 자동화할 수 있습니다.
    • 원격 서버에 접속하여 명령어를 실행하거나, 설치 스크립트를 자동으로 진행하는 등의 작업을 자동화 등 대화형 프로그램을 자동화해야 할 때 유용하다.
    import pexpect
    
    # SSH 접속 예시
    child = pexpect.spawn('ssh user@hostname')
    child.expect('Password:')
    child.sendline('password')
    
    # 명령어 실행 후 결과 확인
    child.expect('$')  # 프롬프트가 나올 때까지 기다림
    child.sendline('ls -l')
    child.expect('$')
    print(child.before.decode('utf-8'))
    
    # 세션 종료
    child.sendline('exit')
    child.close()

     

    728x90
    반응형