'리눅스 커맨드 목록'에 해당되는 글 1건

  1. 2021.06.11 Ubuntu setup (Linux setup)
취미/Programming | 2021. 6. 11. 23:20 | /29

서론

당신이 처음으로 Windows를 쓰던 날들을 기억하는가? 그저 어디를 어떻게 클릭해야 게임이 시작되는지만 알고 있다가 삭제된 파일을 휴지통에서 찾아오는 방법, Alt 키를 누르고 드래그 하면 바로가기가 생긴다는 사실 등을 배우게 되었을 것이다. 더 나아가서 Ctrl+Alt+Del 을 눌러 작업관리자를 불러와 먹통된 프로세스를 강제종료하거나 프록시 설정, 레지스트리 편집, 고정IP 설정 적용 등을 하나 둘 습득하게 된다. 물론 이러한 과정을 학원이나 정규 교육을 통해서 배우는 사람도 있겠지만, 굳이 누가 시키지 않아도 컴퓨터와 함께 살게 되는 요즘에는 인터넷을 뒤지다 새로운 사실을 알게되거나 컴퓨터를 고치다가 자연히 배우게 되는 사실들이 더 많을 것 같다고 생각한다.

 

Ubuntu를 본격적으로 사용하기 시작한 이후 자연히 알고 있던 다양한 OS의 기능들을 새로 배워야 한다는 것이 정말 신선했다. 당장에 현재 프로세스를 확인하고 싶어서 Ctrl+Alt+Del을 눌렀다가 날 로그아웃 시키려고 하질 않나, explorer를 열려고 Win+e 를 누르면 아무 일도 일어나지 않질 않나... 정말 답답하고 짜증나는 순간을 빈번히 '겪으며 언젠가는 이것도 익숙해 지겠거니' 하며 참고 억지로 썼는데 이제는 딱히 불편함을 느끼지 않고 편안히 Ubuntu를 사용하고 있다.

 

한가지 안타까운 것은 특정한 목적 중심(예를 들어 서버 관리)이 아닌 보편적인 사용을 위한 Ubuntu 관련 교재가 부족했으며, 무엇을 모르는지 어디를 어디까지 알아야 하는지를 모르기 때문에 많은 시행착오를 겪었다는 점이다. (210615추가: 그나마 '리눅스 마스터' 자격증 준비 책이 가장 광범위하고 자세히 나와있기는 하다.) 하지만 관련 책이 없는 것을 이해하는 게,  나도 가끔 부모님께 Windows 사용법을 설명할 때 당혹스러운 감정을 자주 느끼기 때문이다. 스스로에게는 너무나 일상적으로 쓰는 기능들이기에 설명 없이 넘어가버리거나 어디를 얼마만큼 깊게 설명해야하는지 고민을 할 때가 자주 생긴다. 하나의 OS는 끝까지 파고들어가면 수천 페이지 책 한권이 나올텐데 이것을 언제 다 설명하랴...

 

이 글은 Ubuntu 새끼 사용자가 시행착오를 통해 배워나가는 과정을 적는 글이다.

 

권한

  • 최상위 권한인 root와 그 이외의 권한이 있다.
  • 윈도우에서 관리자 권한으로 실행하라고 하면 그냥 실행하듯이 쓰는 Ubuntu 환경에서는 무언가 작업을 하다가 "Permission Denied"가 뜨면 sudo 를 앞에 붙이고 실행하면 비밀번호를 입력하고 관리자 권한으로 실행이 가능하다.
  • 단, 다수의 사용자가 쓰는 환경의 경우 할수 있는 작업이 제한될 수 있다.
  • /etc/passwd 파일에 들어가면 해당 시스템 내부의 모든 사용자를 볼 수 있는데 거의 40번째 줄까지는 시스템이 알아서 만들어주는 사용자일 것이고 가장 아래 자신의 이름이 있을 것이다.
  • 사실 이 파일은 이름 : 비밀번호 : 계정 id : 그룹 id : 설명 : 사용하는 shell 의 구조로 되어있다고 해서 '비밀번호!!!' 를 외치며 눈을 밝히고 들어갔으나 x 표시로 되어있다.
  • 실제 비밀번호는 암호화 되어 (아마 hash?) /etc/shadow 안에 보관된다.
  • 권한에는 읽기, 쓰기, 실행하기 3종류가 있으며, chmod 를 통해서 권한 변경이 가능하다.

