오늘..늦잠을 자서 15분을 지각했다..너무 슬프다..
Linux
- 명령줄 인터페이스(Command-Line Interface, CLI) : 명령어로 컴퓨터를 제어하는 방식
- 그래픽 사용자 인터페이스(Graphic User Interface, GUI) : 일반적으로 컴퓨터를 사용할때 적용되는 방식
터미널
pwd
(print working directory) : 현재위치 확인. 터미널에pwd
를 입력후 enter를 누르면 현재 작업중인 폴더의 위치를 출력한다.mkdir
(make directories) : 현재 작업중인 폴더에 새로운 폴더 생성.ls
(list) : 특정 폴더에 포함된 파일이나 하위폴더리스트 출력.- ls에는 자주 사용하는 옵션
l
,a
가 있음 ls -l
: 가장 왼쪽에 출력되는 두 글자d
,-
를 확인 가능.d
: 디렉토리-
: 파일
ls -a
: a는 all이라는 의미. 숨어있는 폴더나 파일을 모두 출력.ls -al 혹은 ls -la
- ls에는 자주 사용하는 옵션
ll
더 편하고 가독성좋음cd
(change directory) : 폴더 변경.touch
: 파일 생성>
: 실행결과를 파일에 저장하기.echo
: 뒤에내용을 화면에 출력.
echo 폴더에_저장할_내용 > 파일.txt
cat
: 파일의 내용을 터미널에 출력.rm
(remove) : 단일 파일 삭제. 이 명령어로 삭제한 폴더나 파일은 휴지통을 거치지않고 바로 삭제.rm -rf
:폴더 삭제r
(recursive) : 폴더지울때 사용f
(force) : 질문을 받지 않고 지울때 사용
mv
(move) : 폴더나 파일이름변경, 폴더나 파일 위치 변경mv 폴더나파일의이름 도착폴더이름
mv 폴더나파일의이름 변경할이름
cp
(copy) : 파일 복사cp 원본파일이름 복사할파일이름
cp -rf
: 폴더 복사
.
: 현재폴더를 의미..
: 현재폴더보다 앞의 폴더. 즉 이전폴더를 의미.- 각 명령어에 포함된 옵션은 명령어 이름만 입력하거나
-h
또는--help
와 같은 옵션을 통해 확인
관리자권한과 경로
- 충돌(Conflict) : 두 프로그램이 하나의 시스템(운영체제)을 놓고 다투는 과정.
- 관리자 : 프로그램 설치, 변경 및 삭제할수있는 권한
- 사용자 : 프로그램실행만 가능
- 절대경로: pwd로 확인할 수 있음. 기준점으로부터 절대적인 위치.
- 루트폴더
/
: 기준점, 폴더 내부를 의미
- 루트폴더
- 상대경로: 현재위치로부터 상대적인 위치
- 현재위치폴더
.
- 상위폴더
..
- 현재위치폴더
관리자 권한
- 절대경로의 기준점, 즉 루트폴더는 관리자의 영역.
whoami
: 로그인된 사용자를 확인하는 명령어.- 명령어를 통해 확인할 수 있는 사용자는 폴더로 존재.
~/
: 사용자 폴더 경로~
: 루트폴더로부터 사용자폴더까지의 경로 축소.
- sudo
: 관리자 권한을 획득하는 명령어
텍스트에디터 nano
nano hello.java
nano
- 위 명령어들로 nano 실행가능
파일열기
nano 파일이름
을 하거나 nano만 이용하여 실행 후 ctrl+r 혹은 ctrl+t를 눌러 화살표키를 이용하여 디렉토리를 탐색 후 불러올 수 있음.
파일편집 및 종료
- 편집 후 ctrl+x를 누르면
Save modified buffer (ANSWERIG " No" WILL DESTROY CHANGES) ?
프롬프트 등장. 이때는 Y 혹은 N을 눌러 저장여부 결정
파일저장
nano실행도중 파일을 저장하고싶다면 ctrl+0 WriteOut 이용.
패키지와 패키지매니저
- 리눅스 운영체제 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일
- 구성 : 프로그램파일, 프로그램 설치파일, 프로그램 설치 설명서, 프로그램 정보파일
- 패키지 매니저 : 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구
apt 명령어
- 우분투는 기본적으로 apt패키지매니저 내장.
apt update
: 패키지 목록 갱신(관리자권한)- 패키지 다운로드할수있는 저장소의 최신정보 업데이트
- 저장소 추가 및 최신정보 갱신
- 설치 프로그램이 새로운 버전으로 변경X
apt list --upgradable
: 업그레이드 가능한 패키지목록 출력apt upgrade
: 전체패키지 업그레이드 (관리자권한)apt --only--upgrade install 패키지이름
: 특전 패키지만 업그레이드(관리자권한)apt install 패키지이름
: 패키지 설치(관리자권한)apt list --installed
: 설치된 패키지 보기apt search 검색어
: 패키지 검색apt show 패키지이름
: 패키지 정보 확인apt remove 패키지이름
: 패키지삭제(관리자권한)
관리자 권한 사용
- 패키지 설치 및 삭제작업에는 관리자권한 필요(sudo)
오래걸리거나 문제가 생긴 경우
- ctrl+c 키로 강제종료 및 사용자입력 되찾아오기
사용권한
폴더인지 파일인지
ll
을 사용하여 터미널에 출력된걸 보면 가장 왼쪽에 출력된 내용이 -
로 시작하면 “not directory”이고, d
로 시작하면 “directory”이다. -
는 파일, d
는 폴더를 나타낸다. 이어지는 r,w,x는 각각 “read permission, write permission, execute permission으로 읽기권한, 쓰기권한, 실행권한이다. rw-r--r--
은 소유자는 읽기쓰기가 가능하고 다른 사용자그룹은 읽기만 가능하다는 의미이다. (출처 : https://konkuk-curry.tistory.com/entry/Linux-error-%ED%97%88%EA%B0%80%EA%B1%B0%EB%B6%80-%EA%B6%8C%ED%95%9C%EC%84%A4%EC%A0%95permission-deniedchmod)
user, qroup, and other
- user : 파일의 소유자.
- group : 여러 유저. 그룹에 속한 유저들은 파일에 동일한 권한이 주어짐.
- other : 파일에 대한 다른 권한을 가진 유저.
chmod. 권한을 변경하는 명령어
chmod 명령어는 읽기,쓰기,실행권한을 변경할수있다.
OS에 로그인한 사용자와 소유자가 같을경우 chmod로 권한 변경가능.
OS에 로그인한 사용자와 소유자가 다를경우 sudo로 권한 변경가능.
- chmod로 권한 변경하는 방식 2가지
- +, -, =과 accessor유형을 표기해서 변경하는 Symbolic method
- rwx를 3비트로 해석해서 숫자 3자리로 표기해서 변경하는 Absolute form
Symbolic method
Symbolic method는 액세스 클래스,연산자,액세스 타입으로 구분.
chmod 뒤에 액세스클래스 중 변경하려하는 조건에 맞기 입력하고, 연산자와 액세스타입을 입력.
Absolue form
- Absolute form은 숫자 7까지 나타내는 3비트의 합으로 표기.
- 유저,그룹,다른사용자마다 rwx가 나타나고 boolean 값으로 표기.
환경변수 (MACOS, LINUX)
- 환경변수 : 프로그램 동작에 영향을 미치는 값
- 환경변수는 지역환경변수와 전역환경변수로 분류.
- 지역환경변수 : 환경변수를 생성한 특정 사용자만 사용가능
변수명=값
으로 생성. 공백이 있다면변수명="여기에 값을 넣어요"
처럼 값 전체를 따옴표로 감싸야한다. - 전역환경변수 : 모든 사용자가 사용가능
export 변수명=값
으로 생성.
- 지역환경변수 : 환경변수를 생성한 특정 사용자만 사용가능
환경변수 값 확인하기
- 설정한 환경변수의 값은
echo $변수명
으로 확인 가능. $
를 붙이는 이유는 뒤의 문자열이 환경변수라는 의미를 터미널에 전달하기 위함.
환경변수 영구 적용
- 환경변수를 영구적으로 적용하면 터미널을 닫거나 재부팅해도 환경변수가 초기화되지않는다.
지역환경변수 영구적용
cd
를 사용하여 home디렉토리로 이동한 후ls -al
을 통해 홈 내의 숨겨진 파일들까지 조회.- 결과에 따라 다른 명령어 사용.
- 목록에 .zshrc 존재,
nano .zshrc
입력하여 편집창 오픈. - 목록에 .bashrc 존재,
nano .bashrc
입력하여 편집창 오픈. - 텍스트편집기는 어떤걸 사용해도 무방.
- vim을 사용하는 경우
Shift+g
nano를 사용하는 경우alt+/
를 눌러 맨 아래로 이동 후, 환경변수 작성 및 저장. source .zshrc
입력후 변경내용 적용, 내용 출력.
전역환경변수 영구적용
- 변경하고자하는 파일의 권한 수정.
- 환경변수를 저장하는 파일은 루트/etc/profile.
- profile은 기본적으로 r–r–r–로 설정.
sudo chmod 777 /etc/profile
입력 후 비밀번호 입력하여 권한변경.
nano /etc/profile
을 입력하여 입력창열기.
- 이 방법은 etc안에 있는 profile을 nano편집기로 여는것.
- vim을 사용하는 경우
Shift+g
nano를 사용하는 경우alt+/
를 눌러 맨 아래로 이동 후, 환경변수 작성 및 저장. source /etc/profile
입력후 변경내용 적용, 내용 출력.
export 키워드로 생성된 환경변수의 이름과 값을 확인.
- 명령어 export를 입력하면 이미 설정되어있는 환경변수 및 export를 통해 설정한 환경변수들의 목록 확인 가능.
환경변수(Windows)
- 환경변수 검색 후 “시스템 환경 변수 편집” 열기
- 환경변수 클릭
- 환경변수 설정 3-1. 사용자변수에서 새로만들기 클릭 후, 이름과 값 입력 3-2. 시스템변수에서 새로만들기 클릭 후, 이름과 값 입력 3-3. 확인 클릭. 확인을 누르지않으면 저장안됨
- cmd 열고 set 명령어 입력해서 환경변수 확인
CLI 명령어
명령어 옵션
-r
,-f
r
: recurve의 약자. 특정 행동 순환반복.f
: force의 약자. 어떤 행위를 강제함.r
은 rm으로 폴더를 삭제하고싶을때 붙여서 사용가능. cd나 다른 명령어도 가능f
는 보호되거나 존재하지않는 파일까지도 강제로 삭제 가능. 고로 사용할때주의!
1
cat
대신 쓰는 명령어
1
cat
은 항상 파일전체내용 출력. 원하는 정보만 찾기 힘듦.
head
: 텍스트로된 파일의 앞부분을 지정한 만큼 출력.tail
: 파일의 마지막줄을 기준으로 지정한 줄까지의 파일내용 일부를 출력.more
: 파일을 읽어 화면 단위로 끊어서 출력. 위에서 아래 방향으로만 출력 되지만, 지나간 내용을 다시 볼 수 없다.less
: 파일을 읽어 화면에 출력하는 명령어. 한 번에 보여지는 만큼만 읽어서 출력.
터미널에서의 도움말 -h, -help
오늘은 리눅스에 대해 공부했다! 사실 독학하며 이미 리눅스에 대한 기초 지식은 있었지만 처음 배운다는 마음으로 공부했다. 리눅스를 사용하면서 패키지를 다운받던 중 오류가 있었다. wget을 다운 받고 urclass에 있는 링크로 텍스트파일을 다운받았어야했는데 wget이 링크를 인식하지를 못했다. 정말 당황스러웠지만서도 스스로 방법을 찾아내기 위해 구글링을 이용했다. 굉장히 많은 내용들이 나왔지만 따라해도 해결이 되지않아 참 막막했다. 하지만 이런걸로 포기한다면 백엔드 개발자로서 성공할수 있을까하는 생각이 들었고 터미널에 출력된 프롬프트를 보며 어떤 부분이 문제인지에 대해 고민했고, 문제인 부분을 찾아내어 그 부분을 해결하는 방법에 대해 구글링했다. 그리고 찾게된 방법이 /etc/resolv.conf 에서의 오류가 있었다. 네임서버가 등록되어있지 않다는 사실을 알았고 마침내 해결했다. 스스로 해결했을때, wget이 정상적으로 실행됐을때 정말 너무 많이 행복했다!! 코드스테이츠를 시작한 이후로 오늘 성장한 기분이 들었다.