TIL

Linux

DevelopJJong 2022. 5. 2. 15:22

CLI 기본 명령어

개요

  • 리눅스 터미널을 실행할 수 있다.
  • CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
    • GUI의 변경사항을 CLI로 확인할 수 있다.
    • CLI의 변경사항을 GUI로 확인할 수 있다.
  • 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
    • pwd: 현재 위치를 확인하는 명령어
    • mkdir: 새로운 폴더를 생성하는 명령어
    • ls: 폴더나 파일의 목록을 출력하는 명령어
    • nautilus (Ubuntu), open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어
    • cd: 폴더에 진입하는 명령어
    • touch: 새로운 파일을 생성하는 명령어
    • cat: 파일의 내용을 터미널에 출력하는 명령어
    • rm: 폴더나 파일을 삭제하는 명령어
    • mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어
    • cp: 폴더나 파일을 복사하는 명령어
    • sudo: 관리자 권한을 이해할 수 있다.
  • 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
    • /: 루트 디렉토리
    • ~: 홈 디렉토리
  • 절대 경로와 상대 경로의 차이를 이해할 수 있다.
    • 절대 경로의 시작이 루트 디렉토리(/)인 것을 이해할 수 있다.
    • 상대 경로의 시작이 현재 디렉토리(.)인 것을 이해할 수 있다.
  • 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.

CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다

CLI(Command-Line Interface) : 입력하는 글자와 출력되는 글자로 컴퓨터와 소통한다.

프롬프트 : 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간

 

리눅스 터미널에서 기본적인 명령어를 사용할 수 있다

pwd: 현재 위치를 확인하는 명령어

 

mkdir: 새로운 폴더를 생성하는 명령어

 ex) mkdir jjonge => jjonge라는 폴더를 생성한다

 

ls: 폴더나 파일의 목록을 출력하는 명령어

 

nautilus (Ubuntu), open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어

 

cd: 폴더에 진입하는 명령어

 ex) cd jjonge => jjonge폴더에 진입한다.

touch: 새로운 파일을 생성하는 명령어

 ex) touch jjonge.txt => jjonge라는 텍스트파일(0바이트)을 만든다.

cat: 파일의 내용을 터미널에 출력하는 명령어

 ex) cat jjonge.txt => jjonge에 적혀있는 파일의 내용을 출력한다.

rm: 폴더나 파일을 삭제하는 명령어

 ex) rm jjonge => jjonge폴더를 삭제한다.

mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어

 ex) mv jjonge.txt jjonge/ => jjonge.txt파일을 jjonge폴더로 옮긴다.

      mv jjonge.txt jjong33.txt => jjonge라는 이름의 txt를 jjong33으로 바꾼다.

cp: 폴더나 파일을 복사하는 명령어 - cp [원본 파일 이름] [복사할 파일 이름]

 ex) cp jjonge.txt jjonge123.txt => jjonge.txt의 내용을 가진 jjonge123.txt를 만든다.

sudo: 관리자 권한을 이해할 수 있다.

 

명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.

사용자 폴더의 경로(Path)는 ~/로 표시됩니다.

물결 기호(~)는 루트폴더(/)로부터 사용자 폴더(username)까지의 경로를 축약한 형태입니다.

 

절대 경로와 상대 경로의 차이를 이해할 수 있다.

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

Ubuntu

/home/[username]/helloWorld/hello/라는 경로를 예시로 살펴보겠습니다. 루트폴더(/)에는 폴더 home이 있습니다. 폴더 home으로 진입하면, 폴더 username을 확인할 수 있습니다. 폴더 username에 진입하면, 폴더 helloWorld가 있고, 폴더 helloWorld에 진입하면 폴더 hello를 발견할 수 있습니다. 이 과정을 한 줄로 줄여놓은 구문(/home/[username]/helloWorld/hello/)이 절대 경로입니다.

 

텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.

nano [파일 이름]을 사용해서 열 수 있다.

 

패키지와 패키지 매니저

