Linux 개념

안형준·2022년 5월 2일
0

Linux

목록 보기
1/1
post-thumbnail
명령줄 인터페이스(CLI) : 터미널과 같이 명령어로 컴퓨터를 제어하는 방식
그래픽 사용자 인터페이스(GUI) : 컴퓨터를 사용할 때 적용되는 컴퓨터 제어 방식

GUI는 사용자가 쉽게 컴퓨터를 제어할 수 있다는 장점이 있지만, 컴퓨터 자원을 많이 사용할 수 밖에 없으며, CLI에 비해 느리다. 반면, CLI는 화면에 나타날 내용에 그래픽 작업을 거치지 않아도 되기 때문에 컴퓨터의 자원을 적게 사용하며, 더 빠르게 동작한다.

컴퓨터에는 사용자와 관리자가 있다. 일반적으로는 사용자로 이용하게 되는데 이러한 이유는 사용자가 관리자 모드로 컴퓨터를 사용하게 되면 각종 해킹에 대한 위험에 대비하기 어려울 뿐만 아니라 조금만 시스템을 잘못 건드려도 큰 문제가 발생할 수 있어서이다.

명령어로 컴퓨터를 제어하는 방식을 명령줄 인터페이스(CLI)라고 한다. 반면, 컴퓨터를 사용할 때 적용되는 컴퓨터 제어 방식은 그래픽 사용자 인터페이스(GUI)라고 한다.

생성하려는 폴더 또는 파일의 이름에 공백이나 특수문자가 있으면, 백슬래시를 이용해 적용한다.

pwd: 현재 위치를 확인하는 명령어
mkdir: 새로운 폴더를 생성하는 명령어
ls: 폴더나 파일의 목록을 출력하는 명령어
ls a : 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력
ls - : 폴더나 파일의 포맷을 전부 표현하라는 의미이다. 하나의 파일 또는 하나의 폴더는 한 줄에 출력되는데, 출력되는 문구 중 d는 출력된 경우는 디렉토리를, -로 출력된 경우는 파일을 나타낸다.
nautilus (Ubuntu), open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어
cd: 폴더에 진입하는 명령어
cd .. : 상위 디렉토리로 돌아가기
cd - : 이전에 있던 디렉토리로 돌아가기
touch: 새로운 파일을 생성하는 명령어
cat: 파일의 내용을 터미널에 출력하는 명령어
rm: 폴더나 파일을 삭제하는 명령어
rm -rf : 폴더 삭제(비어있는 폴더라면 rmdir bye 형태로도 삭제 가능)
mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어
cp: 폴더나 파일을 복사하는 명령어
sudo: 관리자 권한을 획득하는 명령어

절대 경로 : 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트폴더(/)라고 한다. 특정 폴더나 파일이 루트 폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지 나타낸다.

상대 경로 : 특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타낸다. 현재 위치한 폴더는 점(.)으로 표현하고, 상위 폴더는 두 개의 점(..)으로 표현한다. 

점(.)은 현재 폴더를, 슬래시(/)는 폴더 내부를 뜻한다. ./는 "현재 폴더 아래의"라는 뜻이다.

우분투에서 우클릭하면 붙여넣기 됨

- 패키지 목록 갱신: apt update(관리자 권한 필요)
패키지를 다운로드할 수 있는 여러 저장소의 최신 정보를 업데이트 한다. 새로운 저장소를 추가하거나, 패키지를 설치하기 전, 최신 정보를 갱신한다.
설치된 프로그램이 새로운 버전으로 변경되지 않는다.
- 업그레이드 가능한 패키지 목록을 출력: apt list -—upgradable
- 전체 패키지 업그레이드(버전 업): apt upgrade (관리자 권한 필요)
- 특정 패키지만 업그레이드(버전 업): apt --only-upgrade install 패키지 이름 (관리자 권한 필요)
- 패키지 설치: apt install 패키지 이름 (관리자 권한 필요)
- 설치된 패키지 보기: apt list --installed
- 패키지 검색: apt search 검색어
- 패키지 정보 확인: apt show 패키지 이름
- 패키지 삭제: apt remove 패키지 이름 (관리자 권한 필요)

ls -l을 통해 폴더, 파일을 볼 때 그 두개를 구분하기 위해 맨 왼쪽에 -로 시작하는지 d로 시작하는지를 확인한다.

- 와 d 는 각각 not directory와 directory를 나타낸다. 즉 폴더면 d로, 파일이면 - 로 나타난다. 이어지는 r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 나타낸다.

rw-r--r--를 보면 소유자는 읽기(r)와 쓰기(w)가 가능하고, 다른 사용자 그룹은 읽기(r)만 가능하다는 의미이다.

rwx / rwx / rwx
각각 첫번째는 소유자, 두번째는 그룹, 세번째는 다른 사람들

chmod: 권한을 변경하는 명령어
OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다.
만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo 를 이용해 폴더나 파일의 권한을 변경할 수 있다.

명령어 chmod 로 권한을 변경하는 방식은 두 가지가 있는데, 
첫 번째는 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method
예를들어
chmod g-r filename 그룹에게 읽기 권한을 삭제한다.
chmod o-w filename other에게 쓰기 권한을 삭제한다.
chmod a=rw hello.java 사용자, 그룹, other 몯두에게 읽기와 쓰기 권한을 부여한다.

