[6일차] Linux

유태형·2022년 5월 2일
0

코드스테이츠

목록 보기
7/77

오늘의 목표

  1. GUI로 실행 (중요하진 않음)
  2. 기본적인 명령어 (중요)
  3. 경로(상대경로, 절대경로)
  4. nano
  5. 권한
  6. 패키지 매니저 -apt



내용

GUI로 실행 (중요하진 않음)

GUI로 실행하기 위해선 WSL -> 우분투로 실행하는 환경이므로 GUI 따로 열어줄 Xserver가 필요합니다. 따라서 Xserver를 실행하기위해 Xming을 설치를 수행합니다.

https://sourceforge.net/projects/xming/

를 다운받아 설치합니다.

다음으로 우분투에서 GUI는 Xserver로 출력하겠다는 명령들입니다.

우분투 프롬프트(Prompt)에서
sudo systemd-machine-id-setup
sudo dbus-uuidgen --ensure
cat /etc/machine-id
sudo apt-get install x11-apps xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic
vi ~/.bashrc

  • 마지막 부분에 export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0를 추가합니다.

source ~/.bashrc

Xming.exe를 실행시키고 우분투에서
nautilus를 실행합니다.

우분투에서도 리눅스 GUI를 사용할 수 있게됩니다!



기본적인 명령어 (중요)

윈도우나 맥을 사용하기 위해선 모든 기능들을 알고 있어야 할 필요는 없습니다. 하지만 어느정도는 알고있어야 조작이 가능합니다. 마찬가지로 우분투를 조작하기 위해선 모든것을 외울 필요는 없습니다. 하지만 최소한의 필수적인 기능들은 알고 있어야 합니다.

단순히 외우기 보단 윈도우나 맥에서 어떤 기능과 동일한지 비교해 보는것이 좋습니다.



pwd

현재 작업 디렉터리(Working Directory)를 출력합니다. 작업 디렉터리(Working Directory)가 무엇인지 이해하는 것이 중요한데 현재의 위치입니다.
pwd = Print Working Directory의 약자이고 현재 작업 디렉터리를 출력하는 명령어입니다.



mkdir

폴더(디렉터리)를 만드는 면령어 입니다. mkdir = MaKe DIRectory의 약자이고 mkdir 폴더명으로 폴더명을 지정할 수 있습니다.

추가로 수백 수천개의 폴더를 한번에 만들 수 도 있습니다.

mkdir 폴더명{시작..끝}으로 여러개를 순서대로 만들 수 있습니다.



ls

현재 폴더(디렉터리)에 존재하는 폴더와 파일들을 출력하는 명령입니다. ls=LiSt의 약자이고 여러 옵션과 함께 자주 사용됩니다.

옵션은 명령어 뒤에 한칸 띄욱 -(대시)를 붙혀 사용합니다. 옵션의 순서는 결과에 영향을 주지 않습니다.

a = all의 약자입니다. 숨김 파일,폴더들도 출력합니다.
l은 파일의 포맷, 권한, 소유자, 날짜 등등 모두 출력하는 옵션입니다.
-al or -la로 합쳐서 사용할 수도 있습니다.



cd

cd = Change Directory의 약자입니다. cd는 디렉터리를 이동할때 사용 됩니다.

위의 프롬프트는 이전에 만들었던 helloWorld로 이동한 다음 경로를 출력한 예제입니다.



touch

touch명령어는 폴더를 생성하는 mkdir과 다르게 내용이 없는 파일을 단순히 생성합니다. 후에 편집기로 내용을 추가하거나 수정하거나 삭제할 수도 있습니다.

위의 프롬프트는 hi.txt라는 파일을 만들고 현재 디렉터리내에 존재하는 파일들의 목록을 출력하였습니다.



cat

이전에 알아두었던 nautilus를 활용하여 touch로 만들었던 hi.txt에 내용을 추가하였습니다.
GUI(노틸러스)로 추가한 내용이 CLI(프롬프트)에도 출력이 되냐고 물으시면 네 됩니다.
방식의 차이지 대상의 차이가 아닙니다.

동일한 내용이 출력됨을 확인할 수 있습니다.
cat은 파일의 내용을 출력합니다. 간단한 내용의 파일을 확인하기엔 유용하나 큰 파일은 확인하기 어려워 보통 에디터나 다른 명령어들을 이용합니다.



rm

위의 명령어들을 순서대로 기입합니다.

rm=ReMove의 약자입니다. 해당 파일을 삭제할때 사용하는 명령어입니다.

파일의 경우는 해당파일만 삭제하면 되지만 폴더의 경우는 조금 다릅니다. 삭제하고자 하는 폴더내에 또다른 폴더와 파일들이 존재할 수 있습니다. 그래서 옵션이 필요합니다.