파일 구조

  • 모든 (심지어 외장하드도) 파일은 최상위 directory인 root에서 파생된다. 그나마 윈도우에서 가장 유사한 개념은 '내 컴퓨터'일까. 약어로는 /로 표현한다.
  • 그리고 대부분의 작업파일이 존재하는 곳은 /home/사용자명 이다. 이 폴더 안에 바탕화면, 음악/사진/문서, 다운로드 등등의 폴더들이 위치한다. 약어로는 ~ 로 표현한다.
  • root 바로 하위에는 정말 다양한 폴더들이 존재하는데 굳이 하나하나 탐색하진 않았고 천천히 필요가 생길때마다 들어가는 것이 좋다.
    • bin : 각종 명령어 함수들이 들어가 있다.
    • dev : 기기에 연결된 저장장치, 입력장치 들이 다 이곳에 있다. 장치관리자?
    • mnt : 마운트 된 저장장치가 위치한다.
    • root : 루트 권한을 얻어야 들어갈 수 있는데 별게 없어보인다.
    • etc : 온갖 설정파일들이 위치한다. root 바로 하위 directory 중에서 가장 자주 들락거린 것 같다.
    • home : 위에서 설명.
    • media : 자동으로 마운트 된 저장장치가 위치한다.
  • 이 이외의 폴더들은 한번도 들어가본 적이 없어서 잘 모르겠다.

파일 탐색 방법

  • 윈도우의 explorer 처럼 기본으로 nautilus(Files) 라는 프로그램이 깔린다. 제법 편리해서 간간히 쓴다.
  • 무엇보다 리눅스는 외부 저장장치, 심지어는 내장 하드를 전부 root 밑에 mount 시켜야 읽기/쓰기가 가능한데 이게 초심자에게는 어렵다. 하지만 nautilus를 사용하면 좌측 bar에 뜨는 아이콘 클릭만으로 저장장치를 /media에 mount 시킬 수 있다.

좌측 Bar에 뜨는 USB 저장 장치

  • 하지만 리눅스의 목적에 맞게 결국 콘솔을 더 자주 사용하게 된다. 콘솔은 Ctrl+Alt+t로 열 수 있다.

콘솔 기본 커멘드

  • 기본으로는 bash라는 쉘이 돌아간다. 이 이외에 zsh, csh, tcsh 등 다양한 것들이 있고 다들 bash를 안 쓰고 다른 shell을 쓰는 것 같은데 이유는 아직 모르겠다. 더 좋겠지 뭐. 아직은 불편함을 못느껴서 그대로 사용중이다.
  • 도움말 보기 : man 모르는커맨드 를 입력하거나 모르는커맨드 -h 혹은 모르는커맨드 --help 를 입력하면 대체로 알려준다.
  • cd : change directory : 뒤에 경로를 입력해서 현재 위치를 바꾼다
  • ls : list files : 현재 위치에서의 파일들을 출력한다. 주로 -alF 옵션을 함께사용하며 대체로 ll 이라는 alias로 등록이 되어있다.
  • mv, rm, cp : move, remove, copy
  • | 표기 : 가끔 출력된 내용이 너무 많은 경우 콘솔 창 위로 쭉 올라가 버리는 경우가 있다. 이를 천천히 볼 수 있도록 할 때 출력결과를 다른 프로그램에 feed 해줄 수 있는데 이때 이 | 표기를 사용하며 pipe 라고 한다.
    • | more 혹은  | less : 출력결과를 보기 편하게 해준다.
    • | grep 검색어 : 출력결과에서 검색어가 있는 행만 보여준다.
    • 예) ll | grep *.txt : 현재 위치에서 파일리스트를 출력하고 이중 .txt 확장자를 가진 애들만 출력.
  • > 표기 : 출력된 내용을 뒤의 파일에 저장(overwrite) : ls > result.txt
  • >> 표기 : 출력된 내용을 뒤의 파일에 저장(append) : ls >> result.txt
  • < 표기 : 뒤의 파일의 내용을 불러와 커맨드 실행 : sort < filelist.txt
  • 프로세스
    • ps : 현재 프로세스를 확인
    • kill : 프로세스를 강제 종료. -9 옵션을 주면 무조건 종료된다고 함.
    • fg 숫자 : 숫자로 표시된 프로세스를 foreground로.
    • Ctrl+z : 프로세스 일시중지
    • bg : 프로세스를 backgroud로.
    • 커맨드 마지막에  &를 붙이기 : 해당 커맨드를 background로 실행
    • jobs : background에서 돌아가는 프로세스를 확인

자주는 안썼지만 써본 콘솔 커멘드

  • lsblk : list block devices : 연결된 저장장치 확인이 가능
  • df : disk space usage report
  • mount : lsblk를 사용해서 연결된 저장장치를 확인하고 (예: /sdb1) 이를 원하는 경로에 mount 가능
    • sudo mkdir /media/사용자명/mydrive
    • sudo mount /dev/sdb1 /media/사용자명/mydrive
  • lsof : list open files : 출력량이 상당히 많음....
  • lsmod : list modules
    • rmmod : remove module

/etc 내부의 파일/폴더

  • apt : 패키지 관리 프로그램
  • cron : 특정 시간에 특정 작업을 할 수 있도록 해주는 프로그램이라고 함. 예약된 작업?
  • ca-certificate : 각종 인증서(?)
  • fstab : 자동 mounting 프로그램
  • fonts
  • wpa_supplicant : wifi 정보 관련

 

Posted by Knowblesse