π μ€λ λ°°μ΄ λ΄μ©
- CLI κΈ°λ³Έ λͺ λ Ήμ΄
- ν¨ν€μ§μ ν¨ν€μ§ 맀λμ
- μ¬μ© κΆν
- νκ²½λ³μ
π CLI κΈ°λ³Έ λͺ λ Ήμ΄ - νμ΅λͺ©ν
- 리λ μ€ ν°λ―Έλμ μ€νν μ μλ€.
- CLIλ₯Ό μ΄μ©ν μμ
κ³Ό GUIλ₯Ό μ΄μ©ν μμ
μ΄ λμΌν¨μ μ΄ν΄ν μ μλ€.
- GUIμ λ³κ²½μ¬νμ CLIλ‘ νμΈν μ μλ€.
- CLIμ λ³κ²½μ¬νμ GUIλ‘ νμΈν μ μλ€.
- 리λ
μ€ ν°λ―Έλμμ κΈ°λ³Έμ μΈ λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν μ μλ€.
- pwd, mkdir, ls, open (macOS), cd, touch, cat, rm, mv, cp, sudo
- λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν λ, λ±μ₯νλ ν€μλμ λν΄ μ΄ν΄ν μ μλ€.
- /: λ£¨νΈ λλ ν 리
- ~: ν λλ ν 리
- μ λ κ²½λ‘μ μλ κ²½λ‘μ μ°¨μ΄λ₯Ό μ΄ν΄ν μ μλ€.
- μ λ κ²½λ‘μ μμμ΄ λ£¨νΈ λλ ν 리(/)μΈ κ²μ μ΄ν΄ν μ μλ€.
- μλ κ²½λ‘μ μμμ΄ νμ¬ λλ ν 리(.)μΈ κ²μ μ΄ν΄ν μ μλ€.
- ν μ€νΈ μλν° nanoλ₯Ό μ΄μ©ν΄ νμΌμ μμ νκ³ , μ μ₯ν μ μλ€.
π CLI (Command-Line Interface)
- μ λ ₯νλ κΈμμ μΆλ ₯νλ κΈμλ‘ μ»΄ν¨ν°μ μν΅
- μ) ν°λ―Έλ (Terminal)
ν둬ννΈ (Prompt): ν€λ³΄λμ μ λ ₯μ νμΈνκ³ νΈμ§ν μ μλ ν μ€μ 곡κ°
π CLI κΈ°λ³Έ λͺ λ Ήμ΄
- pwd: print working directory, νμ¬ μμ μ€μΈ ν΄λ μμΉ μΆλ ₯
- mkdir: make directories, ν΄λ μμ±
- mkdir [ν΄λ μ΄λ¦]
- ls: list, νΉμ ν΄λμ ν¬ν¨λ νμΌ/νμ ν΄λμ 리μ€νΈ μΆλ ₯
- ls, ls -l, ls -a
- ls -al or ls -la or ll
- -a: all, μ¨κΉ ν΄λ/νμΌ ν¬ν¨
- -l: ν΄λ/νμΌ ν¬λ§· μ λΆ νν
- cd: change directory, ν΄λ μ§μ
- cd [ν΄λ κ²½λ‘]
- touch: νμΌ μμ±
- touch [νμΌ μ΄λ¦]
- echo: echo λ€μ λ΄μ©μ νλ©΄μ μΆλ ₯
- >: μ€ν κ²°κ³Όλ₯Ό νμΌλ‘ μ μ₯
- echo [λ¬Έμμ΄] > [νμΌ μ΄λ¦]
- cat: νμΌμ λ΄μ© μΆλ ₯
- cat [νμΌ μ΄λ¦]
- rm: remove, ν΄λ/νμΌ μμ
- rm [νμΌ μ΄λ¦]
- rm -rf [ν΄λ μ΄λ¦]
- -r: recursive, ν΄λλ₯Ό μμ ν λ μ¬μ©
- -f: forced, μ§λ¬Έμ λ°μ§ μμ
- mv: move, ν΄λ/νμΌ μ΄λ, ν΄λ/νμΌ μ΄λ¦ λ³κ²½
- mv [ν΄λ/νμΌ μ΄λ¦] [ν΄λ/νμΌ μ΄λ¦]
- cp: copy, ν΄λ/νμΌ λ³΅μ¬
- cp [νμΌ μ΄λ¦] [νμΌ μ΄λ¦]
- cp -r [ν΄λ μ΄λ¦] [ν΄λ μ΄λ¦]
π κ΄λ¦¬μ κΆνκ³Ό κ²½λ‘
π κ΄λ¦¬μ κΆν
sudo: κ΄λ¦¬μ κΆνμ νλνλ λͺ λ Ήμ΄, λͺ λ Ήμ΄ μμ μ¬μ©
- sudo mkdir [ν΄λ μ΄λ¦]
π κ²½λ‘
νμ¬ ν΄λ: .
μμ ν΄λ: ..
λ£¨νΈ ν΄λ: /
μ¬μ©μ ν΄λ
- ~
- /home/[μ μ μ΄λ¦] (ubuntu)
- /Users/[μ μ μ΄λ¦] (macOS)
μ λ κ²½λ‘: /home/[μ μ μ΄λ¦]/helloWorld/hello/
μλ κ²½λ‘
- ./hello/
- ../../[μ μ μ΄λ¦]/helloWorld/hello/
π ν μ€νΈ μλν° nano
- nano [νμΌ μ΄λ¦]
- nano
^O: Ctrl + O, νμΌ μ μ₯
^X: Ctrl + X, νμΌ λ«κΈ°
alt + /: 맨 μλ μ΄λ
π ν¨ν€μ§μ ν¨ν€μ§ 맀λμ - νμ΅λͺ©ν
- ν¨ν€μ§μ ν¨ν€μ§ 맀λμ νμμ±μ μ΄ν΄ν μ μλ€.
- κ° μ΄μ체μ μ λ§λ ν¨ν€μ§ 맀λμ λ₯Ό μ¬μ©ν μ μλ€.
- MacOS μ΄μ체μ μμ ν°λ―Έλμ ν΅ν΄ Homebrew ν¨ν€μ§ 맀λμ λ₯Ό μ€μΉνκ³ ν¨ν€μ§λ₯Ό κ΄λ¦¬νλ λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν μ μλ€.
- brew, update, outdated, upgrade, info, install, list, uninstall
- Linux Ubuntu μ΄μ체μ μμ μ¬μ©νλ apt ν¨ν€μ§ 맀λμ μ λν΄ μκ³ , λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ ν¨ν€μ§λ₯Ό κ΄λ¦¬ν μ μλ€.
- apt, update, list --upgradable, upgrade, show, install, list --installed, remove, search
- MacOS μ΄μ체μ μμ ν°λ―Έλμ ν΅ν΄ Homebrew ν¨ν€μ§ 맀λμ λ₯Ό μ€μΉνκ³ ν¨ν€μ§λ₯Ό κ΄λ¦¬νλ λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν μ μλ€.
π Ubuntu ν¨ν€μ§ 맀λμ - 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 [ν¨ν€μ§ μ΄λ¦]: ν¨ν€μ§ μμ
π wget
URLμ ν΅ν΄ νμΌμ λ€μ΄λ‘λνλ νλ‘κ·Έλ¨
sudo apt install wget
wget -O [νμΌ μ΄λ¦] [λ§ν¬]
π μ¬μ© κΆν - νμ΅ λͺ©ν
- μ¬μ© κΆνκ³Ό μμ μμ λν΄ μ΄ν΄νκ³ , μ¬μ© κΆνμ λ³κ²½ν μ μλ€.
- νμΌμ μμ μμ νμΌμ μ μ©λ μ¬μ© κΆνμ νμΈνκ³ μ΄ν΄ν μ μλ€. ls -l
- νμΌμ μ μ©λ μ¬μ© κΆνμ λ³κ²½ν μ μλ€. chmod
π μ¬μ© κΆν
ls -alμ΄λ llμ μ λ ₯νλ©΄ μ μΌ μΌμͺ½μ drwxr-xr-x, -rw-r--r-- λ± νμΌ νμ κ³Ό κΆνμ΄ μΆλ ₯λλ€.
맨 μμ΄ dλ‘ ννλλ€λ©΄ ν΄λλΌλ μλ―Έμ΄κ³ -λ‘ ννλλ€λ©΄ ν΄λκ° μλλΌλ μλ―Έμ΄λ€.
μ΄ν μνλ²³μΌλ‘ ννλλ λΆλΆμ κΆνμ΄ μλ€λ λ»μ΄κ³ -λ‘ ννλλ λΆλΆμ κΆνμ΄ μλ€λ λ»μ΄λ€.
π User, Group, Other
user: νμΌμ μμ μ, κΈ°λ³Έμ μΌλ‘ νμΌμ λ§λ μ¬λμ΄ μμ μκ° λλ€.
group: μ¬λ¬ userκ° ν¬ν¨λ μ μλ€. κ·Έλ£Ήμ μν userλ group μ‘μΈμ€ κΆνμ λΆμ¬λ°λλ€.
other: νμΌμ μ‘μΈμ€ κΆνμ΄ μλ λ€λ₯Έ user, global κΆν
π chmod
ν΄λ/νμΌμ μμ μμ΄κ±°λ sudoλ₯Ό μ΄μ©νλ©΄ chmod λͺ λ Ήμ΄λ‘ ν΄λ/νμΌμ κΆνμ λ³κ²½ν μ μλ€.
chmodλ‘ κΆνμ λ³κ²½νλ λ°©μμ Symbolic methodμ Absolute form λκ°μ§κ° μλ€.
π Symbolic method
μ‘μΈμ€ ν΄λμ€, μ°μ°μ, μ‘μΈμ€ νμ μΌλ‘ ꡬλΆνλ€.
Access Class | Operator | Access Type |
u (user) | + (add access) | r (read) |
g (group) | - (remove access) | w (write) |
o (other) | = (set exact access) | x (execute) |
a (all: u, g, o) |
chmod g-r filename # removes read permission from group
chmod g+r filename # adds read permission to group
chmod g-w filename # removes write permission from group
chmod g+w filename # adds write permission to group
chmod g-x filename # removes execute permission from group
chmod g+x filename # adds execute permission to group
chmod o-r filename # removes read permission from other
chmod o+r filename # adds read permission to other
chmod o-w filename # removes write permission from other
chmod o+w filename # adds write permission to other
chmod o-x filename # removes execute permission from other
chmod o+x filename # adds execute permission to other
chmod u+x filename # adds execute permission to user
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------
π Absolute form
μ«μ 7κΉμ§ λνλ΄λ 3 bitsμ ν©μΌλ‘ νκΈ°
Permission | Number |
Read (r) | 4 |
Write (w) | 2 |
Execute (x) | 1 |
# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 hello.java # -rwxr--r--
# | Sum | rwx | Permission |
7 | 4(r) + 2(w) + 1(x) | rwx | read, write, execute |
6 | 4(r) + 2(w) + 0(-) | rw- | read, write |
5 | 4(r) + 0(-) + 1(x) | r-x | read, execute |
4 | 4(r) + 0(-) + 0(-) | r-- | read only |
3 | 0(-) + 2(w) + 1(x) | -wx | write, execute |
2 | 0(-) + 2(w) + 0(-) | -w- | write only |
1 | 0(-) + 0(-) + 1(x) | --x | execute only |
0 | 0(-) + 0(-) + 0(-) | --- | none |
π νκ²½λ³μ - νμ΅λͺ©ν
- νκ²½λ³μκ° λ¬΄μμΈμ§ μ΄ν΄νλ€.
- νκ²½λ³μλ₯Ό μ μ¬μ©νλμ§ μ΄ν΄νλ€.
- μ μ λ° μ§μ νκ²½λ³μμ μ°¨μ΄λ₯Ό μ΄ν΄νλ€.
- νκ²½λ³μλ₯Ό μμμ μΌλ‘ μ μ©ν μ μλ€.
- νκ²½λ³μλ₯Ό μꡬμ μΌλ‘ μ μ©ν μ μλ€.
- νκ²½λ³μμ κ°λ³κ°μ νμΈν μ μλ€.
- νκ²½λ³μλ€μ λͺ©λ‘μ νμΈν μ μλ€.
π νκ²½λ³μ
νλ‘μΈμ€κ° μ»΄ν¨ν°μμ λμνλ λ°©μμ μν₯μ λ―ΈμΉλ λμ μΈ κ°λ€μ λͺ¨μ - μν€λ°±κ³Ό
π νκ²½λ³μ μμ μ μ©
π μ§μ νκ²½λ³μ
hello=codestates
π μ μ νκ²½λ³μ
export urclass="is good"
export bad_example=this is bad example
λ±νΈ μλ€μ κ³΅λ°±μ΄ μμ΄μΌ νλ€.
π νκ²½λ³μμ κ°λ³ κ° νμΈ
echo $hello # codestate
echo $urclass # is good
echo $bad_example # this
π νκ²½λ³μ μꡬ μ μ©
π μ§μ νκ²½λ³μ μꡬ μ μ©
ν λλ ν 리(~)μ .zshrc νμΌμ΄λ .bashrc νμΌ λ§μ§λ§ μ€μ μΆκ°
cd ~ # ν λλ ν λ¦¬λ‘ μ΄λ
nano .zshrc
nano .bashrc
export [μ§μ νκ²½λ³μ μ΄λ¦]="[κ°]" # .zshrc or .bashrc νμΌ λ§μ§λ§ μ€μ μΆκ°
source .zshrc # λ³κ²½ λ΄μ© μ μ©
source .bashrc # λ³κ²½ λ΄μ© μ μ©
echo $[μ§μ νκ²½λ³μ μ΄λ¦] # νκ²½λ³μ κ° μΆλ ₯
π μ μ νκ²½λ³μ μꡬ μ μ©
/etc/profile νμΌ λ§μ§λ§ μ€μ μΆκ°
sudo chmod 777 /etc/profile # κΆν λ³κ²½
nano /etc/profile
export [μ μ νκ²½λ³μ μ΄λ¦]="[κ°]" # /etc/profile νμΌ λ§μ§λ§ μ€μ μΆκ°
source /etc/profile # λ³κ²½ λ΄μ© μ μ©
echo $[μ μ νκ²½λ³μ μ΄λ¦] # νκ²½λ³μ κ° μΆλ ₯