차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | |||
activity:public:reference:linux:basic-commands [2023/05/10 19:00:37] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1 | activity:public:reference:linux:basic-commands [2023/05/10 19:00:38] (현재) – ↷ 문서가 activity:public:2023:basic-commands에서 activity:public:reference:linux:basic-commands(으)로 이동되었습니다 noelbait02 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ======Linux 명령어 기초===== | ||
+ | {{youtube> | ||
+ | =====1. Linux 구조===== | ||
+ | ====1.1. 저장소 구조==== | ||
+ | 리눅스에서 파일을 저장하고 다루는 방식은 일반적인 컴퓨터 환경인 Windows에서와 크게 다르다.\\ | ||
+ | 다만 Windows에서는 불가능하거나 활용하기 어려운 많은 기능들을 더 쉽게 살려낼 수 있어\\ | ||
+ | 더욱 강력한 파일 활용이 가능하다. | ||
+ | |||
+ | ===1.1.1. Windows와 비교=== | ||
+ | 모든 파일들이 C 드라이브 아니면 D 드라이브 내에 저장되는 윈도우와 달리,\\ | ||
+ | 리눅스에는 C 드라이브, | ||
+ | 파일이 저장되는 장소부터 완전히 다르다.\\ | ||
+ | {{https:// | ||
+ | **모든** 파일은 ''/'' | ||
+ | 이 슬래쉬는 '' | ||
+ | \\ | ||
+ | 하지만 여기에 저장된 파일들이 사실 **모두 정상적인 파일은 아니다**.\\ | ||
+ | |||
+ | ===1.1.2. 파일 권한=== | ||
+ | 윈도우는 **파일**이라고 하면 워드 파일, 파워포인트 파일 등 진짜 데이터가 담긴 파일들 뿐이지만\\ | ||
+ | 리눅스에서는 정말 데이터가 담긴 파일이 아닌 것들도 파일로 취급한다.\\ | ||
+ | (이상 자세한 설명은 리눅스 시스템의 깊은 곳으로 들어가므로 생략한다)\\ | ||
+ | 또한 이렇게 모든 파일들이 '' | ||
+ | 한 컴퓨터에서 여러 사람이 동시에 사용할 수 있게 하려다 보니\\ | ||
+ | 파일 각각에 누가 만들었는지, | ||
+ | 이것이 **파일 권한**이다. | ||
+ | |||
+ | {{https:// | ||
+ | 위 사진은 파일 목록을 확인한 것이다.\\ | ||
+ | 목록 맨 앞줄 '' | ||
+ | ^ 알파벳 ^ 권한 ^ 값 ^ 기능 ^ | ||
+ | | r | Read(읽기) | 4 | 파일/ | ||
+ | | w | Write(쓰기) | 2 | 파일/ | ||
+ | | x | eXecute(실행) | 1 | 파일을 실행하거나 폴더 내 내용물을 확인함((폴더 " | ||
+ | 윈도우와 달리 리눅스는 파일마다 이렇게 권한 설정이 되어있고, | ||
+ | 내가 만든 파일이라도 권한이 누락되어있을 경우 나조차 사용할 수 없다.\\ | ||
+ | \\ | ||
+ | '' | ||
+ | ^ d ^ r ^ w ^ x ^ r ^ w ^ x ^ r ^ w ^ x ^ | ||
+ | | '' | ||
+ | | | Read | Write | eXecute | Read | Write | eXecute | Read | Write | eXecute | | ||
+ | | | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 | | ||
+ | | | 소유자 ||| 소유자 그룹 ||| 외부인 ||| | ||
+ | 하이픈('' | ||
+ | - 소유자는 읽고 수정하고 실행 가능('' | ||
+ | - 소유자 그룹에 속한 유저는 읽고 실행 가능('' | ||
+ | - 외부인은 읽고 실행 가능('' | ||
+ | 여기서 위 사진에서와 같이 파일을 '' | ||
+ | 이런 방식대로 하면 "이 파일은 실행할 수 있는거야" | ||
+ | 지정된 일부 유저 외 나머지는 접근을 제한하는 보안(보호) 조치를 겸하게 된다.\\ | ||
+ | \\ | ||
+ | 다음 경우에서 '' | ||
+ | '' | ||
+ | {{https:// | ||
+ | 이와 같이 '' | ||
+ | 만약 이 상황에서 사용하려 하는 파일이 '' | ||
+ | <sxh bash> | ||
+ | chmod 권한 (설정할 파일/ | ||
+ | chmod +x test2.sh # x권한을 추가(+)한다 | ||
+ | chmod 755 test2.sh | ||
+ | </ | ||
+ | 여기서 '' | ||
+ | 만약 r이나 w권한을 추가하고자 한다면 '' | ||
+ | '' | ||
+ | 예를들어, | ||
+ | '' | ||
+ | 이것을 소유자, | ||
+ | |||
+ | |||
+ | ====1.2. 프로그램(앱) 이용하기==== | ||
+ | **리눅스 배포판에 따라 차이가 있다.** 이 문서에서는 가장 널리 사용되는 Ubuntu 배포판을 기준으로 설명한다. | ||
+ | |||
+ | ===1.2.1. 패키지(APT) 설치=== | ||
+ | |||
+ | ==1.2.1.1. 패키지 업데이트== | ||
+ | |||
+ | ==1.2.1.2. 패키지 삭제== | ||
+ | |||
+ | ===1.2.2. 실행파일 직접 이용=== | ||
+ | |||
+ | ===1.2.3. 소스코드를 컴파일하여 이용(고급)=== | ||
+ | |||
+ | |||
+ | =====2. 화면 다루기===== | ||
+ | |||
+ | ====2.1. 화면 내용 지우기: clear==== | ||
+ | 화면을 오래 써서 지저분하고 정신없다면 | ||
+ | <sxh bash> | ||
+ | clear | ||
+ | </ | ||
+ | 를 눌러 청소할 수 있다. | ||
+ | |||
+ | ====2.2. 이전에 실행한 것 불러오기==== | ||
+ | 명령어를 입력하는 곳에서 상/하 방향키를 누르면 이전에 입력한 명령어 목록을 탐색할 수 있다.\\ | ||
+ | 위로 올라갈수록 옛날, 아래로 내려올수록 최근 사용한 명령어이고\\ | ||
+ | 맨 마지막은 현재 입력하고 있는 명령어, 즉 (아무것도 입력하지 않았던 상태라면) 빈칸이다.\\ | ||
+ | |||
+ | ====2.3. 관리자 권한으로 실행하기==== | ||
+ | |||
+ | |||
+ | =====3. 파일 다루기===== | ||
+ | |||
+ | ROS 프로그래밍 등 리눅스를 사용한 작업을 하다보면 모니터를 통한 그래픽 환경보다는 SSH 등을 통한 터미널 환경을 더 자주 접하게 된다.\\ | ||
+ | 리눅스는 라즈베리파이와 같은 초저사양 환경이나 머신러닝 학습 등 (극)고사양 장치의 성능을 극한으로 사용해야 할 때 주로 사용하는데, | ||
+ | 그래픽 환경은 장치의 리소스를 많이 잡아먹기도 하고, 모니터가 반드시 필요한 탓에 제약사항이 많아 터미널 환경을 쓰게 되는 것이다.\\ | ||
+ | 그래서 리눅스가 설치된 장치에서 마우스 없이 작업파일을 직접 처리해야 할 때가 자주 있다.\\ | ||
+ | 또한, 일일이 작업하기 어려울 정도로 대량의 반복되는 작업을 "쉘 스크립트" | ||
+ | 그래픽 환경이 제공되지 않는 프로그램을 사용해야 하는 경우에\\ | ||
+ | 파일을 조작하는 기초적인 명령어를 알고 있으면 큰 도움이 되므로 잘 알아두자.\\ | ||
+ | |||
+ | ====3.1. 파일 조회하기==== | ||
+ | |||
+ | ===3.1.1. 폴더 내에 목록 보기: ls=== | ||
+ | 현재 작업중인 위치에 있는 파일과 폴더 목록(list)을 표시한다. **L**i**s**t를 줄여 '' | ||
+ | 아무런 부가 옵션 없이 '' | ||
+ | <sxh bash> | ||
+ | ls -alh | ||
+ | </ | ||
+ | 이렇게 하이픈('' | ||
+ | ^ 옵션 ^ 기능 ^ | ||
+ | | a | 숨겨진 파일(파일명이 '' | ||
+ | | l | 자세한 목록(파일 크기, 만들어진 날짜, 권한 등) 보기 | | ||
+ | | h | 파일 크기를 몇 바이트가 아니라, 사람('' | ||
+ | | R | 현재 위치에 하위 폴더가 있다면, 그 폴더 안에있는 파일까지 모두 표시. | | ||
+ | ==3.1.1.1. 우분투 한정 단축 명령어== | ||
+ | 아래 명령어들은 각각 같다. | ||
+ | <sxh bash> | ||
+ | la # ls -a 와 동일한 명령 | ||
+ | </ | ||
+ | <sxh bash> | ||
+ | ll # ls -l 과 동일한 명령 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====3.2. 파일 생성/ | ||
+ | |||
+ | ===3.2.1. 파일 만들기: touch=== | ||
+ | <sxh bash> | ||
+ | touch 파일명 | ||
+ | </ | ||
+ | 현재 작업중인 위치에 크기가 0인, 아무 내용 없는 빈 **파일**을 만든다. | ||
+ | 이 때 | ||
+ | <sxh bash> | ||
+ | touch / | ||
+ | </ | ||
+ | 이렇게 전체 경로를 다 포함하면, | ||
+ | 이 때, 파일명 앞 ''/ | ||
+ | |||
+ | ===3.2.2. 폴더 만들기: mkdir=== | ||
+ | **M**a**k**e **Dir**ectory를 줄여 '' | ||
+ | <sxh bash> | ||
+ | mkdir 폴더명 | ||
+ | mkdir -p / | ||
+ | </ | ||
+ | 현재 작업중인 위치에 크기가 0인, 아무 내용 없는 빈 **파일**을 만든다. | ||
+ | 여기서 '' | ||
+ | '' | ||
+ | |||
+ | ===3.2.3. 복사하기: | ||
+ | **C**o**p**y를 줄여 '' | ||
+ | <sxh bash> | ||
+ | cp 원본파일 새파일 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===3.2.4. 이동/ | ||
+ | **M**o**v**e를 줄여 '' | ||
+ | <sxh bash> | ||
+ | mv 기존파일(폴더) 새파일(폴더) | ||
+ | </ | ||
+ | 파일(폴더)의 위치와 이름을 바꾼다. 사용법이 매우 다양해 실제 예를 통해 알아보자. | ||
+ | \\ | ||
+ | ==3.2.4.1. 이름바꾸기== | ||
+ | <sxh bash> | ||
+ | mv memo.txt note.txt | ||
+ | mv folder directory | ||
+ | </ | ||
+ | '' | ||
+ | '' | ||
+ | \\ | ||
+ | ==3.2.4.2. 위치 이동== | ||
+ | <sxh> | ||
+ | mv / | ||
+ | </ | ||
+ | ''/ | ||
+ | <sxh> | ||
+ | mv / | ||
+ | </ | ||
+ | 새파일(폴더) 이름을 적는 대신 어떤 폴더를 적으면 그 **폴더에 집어넣**게 된다(맨 마지막의 슬래쉬''/'' | ||
+ | \\ | ||
+ | ==3.2.4.3. 둘 다== | ||
+ | 위 두 경우를 동시에 사용하면, | ||
+ | <sxh> | ||
+ | mv / | ||
+ | </ | ||
+ | '' |