-r옵션은 recursive의 약자로 재귀적으로 삭제한다는 뜻입니다. 내부 파일,폴더들을 재귀적으로 삭제함으로써 해당 폴더도 결국 삭제할수 있습니다.
-f옵션은 force의 약자로 강제적으로 삭제한다는 뜻입니다. 민감한 파일이나 폴더가 존재할때 묻지않고 삭제하므로 -f옵션의 사용은 자제하는것이 좋습니다.



mv

폴더와 파일을 다시 생성합니다.

mv = Move의 약자입니다. mv 파일or폴더 옮길경로로 파일이나 폴더를 새로운 위치로 이동시킬 수 있습니다. 이때 상대경로, 절대경로모두 사용이 가능합니다.

위의 예시는 bye.txt를 bye폴더 안으로 이동시켰습니다.

mv 파일or폴더 옮길경로를 응용하여 파일이나 폴더의 이름도 변경할 수 있습니다.

  1. 원래 파일을 임시 파일로 저장
  2. 원래 파일 삭제
  3. 임시파일을 새 파일로 저장

과정을 거치기 때문에 mv명령어로 이름을 변경할 수도 있습니다.



cp

복사도 가능합니다.

cp = Copy의 약자이며 cp [원본파일이름] [복사파일이름] 파일을 복사합니다.

cp -rf [원본파일이름] [복사파일이름]-rf옵션을 추가하여 폴더(디렉터리)도 복사가 가능합니다. -rfrm에서와 같은 의미의 옵션입니다.



경로(상대경로, 절대경로)

경로는 상대경로와 절대경로가 존재합니다.

  • 절대경로는 최상위 디렉터리 root부터 해당 파일이나 폴더의 위치입니다.
  • 상대경로는 작업디렉터리(현재폴더) 에서 해당 파일이나 폴더의 위치입니다.

기준이 다르니 작업디렉터리가 root가 아니라면 가는 경로도 달라질 수 있습니다.

리눅스에선 /root를 의미하고, ~가 작업디렉터리를 의미합니다.

또 상대경로 사용시 ...를 자주사용하는데 ..는 상위 폴더를 의미하고 .는 현재 폴더를 의미합니다.

예를들어 cd ..는 상위폴더로 이동, cd ./bye/ = cd ./bye = cd bye는 모두 같은 결과입니다.



nano

리눅스의 에디터로는 vim과 emacs등등 매우 강력하고 다양한 에디터들이 존재합니다.
nano에디터는 사용하기 쉬운 장점이 있습니다.

간편히 타 에디터를 사용하는 것처럼 사용하면 되고 아래에 단축키 모음들이 표시되므로 vim보다는 확실히 사용히 쉽습니다.



권한

hello.javahelloWorld를 보면 맨앞에 -rw-r--r--등 권한이 존재하는 것을 확인할 수 있습니다.

권한은 총 10자리인데
directory : 1
user : 3
group : 3
other : 3
자리로 구성되어 있습니다.

d 는 디렉터리이고 -는 파일입니다.
r : 읽기 권한, w : 쓰기 권한, x : 실행 권한 입니다.

chmod로 권한을 조절할 수 있습니다.

chmod a=rw hello.java # -rw-rw-rw-
chmod u= hello.java # ----rw-rw-
chmod a+rx hello.java # -r-xrwxrwx
chmod go-wx hello.java # -r-xr--r--
chmod a= hello.java # ----------
chmod u+rwx hello.java # -rwx------

=으로 권한을 대입할 수도 있고 +-로 추가와 빼기도 가능합니다.

한편 2진수 3bit으로도 권한의 표현이 가능합니다.(2진수 설명은 생략)

chmod 744 hello.java # -rwxr--r--

r,w,x가 각각 1bit씩 맡아 총 8가지(0~7)까지 경우의 수를 가질 수 있습니다.



패키지 매니저 -apt

패키지 목록 갱신 : sudo apt update

  • 패키지를 다운로드 할 수 있는 목록을 갱신합니다. 업데이트를 진행하는것이 아니라 업데이트 할 거리를 갱신하는 것입니다.

업그레이드 가능한 목록 출력 : apt list --upgradable
전체 패키지 업그레이드 : sudo apt upgrade
특정 패키지만 업그레이드(버전업) : sudo apt --only-upgrade install 패키지이름
패키지 설치 : sudo apt install 패키지이름
설치된 패키지 보기 : apt list --installed
패키지 검색 : apt search 검색어
패키지 정보 확인 : apt show 패키지 이름
패키지 삭제 : sudo apt remove 패키지이름

두가지 예를 실행해 보겠습니다.

sudo apt install neofetch

neofetch




후기

리눅스도 상당히 중요한것 같습니다. 백엔드 개발에 있어서 서버를 조작할 줄도 알아야 하는데 AWS나 EC2등 많은 클라우드 서버들이 리눅스 api를 사용중입니다.




리눅스 꿀팁

ctrl + L

프롬프트 창을 다 지웁니다.(단순히 화면만)

profile
오늘도 내일도 화이팅!

0개의 댓글