유닉스(Unix)커맨드

이찬영·2024년 10월 28일

가상머신이란?
내가 사용하는 컴퓨터 안에 있는 '또 다른 가상의 컴퓨터'라고 생각하면 된다.

WSL

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, bash 그리고 zsh

shell은 쉽게말해 커맨드를 해석해주는 프로그램이다.
아까 date나 cal과 같은 간단한 커맨드를 사용해보았는데, 사실 컴퓨터는 date나 cal같은 단어를 이해하지 못한다. 그래서 이런 커맨드들을 컴퓨터가 이해할 수 있는 형태로 바꿔줘야 하는데, 그게 바로 shell이 하는 역할이다.
shell 종류중 하나가 bash인데, 가장 보편적이라 많은 운영체제에서 기본 shell로 사용된다. (Ubuntu의 기본 쉘이기도 하다.)

TIP

  • 커맨드들의 메뉴얼을 보고싶을땐, 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, head, tail)

cat : 파일을 조회함
less : 파일을 페이지 단위로 나눠서 조회함 (q를 눌러서 종료)
head : 파일의 처음 10줄을 조회
tail : 파일의 마지막 10줄을 조회

디렉토리와 파일 옮기기, 이름 변경하기 (mv)

mv path1 path2
path1 : 작업할 대상의 경로
path2 : 이동할 목적지 또는 변경할 이름 (목적지가 없다면, 이름이 변경)

mv myhome/exampledir/example.txt helloWorld.txt
→ example.txt파일의 이름이 helloWorld.txt로 변경

하지만 주의사항이 존재한다. -i옵션을 주지않으면, 중복되는 이름일때, 그냥 덮어 씌어지므로 mv커맨드를 사용할땐, -i옵션을 함께 써주는것이 좋다.

디렉토리와 파일 삭제하기 : rm

rm path
path : 삭제할 파일의 경로나 파일 및 디렉토리 / 아규먼트를 여러개 줄 수 있다.
디렉토리를 지울때는 -r옵션을 사용해야 한다. -f옵션은 묻지도 않고 그냥 지워버리는 옵션이다.
rm -rf exampleDirectory

apt

외부 프로그램을 우분투에서 설치하려면 apt라는 커맨드를 사용해야한다.
sudo apt update를 하려할때, sudo 명령어를 쓰려면 root권한이 필요하다. su - 커맨드로 root계정으로 가서 root계정을 줄 사용자를
usermod -aG sudo 사용자명을 해주고
su - 사용자명 → sudo apt update를 해주면 된다.

설치 : sudo apt install 파일명
제거 : sudo apt remove 파일명

sudo란?

sudo 뒤에 커맨드를 쓰면, 관리자 권한을 가지고 커맨드가 실행된다.
그러면 권한 문제 없이 커맨드를 실행할 수 있게 된다.

0개의 댓글