→ 오늘날의 macOS는 Unix - BSD - NeXTStep - macOS 순의 역사를 거쳐 탄생한 것.
유닉스 표준에 부합해서 공식적으로 인증을 받으면 Unix-certified, 즉 공식 유닉스가 되고, 만약 이 표준을 인증받지 않았지만, 사용하기에 기능적으로 거의 차이가 없는 정도라면 Unix-like, 유사 유닉스라고 부른다.
터미널은 인풋을 받고, 아웃풋을 출력해 주는 프로그램
shell은 커맨드를 해석해 주는 프로그램
date
나 cal
같은 단어를 이해하지 못한다. 그래서 이런 커맨드들을 컴퓨터가 이해할 수 있는 형태로 바꿔줘야 하는데, 그게 바로 shell이 하는 역할이다. shell이 date
같은 커맨드를 컴퓨터가 이해할 수 있는 형태로 바꿔서 전달해 주면, 컴퓨터가 실제로 커맨드를 '실행'하고 결과를 되돌려 주는 것이다.✔️command-line interface: 커맨드를 입력해서 컴퓨터를 사용하는 환경
✔️터미널: CLI 환경을 이용할 때, 인풋을 받고 아웃풋을 출력해주는 프로그램
✔️커맨드에는 아규먼트와 옵션을 줄 수 있다.
date: 날짜
cal: 달력
커맨드 매뉴얼: man
man [검색할 명령어] → 해당 명령어의 매뉴얼이 나옴.
''
사용
cd 'hello world'
""
사용
cd "hello world"
\
사용
cd hello\ world
이름에 여러 단어를 사용하고 싶을 때는 공백 대신 _
같은 기호를 사용하는게 좋다.
/bin
ls -l /bin
/bin
디렉토리의 내용을 살펴보면, ls
같은 파일들이 보인다. ls
커맨드를 입력하면 /bin
안에 있는 ls
프로그램이 실행된다.
/sbin
sbin은 bin과 비슷한데, 관리자 전용 프로그램들이 있다..
/etc
etc에는 컴퓨터 설정 파일들이 있다. 각종 프로그램의 설정 파일, 관리자 권한 설정 파일 같은 것들이 있다.
/home
또는 /Users
/home
(리눅스) 또는 /Users
(맥 OS) 디렉토리에는 사용자들의 홈 디렉토리가 있다. 사용자의 홈 디렉토리는 사용자의 모든 파일을 저장해 놓는 곳.
/usr
usr은 사용자(user)에게 필요한 파일들을 저장하고 있다. /usr
안에도 각종 binary(프로그램 파일)를 저장하고 있는 bin
디렉토리가 있다.
/bin
에는 컴퓨터가 시작하거나 자신을 수리하기 위해서 꼭 필요한 커맨드들이 있고, /usr/bin
에는 사용자가 필요한 커맨드들이 있다.
local
이라는 디렉토리는 사용자가 직접 설치한 프로그램과 관련된 파일들이 있다.
Linux 루트 디렉토리 구성 - ECE - TUWLAB
✔️pwd: 유닉스에서 현재 경로를 알려줌
✔️~: 홈 디렉토리를 한자리 문자로 표현
✔️ls -l: 파일 종류, 파일 권한, 파일 소유자, 마지막 수정시간, 파일 사이즈 등 여러 추가 정보를 보여줌
✔️ls -a: ‘.’으로 시작하는 숨겨진 파일, 디렉토리를 보여줌.
가상머신을 통해 우분투 설치하기
cpu를 2개로 설정하기
[ VirtualBox ] 버츄얼 박스 우분투 VM에서 '게스트 확장 CD'가 실행되지 않을 때 확장기능 설치하는 방법
which cal
cal 위치가 안나온다면
sudo apt update sudo apt install ncal
vim
파일 경로를 아규먼트로 주면 해당하는 파일을 열거나, 존재하지 않으면 새로 만들어 주기.
vim path/to/file
pwd
(print working directory)현재 디렉토리 (working directory)의 경로를 출력.
cd
(change directory)
cd [PATH]
cd dir1
PATH
경로에 해당하는 디렉토리로 이동.cd
를 하면 사용자의 홈 디렉토리로 이동..
을 사용하면 이전 경로로 돌아감.
cd path/to/foo (foo 디렉토리로 이동)
cd path/to/bar (bar 디렉토리로 이동)
cd - (다시 foo 디렉토리로 이동)
ls
(list)
ls [-al] [PATH]
ls -al dir1
PATH
에 해당하는 디렉토리 / 파일 정보를 보여줌.PATH
아규먼트를 안 주면 현재 디렉토리 정보를 보여줌.a
옵션: 숨겨진 파일을 포함한 모든 파일을 보여줌.l
옵션: long format을 사용해서 더 자세한 정보를 보여줌.mkdir
(make directory)
mkdir PATH1 PATH2 ...
mkdir dir2
touch
(touch file)
touch PATH1 PATH2 ...
touch file1.txt
vim
vim [PATH]
vim file1.txt
cat
(concatenate)
cat PATH1 PATH2 ...
cat file1.txt
less
less PATH
less file1.txt
PATH
에 해당하는 파일을 페이지 단위로 나눠서 보여줌.단축키:
head
head [-n count] PATH
head -n 5 file1.txt
PATH
에 해당하는 파일의 처음 10줄을 출력.n
옵션: 출력되는 줄 개수를 바꿈.tail
tail [-n count] PATH
tail -n 5 file1.txt
PATH
에 해당하는 파일의 마지막 10줄을 출력.n
옵션: 출력되는 줄 개수를 바꿈.mv
(move)
mv [-i] SOURCE_PATH DEST_PATH
mv -i file1.txt file2.txt
mv -i file1.txt dir1
DEST_PATH
) 가 이미 존재하는 디렉토리의 경로일 경우 SOURCE_PATH
에 해당하는 디렉토리/파일을 그 안으로 이동하고, 그렇지 않으면 DEST_PATH
로 이름 변경.i
옵션: 이동/이름 변경을 할 때 똑같은 이름의 디렉토리/파일이 있으면 덮어씌워짐. 확인을 하면서 mv
를 하려면 i
옵션을 사용하면 됨.cp
(copy)
cp [-ri] SOURCE_PATH DEST_PATH
cp -i file1.txt file2.txt
cp -ri dir1 dir2
DEST_PATH
) 가 이미 존재하는 디렉토리의 경로일 경우 SOURCE_PATH
에 해당하는 디렉토리/파일을 그 안으로 복사하고, 그렇지 않으면 DEST_PATH
라는 이름으로 복사.r
옵션: 디렉토리를 복사할 때는 꼭 r
옵션을 써야 한다.i
옵션: 복사할 때 똑같은 이름의 파일이 있으면 덮어씌워진다. 확인을 하면서 cp
를 하려면 i
옵션을 사용하면 됨.rm
(remove)
rm [-rif] PATH1 PATH2 ...
rm file1.txt file2.txt
rm -rf dir1
r
옵션: 디렉토리를 삭제할 때는 꼭 r
옵션을 써야 함.i
옵션: 삭제할 때 각 파일을 정말 지울 것인지 물어봄.f
옵션: 지울 것인지 절대 확인하지 않고 바로 지움.우분투 - apt
맥os - homebrew
sudo
커맨드
sudo command
sudo
뒤에 command
를 쓰면, 관리자 권한을 가지고 command
가 실행된다. 그러면 권한 문제없이 command
를 실행할 수 있다.
sudo ls /path/to/file
sudo cat /path/to/file
sudo apt install mc # Ubuntu 예시
윈도우 파일은 /mnt/c
경로에 있다. /mnt/c
가 윈도우의 C:
드라이브다.
PowerShell: 윈도우 전용 커맨드라인 툴
PowerShell vs cmd(명령 프롬프트)
cmd(명령 프롬프트/Command Prompt): 윈도우 전용 커맨드라인 툴.
Update-Help
PowerShell과 유닉스 커맨드
PowerShell에서는 아래 유닉스 커맨드를 사용할 수 있다:
man
pwd
cd
ls
mkdir
cat
mv
rm
cp
date
clear
Linux commands that work in Powershell by default.
PowerShell에서는 기본적으로 cmdlet이라고 하는 커맨드들을 사용한다.
Action-Object
ls
같은 걸 입력하면 ls
는 Get-ChildItem
이라는 cmdlet을 가리키고 있기 때문에 ls
를 사용할 수 있다 (이럴 때 ls
를 Get-ChildItem
의 alias(에일리어스)라고 함).ls
가 아닌 Get-ChildItem
이 호출되는 것이기 때문에 옵션을 주는 방법과 커맨드의 동작은 조금 다를 수 있다.경로
윈도우에서는 경로를 표시할 때 \
(한국 키보드는 ₩
)를 사용함. PowerShell에서 /
를 입력해도 되지만 프롬프트에 경로를 표시할 때나 자동완성을 활용할 경우 \
가 사용됨.
옵션
cmdlet 옵션은 한 글자가 아닌 전체 단어다 (예: -Recurse
). 유닉스 커맨드처럼 한 글자(예: -r
)로 줄여 쓸 수 있는 옵션들도 있지만 그럴 수 없는 옵션들도 많고, 일일이 외워야 하기 때문에 PowerShell 옵션을 그대로 사용하는 것이 좋다.
man
man
커맨드를 실행하면 aliasing 하고 있는 cmdlet에 대한 도움말을 보여준다.
man ls
더 자세한 정보를 보고 싶다면 -Full
옵션
man -Full ls
ls
PowerShell에서 ls
를 하면 파일/폴더 이름뿐만이 아닌 다양한 정보가 나온다. .
으로 시작하는 파일들도 보임.
유닉스의 ls -al
과 비슷
touch
PowerShell에 touch
라는 alias는 없다. 그래서 파일을 생성할 때는 다른 방법을 사용해야 함.
$null > filename
filename
이름을 가진 빈 파일이 생성된다.
cat
PowerShell의 cat
은 아규먼트를 하나만 받는다. 여러 파일을 아규먼트로 주면 오류가 남.
cat testfile.txt testfile2.txt # 오류
mv
bash/zsh에서 mv
를 했을 때 목적지에 똑같은 이름의 파일/폴더가 있으면 그걸 덮어쓴다. 하지만 PowerShell에서는 파일이 이미 존재한다는 오류가 난다.
mv testfile.txt testfile2.txt # 오류
만약 파일을 덮어쓰고 싶다면 -Force
옵션.
mv -Force testfile.txt testfile2.txt
cp
mv
와 마찬가지로 PowerShell에서는 파일/폴더를 덮어쓰지 않고 오류가 난다. -Force
옵션을 사용하면 파일/폴더를 덮어쓸 수 있다.
그리고 폴더를 복사할 때는 -Recurse
옵션을 사용해야 한다.
cp -Recurse foo bar
rm
폴더를 삭제할 때는 -Recurse
옵션
VSCode의 터미널
PyCharm의 터미널