개요

  • 패키지와 패키지 매니저 필요성을 이해할 수 있다.
  • 각 운영체제에 맞는 패키지 매니저를 사용할 수 있다.
    • MacOS 운영체제에서 터미널을 통해 Homebrew 패키지 매니저를 설치하고 패키지를 관리하는 명령어를 사용할 수 있다.
      • brew update: 패키지의 업데이트 여부 확인
      • brew outdated: 업데이트 필요한 파일 조회
      • brew upgrade: 프로그램 업그레이드
      • brew info: 프로그램의 정보 확인
      • brew install: 프로그램 설치
      • brew list: 설치된 프로그램 목록 보기
      • brew uninstall: 프로그램 삭제
    • Linux Ubuntu 운영체제에서 사용하는 apt 패키지 매니저에 대해 알고, 명령어를 통해 패키지를 관리할 수 있다.
      • apt update: 패키지의 업데이트 여부 확인
      • apt list --upgradable: 업데이트 필요한 파일 조회
      • apt upgrade: 프로그램 업그레이드
      • apt show: 프로그램의 정보 확인
      • apt install: 프로그램 설치
      • apt list --installed: 설치된 프로그램 목록 보기
      • apt remove: 프로그램 삭제
      • apt search : 패키지 검색

사용권한

 개요

  • 사용 권한과 소유자에 대해 이해하고, 사용 권한을 변경할 수 있다.
    • 파일의 소유자와 파일에 적용된 사용 권한을 확인하고 이해할 수 있다. ls -l
    • 파일에 적용된 사용 권한을 변경할 수 있다. chmod

권한

지금은 rwx 가 무엇을 뜻하는지 이해하면 충분합니다. 파일 hello.java의 권한은 rw-r--r-- 으로, 소유자는 읽기와 쓰기가 가능하고, 다른 사용자 그룹은 읽기만 가능하다는 의미입니다. 폴더 linux의 권한은 rwxr-xr-x 으로, 소유자는 읽기와 쓰기, 실행이 가능하고, 다른 사용자 그룹은 읽기와 실행만 가능합니다.

권한 (출처: 코드스테이츠)

chmod

 chmod로 권한을 변경하는 방식은 두 가지가 있다.

  • 첫 번째는 더하기(+), 빼기(), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method입니다.
  • 두 번째는 rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form입니다.

Symbolic method

액세스 클래스

u = user

g = group

o = other

a = all

 

명령어 chmod 뒤에 변경할 권한을 입력합니다. 액세스 클래스의 u, g, o, a를 변경할 조건에 따라 조합하여 입력하고, 연산자와 액세스 타입을 순서대로 입력합니다

ex) chmod g-r filename => group에 read를 뺀다

 

Absolute form

Absolute form은 숫자 7까지 나타내는 3 bits의 합으로 표기합니다.

 

read(r) = 4

write(w) = 2

Execute(x) = 1

 

만약, user는 rwx 를, group과 other은 r-- 로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용합니다.

# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 hello.java # -rwxr--r--

환경변수

 개요

  • 환경변수가 무엇인지 이해한다.
  • 환경변수를 왜 사용하는지 이해한다.
  • 전역 및 지역 환경변수의 차이를 이해한다.
  • 환경변수를 임시적으로 적용할 수 있다.
  • 환경변수를 영구적으로 적용할 수 있다.
  • 환경변수의 개별값을 확인할 수 있다.
  • 환경변수들의 목록을 확인할 수 있다.

 

환경변수란?

환경변수는 프로그램의 동작에 영향을 미치는 값들을 의미합니다.
환경변수에 따른 문제를 해결하고자 운영체제는 환경변수를 설정하고, 프로그램이 환경변수를 찾아서 사용할 수 있도록 도와줍니다. 즉, 여러분들이 익히 알고 있는 환경 설정 기능을 제공하는 것이죠! 여러분이 스마트폰, 컴퓨터에서 환경 설정을 통해 컴퓨터의 세팅을 설정할 수 있는 것처럼, 환경변수 설정을 통해 프로그램이 동작하는 환경을 설정할 수 있습니다

 

Linux에서 환경변수 설정하기

환경변수지역 환경변수전역 환경변수로 분류됩니다. 지역 환경변수는 환경변수를 생성한 특정 사용자만 사용할 수 있는 환경변수이며, 전역 환경변수모든 사용자가 사용할 수 있는 환경변수를 의미합니다. 각각은 다음과 같이 설정할 수 있습니다. 단, 아래의 방법은 환경변수를 임시적으로만 적용하는 방법이며, 터미널을 종료하면 환경변수가 자동으로 삭제됩니다.

 

지역환경변수

공백이 있으면 안된다.

hello=jjonge

전역 환경변수

공백이 있는 경우 따음표로 감싸준다.

export urclass="is good"
export bad_example=this is bad example