가상머신이란?
내가 사용하는 컴퓨터 안에 있는 '또 다른 가상의 컴퓨터'라고 생각하면 된다.
Windows subsystem for Linux의 약자인데, 리눅스 커맨드와 커맨드 라인 앱을 윈도우에서 실행할 수 있게 하는 가벼운 툴이다.
Command Line Interface(CLI) : 커맨드를 입력해서 컴퓨터를 사용하는 환경(CLI환경)
Graphical User Interface(GUI) : 우리가 익숙한 마우스와 화면을 사용하는 환경(GUI환경)
나는 Windows11이 설치된 HP노트북을 사용하는데, wsl을 사용하기 위해 몇가지 설정이 필요했다. 'Windows 기능 켜기 / 끄기'로 들어가서 [Linux용 Windows 하위 시스템]과 [가상 머신 플랫폼]의 체크박스를 체크해준 뒤, PowerShell을 관리자 권한으로 실행하고
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart를 적어준다. (WSL사용을 허용하는 코드)
그리고 컴퓨터를 재부팅 해준뒤, Microsoft store에서 'Ubuntu'를 설치해주니 정상적으로 실행할 수 있었다.
date : 날짜를 알려주는 커맨드
cal : 캘린더를 보여주는 커맨드
특정 날을 보고싶다면, cal 월 년도 (cal 9 2022)
*가끔 bsdmainutils(BSD유틸리티 모음)가 기본적으로 설치되어 있지 않은 컴퓨터도 있는데, sudo apt-get update -y 그리고 sudo apt-get isntall -y bsdmainutils를 해주면 된다.
터미널은 인풋을 받고, 아웃풋을 출력해주는 프로그램이다. 우리가 보통 생각하는 커맨드를 입력하는 '검은화면'을 터미널이라고 할 수 있다.
shell은 쉽게말해 커맨드를 해석해주는 프로그램이다.
아까 date나 cal과 같은 간단한 커맨드를 사용해보았는데, 사실 컴퓨터는 date나 cal같은 단어를 이해하지 못한다. 그래서 이런 커맨드들을 컴퓨터가 이해할 수 있는 형태로 바꿔줘야 하는데, 그게 바로 shell이 하는 역할이다.
shell 종류중 하나가 bash인데, 가장 보편적이라 많은 운영체제에서 기본 shell로 사용된다. (Ubuntu의 기본 쉘이기도 하다.)
커맨드들의 메뉴얼을 보고싶을땐, man을 사용하면 된다.
man 커맨드 ex. man cal
메뉴얼 페이지를 나가려면 q를 입력하면 된다.
커맨드를 사용하다보면, 이전에 썼던 커맨드를 다시 써야할 때가 온다. 그럴때,
방향키 + ⬆️ : 이전에 썼던 커맨드 불러오기
Alt + ⬅️ 및 ➡️ : 단어 기준으로 커서가 이동
Ctrl + E : 마지막으로 커서가 이동
Ctrl + A : 처음으로 커서가 이동
clear : 히스토리를 전부 지움
Tab : 자동완성
현재 사용자의 홈 디렉토리는 '~'로 표시할 수도 있다.
pwd : 현재 사용자가 작업하고 있는 폴더를 뜻하는 커맨드
cd : 디렉토리를 이동할 때 사용
cd ~ : 홈디렉토리로 이동
cd / : 루트 디렉토리로 이동
cd .. : 상위 디렉토리로 이동
cd - : 이전에 쓰던 디렉토리로 이동
ls : 현재 디렉토리의 내용들을 보여준다.
ls /bin : bin폴더의 내용들을 보여준다.
ls -a : 모든 파일과 디렉토리를 보여준다.
ls -l : 모든 파일과 소유자 및 권한 등 자세한 정보까지 나온다.
절대경로 : 루트 디렉토리를 기준으로 어떤 파일이나 디렉토리의 고유한 경로를 표시하는것
상대경로 : 현재 자신이 위치해 있는 디렉토리 기준으로 경로를 나타내는 것
현재 디렉토리를 .으로 표시 : ./
상위 디렉토리를 ..으로 표시 : ../
*혹시 디렉토리를 이동하는데, 디렉토리명에 공백이 있다면, 따옴표'', ""로 감싸주어야 한다.
/bin : binaries의 약자인데, 바이너리는 간단히 말해서 컴퓨터가 실행할 수 있는 프로그램을 뜻한다. 커맨드도 결국 어떤 프로그램인데, 커맨드를 입력하면 커맨드에 해당하는 프로그램이 실행되는것이다. 그리고 그 프로그램의 일부는 바로 이 /bin디렉토리안에 있다.
/sbin : /bin과 비슷한데, 관리자 전용 프로그램들이 들어있다.
/home(리눅스) : 사용자들의 홈디렉토리가 있다. 사용자의 홈디렉토리는 사용자의 모든 파일을 저장해 놓은 곳이다.
/usr : usr은 사용자에게 필요한 파일들을 저장하고 있다. /usr안에는 local이라는 디렉토리가 있는데, 이것은 사용자가 직접 설치한 프로그램과 관련된 파일들이 있다.
mkdir : 디렉토리를 만드는 커맨드이고, 아규먼트로 새로 만들 디렉토리의 경로를 주면 된다.
mkdir 경로 폴더명 / mkdir ~/myhome/exampledir 이렇게 myhome디렉토리에 가서 exampledir이라는 폴더를 만들 수 있고, mkdir Sep Aug와 같이 여러 아규먼트를 주어, 여러개의 디렉토리를 만들 수도 있다.
touch : 파일을 만들때 사용하는 커맨드이고, mkdir과 똑같이 아규먼트를 주면 된다.
CLI 텍스트 에디터 Vim
Vim은 아규먼트 없이 주면 파일을 생성하면서 에디터가 열리고, 파일명을 아규먼트로 주면 그 파일을 수정한다.
Vim은 4가지 사용모드가 있다.
일반모드(esc), 입력모드(i), 비주얼모드(v, V), 명령모드(:)
텍스트 입력 : 입력모드(i) → 텍스트 입력
텍스트 한 줄 복사 : 일반 모드 → 복사하고 싶은 줄에 커서 위치 → yy
텍스트 한 줄 잘라내기 : 일반 모드 → 잘라내고 싶은 줄에 커서 위치 → dd
특정 영역 복사 : 비주얼모드(V는 줄단위, v는 글자 단위) → 복사하고 싶은 영역 커서로 설정 → y
특정 영역 잘라내기 : 비주얼모드(V는 줄단위, v는 글자 단위) → 잘라내고 싶은 영역 커서로 설정 → d
텍스트 붙여넣기 : 일반 모드 →붙여넣고 싶은 위치에 커서 위치 → p
파일 저장 : 명령 모드(:) → w + enter
vim 종료 (내용 저장 X) : 명령모드(:) → q! + enter
vim 종료 (내용 저장 O) : 명령모드(:) → wq + enter
cat : 파일을 조회함
less : 파일을 페이지 단위로 나눠서 조회함 (q를 눌러서 종료)
head : 파일의 처음 10줄을 조회
tail : 파일의 마지막 10줄을 조회
mv path1 path2
path1 : 작업할 대상의 경로
path2 : 이동할 목적지 또는 변경할 이름 (목적지가 없다면, 이름이 변경)
mv myhome/exampledir/example.txt helloWorld.txt
→ example.txt파일의 이름이 helloWorld.txt로 변경
하지만 주의사항이 존재한다. -i옵션을 주지않으면, 중복되는 이름일때, 그냥 덮어 씌어지므로 mv커맨드를 사용할땐, -i옵션을 함께 써주는것이 좋다.
rm path
path : 삭제할 파일의 경로나 파일 및 디렉토리 / 아규먼트를 여러개 줄 수 있다.
디렉토리를 지울때는 -r옵션을 사용해야 한다. -f옵션은 묻지도 않고 그냥 지워버리는 옵션이다.
rm -rf exampleDirectory
외부 프로그램을 우분투에서 설치하려면 apt라는 커맨드를 사용해야한다.
sudo apt update를 하려할때, sudo 명령어를 쓰려면 root권한이 필요하다. su - 커맨드로 root계정으로 가서 root계정을 줄 사용자를
usermod -aG sudo 사용자명을 해주고
su - 사용자명 → sudo apt update를 해주면 된다.
설치 : sudo apt install 파일명
제거 : sudo apt remove 파일명
sudo 뒤에 커맨드를 쓰면, 관리자 권한을 가지고 커맨드가 실행된다.
그러면 권한 문제 없이 커맨드를 실행할 수 있게 된다.