두 번째는 rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form
 숫자 7까지 나타내는 3 bits의 합으로 표기한다.
Read (r)   4
Write (w) 2
Execute (x) 1
예를들어 chmod 744 hello.java는
user에게 rwx를, group과other은 r--로 권한 변경
-rwx/ r--/ r--

환경변수는 프로그램의 동작에 영향을 미치는 값들을 의미한다.
 예를 들어, A라는 프로그램을 만들었는데, 이 A라는 프로그램은 B라는 폴더에 저장된 어떤 값을 읽어와 작업에 사용한다고 가정하자. 이때, 프로그램 A는 폴더 B의 위치를 파악할 수 있어야 한다. 프로그램에 경로를 입력해주면 그만이지만, 만약 프로그램 A를 다른 사람의 컴퓨터에서 사용한다면 어떻게 될까? 물론, 폴더 B가 우리의 컴퓨터에서와 동일한 경로에 위치한다면 문제없이 폴더 B를 찾을 수 있겠지만, 그렇지 않은 경우 폴더 B를 찾을 수 없어 프로그램 A는 정상적으로 동작할 수 없다. 이처럼 환경에 따라 프로그램의 동작에 영향을 줄 수 있는 값들을 환경변수라고 한다

User에 대한 사용자 변수는 특정 사용자만 사용할 수 있는 지역 환경변수이며, 시스템 변수는 모든 사용자가 사용할 수 있는 전역 환경변수이다.

지역 환경변수 
hello=codestates처럼 = 사이에 공백이 없이 입력한다. 만약, 변수에 공백이 존재할 경우 값 전체를 따옴표로 감싸주어야 한다.

전역 환경변수
export urclass="is good"와 같이 export를 이용하여 추가한다. 지역 환경변수와 마찬가지로  = 사이에 공백이 없어야하고, 저장하고자 하는 변수가 공백을 포함하는 경우에는 값 전체를 따옴표로 감싸주어야 한다.

전역 및 지역 환경변수의 개별 값 확인하기
$는 뒤의 문자열이 환경변수라는 의미를 터미널에 전달한다.
echo $hello
echo $urclass

환경변수 영구 적용하기
[지역 환경변수 영구 적용하기]
1. ls -al을 통해 홈 내에 존재하는 모든 것들을 숨겨진 파일과 디렉토리까지 조회
2. 목록에 .zshrc가 있으면 nano .zshrc를 입력하여 편집창을 연다.
- 목록에 .bashrc가 있으면 nano .bashrc를 입력하여 편집창을 연다.
3. alt + / 또는 shift + g (vim에디터 단축키)를 눌러 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장한다.
4. source .zshrc 또는 source .barshrc를 통해 변경 내용을 적용하고, 잘 적용 되었는지 echo를 통해 확인한다.

zshrc bashrc 차이
IOS는 zshrc / 우분투는 bashrc

[전역 환경변수 영구 적용하기]
1. 먼저 변경하고자 하는 파일의 권한을 수정해야 한다.
환경변수를 저장하고자 하는 파일의 이름은 루트 디렉토리(/)의 etc 디렉토리 내에 있는 profile이라는 파일이다.
profile은 기본적으로 수정 권한이 r--r--r--로 설정되어 있어 수정이 불가하다.
그렇기에 sudo chmod 777 /etc/profile을 입력한다음, 비밀번호를 입력하여 권한을 변경해야 한다.
2. nano /etc/profile을 입력하여 입력창을 연다.
참고로, 이 명령어는 루트 디렉토리의 etc 내에 있는 profile을 nano 편집기로 여는 명령어이다.
3. alt + / 또는 shift + g (vim에디터 단축키)를 눌러 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장한다.
4. source /etc/profile을 입력하여 변경 내용을 적용하고, 잘 적용 되었는지 echo를 통해 확인한다.

-r -f에 대해 더 알아보자
r은 recursive의 약자로 특정 행동을 순환적으로 반복한다.
f는 force의 약자로 어떤 행위를 강제한다.

예를들어 일반적인 rm 명령어로는 파일을 저장하고 있는 폴더를 삭제하지 못하는데, -r 옵션을 추가하면 파일을 저장하고 있는 폴더도 삭제 가능하다.
f 명령어를 함께 사용하면 보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있다. 그렇기에 f 명령어를 사용할 때는 각별히 주의해야 한다.
r과 f 명령어를 합쳐 rf 형태로 쓸 수 있다. rm -rf 명령어를 사용하면 민감한 정보를 가진 파일도 무차별적으로 삭제하여 심각한 문제를 일으키는 경우가 있어 조심하자

cat 명령어 대신 쓰는 명령어
at 명령어를 이용하면 터미널에서 파일 안에 담긴 내용을 확인할 수 있다.
그러나 항상 전체 내용을 출력하기 때문에 파일이 담고 있는 내용이 너무 길 경우, 터미널 상에서 내용이 잘려서 나오는 경우가 생기고 항상 전체가 출력되기 때문에 원하는 정볼르 찾기 위해서 때로 시간이 오래 걸린다.
그렇기에 전체를 열람하지 않고 파일 내용의 부분만 열람할 수 있게 만들어주는 명령어가
head 명령어 
tail 명령어
more 명령어
less 명령어

헬프 옵션(-h, –help)으로 사용법을 출력할 수 있다.
profile
개발 공부

0개의 댓글