일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 항해99
- SQL
- 코딩테스트
- 파이썬
- CSS
- Python
- Git
- 개발자취업
- TiL
- 유노코딩
- 중간이들
- 데이터베이스시스템
- 파이썬프로그래밍기초
- 프로그래머스
- node.js
- 코딩테스트준비
- 99클럽
- presignedurl
- HTML
- 방송대
- JavaScript
- nestjs
- 꿀단집
- redis
- Cookie
- 방송대컴퓨터과학과
- 엘리스sw트랙
- aws
- 코드잇
- MySQL
- Today
- Total
배꼽파지 않도록 잘 개발해요
[코드잇] 유닉스 커맨드 본문
◆ 유닉스 커맨드 시작하기
◆ 디렉토리와 파일 다루기
◆ 외부 프로그램 설치하기
◆ 윈도우 유저를 위한 커맨드라인 팁
유닉스 커맨드 시작하기
유닉스 커맨드란?
· GUI (Graphical User Interface) : 화면과 마우스를 통해 사용하는 방식
· CLI (Command Line Interface) : 검은화면에서 명령어를 통해 사용하는 방식, 커맨드 라인
→ 웹 개발 환경 설정과 서버 실행, 라이브러리 다운로드 및 설치, 협업시 코드 관리
유닉스 운영체제
· 1970년대 초반에 개발된 운영체제
· 쉽게 수정해서 다른 컴퓨터에 적용할 수 있어서 큰 인기를 끌었음.
· 유닉스를 기반으로 하는 다양한 운영체제 만들어짐.
터미널 사용해 보기
- airytariy 사용자가 DESKTOP-3LJ03PJ에 로그인했다는 의미임.
- ~ : 사용자의 홈 폴더
- $ : 프롬프트의 끝을 알리는 기호, 커맨드를 입력받을 준비가 되었다는 의미임.
cal
which cal
sudo apt install ncal
터미널 관련 용어
- 터미널 : 인풋을 받고, 아웃풋을 출력해주는 프로그램
- shell : 커맨드를 해석해주는 프로그램
- bash : shell의 종류 중 하나 (Bourne again shell)
- zsh : . macOS는 10.15 Catalina 이전 버전에는 bash를 기본으로 썼었는데, 10.15 버전 이후부터는 zsh(Z shell)을 기본으로 쓰기 시작함.
커맨드 매뉴얼: man
man cal
SYNOPSIS
쓸 수 있는 옵션과 아규먼트를 정리
· 옵션(option) : 커맨드를 정확히 어떻게 실행할 것인지 정해줌. (대시 O)
· 아규먼트(argument) : 커맨드를 어느 대상에 대해 실행할 것인지 정함. (대시 X)
- 대괄호 O : 옵셔널
- 대괄호 X : 필수
[[month] year]
아규먼트를 1개만 입력하면 month가 아닌 year에 대한 아규먼트로 인식됨.
ex. cal 3 : 3년에 대한 달력
cal -B 3 -A 3
A : 현재 달 이후 N개
B : 현재 달 이전 N개
→ 지금으로부터 3개월 전과 3개월 후의 달력을 출력
터미널 사용 꿀팁
- 위쪽 방향키 : 이전에 실행했던 커맨드가 순서대로 입력됨.
- Ctrl + A : 줄 가장 앞부분으로 이동
Ctrl + E : 줄 가장 끝부분으로 커서가 이동 - Alt + ← : 이전 단어로 이동
Alt + → : 다음 단어로 이동 - Ctrl + C : 실행취소
- clear : 화면에 있는 내용 지우기 clear
이전에 사용했던 커맨드 히스토리는 남아 있음. - Tap : 작성하고 있는 커맨드나 아규먼트를 자동완성해줌.
명령어 'uncompress' 다 치지말고 'unc'까지 치고 tab키 누르면 자동완성됨.
un까지 치고 tab키 치면 un으로 시작하는 모든 커맨드가 나옴.
폴더 이름도 첫부분만 입력하고 tab키로 자동완성할 수 있음.
디렉토리와 파일 다루기
유닉스 폴더 구조와 파일 경로
- 최상위 디렉토리 : root
- 상위(부모) 디렉토리 / 하위(자식) 디렉토리
- 사용자의 홈 디렉토리 :
- Linux는 home, macOS는 users
- 여러 사용자의 계정이 있을 수 있음.
- 각종 문서, 바탕화면 파일, 다운로드 파일이 들어 있음.
파일경로
- 디렉토리나 폴더의 위치를 문자열로 표기할 줄 알아야 함.
- 루트 : /
- 현재 사용자의 홈 디렉토리 : ~
ex. home/taeho/Documents → ~/Documnents
디렉토리와 파일 둘러보기: pwd, cd, ls
pwd | print Working directory 현재 위치해 있는 디렉토리(working directory)를 확인하는 명령어 기본적으로 터미널 열면 홈 디렉토리에서 시작 |
cd | change directory 디렉토리 위치 변경 · cd / : 루트 디렉토리로 이동 · cd : 홈 디렉토리로 이동 (아규먼트 없는 경우) · cd - : 이전에 있던 곳으로 이동 |
ls | list 디렉토리 내용을 리스트로 보여줌. · ls (경로) : 경로 안에 해당하는 내용물을 리스트로 보여줌. · ls /bin : bin 디렉토리 안의 내용물을 보여줌. (cd로 경로 이동하여 ls 지정할 수도 있음) |
파일이나 디렉토리 이름에 공백이 있을 경우
· 공백은 아규먼트를 구분하는 단위로 인식됨.
· 이름에 여러 단어를 사용하고 싶을 때는 공백 대신 '_'같은 기호를 사용
· 작은따옴표, 큰따옴표, 역슬래시를 사용함.
cd 'hello world'
cd "hello world"
cd hello\ world
ls 옵션들
a옵션 (all) |
숨겨진 파일들을 포함한 모든 파일과 디렉토리를 보여줌. 유닉스 파일 시스템에는 이름이 .으로 시작하는 숨겨진 파일들이 있음. ls나 일반 GUI 툴로 보면 안 보임. 숨겨진 파일은 뒤에 확장자가 없음 (txt, py, jpeg 등) |
l옵션 (long format) |
파일/디렉토리에 관한 여러 추가 정보를 보여줌. |
ls -al
숨겨진 파일과 파일 정보가 모두 출력됨
ls -l로 출력되는 파일 정보
- total : 디렉토리 개수가 아니라 공간을 얼마나 차지하고 있는지 나타냄
파일종류/권한 | 연결된 링크의 개수 | 파일 소유자 | 소유자가 속한 그룹 |
파일용량 (byte) |
파일의 마지막 수정날짜와 시간 |
파일 이름 |
파일종류/권한
- 맨 앞에 d 혹은 - : d는 디렉토리, -는 일반 파일
- r : 읽기, w : 쓰기, x : 실행
- 소유자 / 그룹 / 기타 사용자
drw-r--r--
소유자는 읽기와 쓰기, 그룹은 읽기, 기타 사용자는 읽기만 가능한 디렉토리
chmod로 권한 설정
chmod +(파일이름)
chmod -(파일이름)
chmod 644 file.txt
6 / 4 / 4 ---> rw-/r--/r--
3자리 8진수로 계산 가능함.
절대 경로와 상대 경로
경로를 아규먼트로 받는 모든 커맨드에는 절대경로, 상대경로 모두 지정 가능함.
절대 경로
· 루트 디렉토리를 기준으로 어떤 파일이나 디렉토리의 고유한 경로를 표시하는 것
· 경로가 길어질수록 작성하기 매우 불편함.
· 주로 현재 디렉토리와 멀리 있는 디렉토리를 작성해야하는 경우 사용함.
상대경로
· 현재 자신이 위치해 있는 디렉토리(working directory)를 기준으로 경로를 나타내는 것
· 현재 디렉토리를 '.'으로 표시함.
cd /home/codeit/Documents/PycharmProjects/django/django_coplate
cd ./django_coplate
· 상대경로를 사용할 때 앞에 './'은 생략 가능함
cd ./Documents/PycharmProjects/
cd Documnets/PycharmProjects
· 상위 디렉토리는 '..'으로 표시함
cd .. => 한 단계 상위 폴더로 이동
· 여러 상위 경로로 이동해야할 경우에는 절대경로를 쓰는 것이 나음.
cd ../../../../Pictures
...????
· 앞에 생략하면 루트 디렉토리임.
ls ./dir1 => 현재 디렉토리 안에 있는 dir1 디렉토리
ls /dir1 => 루트 디렉토리 안에 있는 dir1 디렉토리
루트 디렉토리 안의 디렉토리
/bin | binaries 컴퓨터가 실행할 수 있는 프로그램 만약 ls를 입력하면 /bin 안에 있는 ls 프로그램이 실행되는 것임. |
/sbin | bin과 비슷하고, 관리자 전용 프로그램들이 있음. |
/etc | 컴퓨터 설정 파일들이 있음. |
/home (리눅스) /Users (맥 OS) |
사용자들의 홈 디렉토리가 있음. 홈 디렉토리 : 사용자의 모든 파일을 저장해 놓는 곳 |
/usr | 사용자에게 필요한 파일들을 저장 /usr 안의 local : 사용자가 직접 설치한 프로그램과 관련된 파일들 |
https://www.tuwlab.com/ece/11309
Linux 루트 디렉토리 구성 - ECE - TUWLAB
제대로 서버를 운영해 보겠다고 처음 리눅스를 설치하고 난 직후, 명령어 연습을 하고 있을 때 유독 눈에 거슬리던것들이 있었다. 바로 루트 디렉토리(/)에 있던 bin, dev, var, ... 이런 디렉토리들
www.tuwlab.com
https://averagelinuxuser.com/linux-root-folders-explained/
Linux Root Folders Explained
In this post, you will finally get the Linux root folders explained. You will learn how these folders are used by your Linux system and how you can use them.
averagelinuxuser.com
mkdir, touch
mkdir
· 디렉토리 생성
mkdir (절대 혹은 상대경로)
홈 디렉토리 안 unix_practice라는 디렉토리를 만들 때
mkdir ~/unix_practice ---> 절대경로
mkdir unix_practice ---> 상대경로 (./생략)
· 여러 가지 아규먼트를 사용하여 여러 디렉토리를 생성함
mkdir Jul Aug
touch
· 파일의 마지막 접근시간이나 수정시간을 업데이트하는 명령어
· 파일이 없으면 파일 생성
touch (경로)
Sep 디렉토리 안으로 이동하여 finances.txt와 performance.txt를 생성함.
cd Sep
touch finances.txt performance.txt
CLI 텍스트 에디터 vim
vim : 키보드로만 실행하는 텍스트 편집기. 엄청 많은 기능과 단축키가 있음
vim을 실행하여 파일을 생성할 때
vim
해당 경로에 있는 파일을 수정할 때
파일이 없는 경우에는 새로운 파일을 생성함.
vim (경로)
vim의 4개 모드
· vim을 처음 열면 일반모드로 실행됨. (글자 입력하려고 하면 내용이 안 떠도 당황 금지)
기능 | 모드 전환하는 단축키 | |
일반 모드 (Normal Mode) | 커서 이동, 텍스트 붙여넣기, 작업 취소 | i |
입력 모드 (Insert Mode) | 텍스트 입력 | v, V |
비주얼 모드 (Visual Mode) | 텍스트 블록 지정, 텍스트 복사 | : |
명령 모드 (Command Mode) | 내용 저장, Vim 종 | ESC (키) |
내용을 복사/잘라내기/붙여넣기
· 복사하고 싶은 곳 맨 앞에 커서두고, 비주얼모드로 전환
- V : 줄 단위로 복사
- v : 글자 단위로 복사
· 복사 : y, 잘라내기 : d, 붙여넣기 : p
한줄씩 복사/잘라내기/붙여넣기
· 입력모드 상태에서 모드 전환없이
· 복사 : yy, 잘라내기 : dd, 붙여넣기 : p
파일 저장 및 종료
· 커맨드 모드 (:)로 전환 후 실행
파일 저장 (처음 생성하는 파일은 저장하지 않으면 오류가 남) |
:w :w hello_world.txt 입력 후 ENTER |
vim에서 나오기 | :q |
저장과 동시에 종료 (수정할 때는 파일명 안 붙여도 정상 종료됨) |
:wq |
수정사항을 저장하지 않고 종료 | :q! |
현재 디렉토리 내에 있는 hello_world.txt를 vim으로 열면 파일을 수정할 수 있음.
vim hello_world.txt
hello_world.txt가 있는 디렉토리 내에서 vim으로 hello_world.txt라는 파일을 생성하려고 하면 오류가 남.
파일 내용 살펴보기: cat, less, head, tail
cat
· concatenate (이어붙이다)
· 파일의 내용을 간단히 살펴볼 때 사용하는 커맨드
· 내용 전체를 쭉 출력해줌
bohemian_rhapsody.txt와 killer_queen.txt가 합쳐져서 출력됨.
cat bohemian_rhapsody.txt killer_queen.txt
less
파일 내용을 페이지 단위로 나눠서 보여줌
- 위 아래 방향키 : 한줄씩 이동
- space 혹은 f : 다음 페이지
- b : 이전페이지
- 대문자 G : 마지막
- 소문자 g : 처음 페이지
- q : 종료
head와 tail
- head : 처음 10줄 출력
- tail : 파일 마지막 10줄 출력
출력할 줄 개수 5개로 변경
head -n 5 파일명
출력할 줄 개수 3개로 변경
tail -n 3 파일명
디렉토리와 파일 옮기기, 이름 변경하기: mv
mv path1 path2
- path1 : 작업할 대상의 경로
- path2 : 이동할 목적지 또는 변경할 이름
- 이미 존재하는 경로 : path2 안으로 이동
- 존재하지 않는 경로 : 이름이 변경됨
파일 이름 변경
mv bohemian_rhapsody.txt bohemian_rhapsody2.txt
현재 Aug, Jul, Oct가 있는 상태
mv Jul Aug
Jul이 Aug안으로 들어가게 됨.
그럼 Jul을 꺼내오려면?
mv Aug/Jul .
Aug안에 있는 Jul을 현재 디렉토리로 옮긴다
mv를 사용할 때 주의할 점
· 똑같은 이름의 파일이 목적지에 있을 경우 그걸 덮어씀.
· GUI에서는 덮어쓸 건지 물어보는데 mv를 쓰면 경고문구 없이 그냥 덮어씀.
· 이를 예방하려면 -i 옵션을 사용하면 됨.
mv text1.txt text2.txt
둘 다 존재하는 파일로, text1.txt 파일 이름이 text2.txt로 변경되면서 기존의 text2.txt 파일 내용을 덮어쓰게 됨.
이런 현상을 방지하고 싶으면 i옵션(interactive)을 쓰면 됨.
충돌이 있으면 사용자에게 어떻게 할 건지 물어봄.
echo
내용 입력 후 파일 생성하는 명령어
echo "(입력할 내용)" > 파일명.txt
echo "Hello, world!" > codeit.txt
디렉토리와 파일 복사 붙여넣기: cp
cp path1 path2
- path1 : 복사할 대상의 경로
- path2 : 복사할 위치
- 이미 존재하는 경로 : 그 안으로 복사됨.
- 존재하지 않는 경로 : path2 이름을 가진 파일 또는 디렉토리 생성
목적지에 똑같은 파일이 있으면 그걸 덮어씀.
i옵션으로 이를 방지할 수 있음.
cp -i finances.txt ../Aug
파일 복사
디렉토리 복사
cp -r Jul Jul_copy
cp -r에서 r은 recursive (재귀적)
디렉토리와 파일 삭제하기: rm
경로에 해당하는 파일/디렉토리들을 지워주는 명령어
rm path path2 ....
path : 삭제할 파일 또는 디렉토리 경로
- r 옵션 : 디렉토리를 삭제할 때 붙여야 함.
- i 옵션 : 복사할 때 각 파일을 정말 지울 것인지 하나씩 물어봄.
- f 옵션 : 지울 것인지 절대 확인하지 않고 바로 지움. (읽기전용 파일 포함)
외부 프로그램 설치하기
우분투에서는 apt라는 커맨드
맥 OS에서는 homebrew라는 커맨드
apt update
설치할 수 있는 프로그램에 대한 최신 정보를 인터넷에서 가져와서 저장해줌.
프로그램을 설치할 때마다 꼭 해줘야함.
sudo
관리자 권한을 일시적으로 갖게해주는 커맨드
처음 실행하면 현재 계정의 비밀번호를 물어보는데, 한 번 입력하면 10분~15분 정도는 다시 입력하지 않아도 됨.
mc
mc는 ls처럼 현재 디렉토리 내용을 보여줌.
'/'는 디렉토리 나머지는 일반파일
하단의 번호는 F1, F2 키를 누르면 되고, ESC를 누르면 각 기능이 종료됨.
F10을 누르면 mc가 종료됨.
윈도우 유저를 위한 커맨드라인 팁
WSL (Window Systems for Linux)
우분투에서 윈도우 안에 존재하는 하위 시스템인 WSL를 이용하여 실제 윈도우 파일에 접근할 수 있음.
cd /mnt/c
이렇게 리눅스 환경에서 윈도우 시스템의 파일에 접근하는 것이 가능함.
윈도우에서 리눅스 파일에 접근하는 것도 가능하지만, 윈도우툴로 리눅스 파일 수정시 손상될 수 있어서 권장되지 않음.
PowerShell
- 윈도우 전용 커맨드라인 툴
- cmd는 PowerShell의 축소 버전
도움말 업데이트하는 명령어
Update-Help
PowerShell에서 지원하는 유닉스 커맨드
- man, pwd, cd, ls, mkdir, cat, mv, rm, cp, date, clear
https://dev.to/heytimapple/linux-commands-that-work-in-powershell-by-default-17gd
Linux commands that work in Powershell by default.
Some people may not realize there are a lot of Linux commands that work within PowerShell. I thought...
dev.to
유닉스 커맨드와의 차이점
· 경로 '/ '대신 '\'을 사용함. ('/'을 사용해도 되긴 함.)
· 옵션 cmdlet 옵션은 한 글자가 아닌 전체 단어 (-Recursive)
man | man ls : aliasing 하고 있는 cmdlet에 대한 도움말을 보여줌. man -Full ls : 자세한 정보 |
ls | 유닉스의 ls -al과 같은 결과가 나옴. '.' 으로 시작하는 파일도 보임. |
touch | PowerShell에서 사용 불가능함. $null > filename : filename 이름을 가진 빈 파일이 생성됨. |
cat | 아규먼트를 하나만 받을 수 있음. · cat testfile.txt testfile2.txt # 오류 |
mv | 목적지에 똑같은 이름의 파일이나 폴더가 있으면 오류가 남. -Force 옵션을 사용하면 덮어쓸 수 있음. · mv -Force testfile.txt testfile2.txt # 강제 실행 |
cp | 목적지에 똑같은 이름의 파일이나 폴더가 있으면 오류가 남. -Force 옵션을 사용하면 덮어쓸 수 있음. · cp -Recurse foo bar |
rm | 폴더 삭제시 -Recurse 옵션 사용 |
우분투 계정 비밀번호 잃어버렸을 때
WSL user password 초기화하기.
wsl을 처음 실행하면, 패스워드를 지정하게 되는데, 사실 사용할일이 별로 없다보니, 잊기 쉽습니다. wsl 패스워드를 잊었을 때, 복구하는 방법입니다. wsl distro는 각각의 리눅스 사용자 계정을 관
bitlog.tistory.com
'코드잇 Codeit > CS / 기타' 카테고리의 다른 글
[코드잇] Git (0) | 2024.07.08 |
---|---|
[코드잇] 웹 API 디자인 (0) | 2024.07.04 |
[코드잇] 정규 표현식 (0) | 2024.01.30 |
[코드잇] 챗GPT 활용하기 - 강의 내용 요약 및 후기 (8) | 2023.05.31 |
[코드잇] 프로그래밍 오버뷰 (프로그래밍 분야와 학습 가이드) (0) | 2023.04.08 |