๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“SUBJECT/๐Ÿ“š์‹œ์Šคํ…œํ”„๋กœ๊ทธ๋ž˜๋ฐ

[์‹œ์Šคํ…œํ”„๋กœ๊ทธ๋ž˜๋ฐ/Linux] 1-3. Linux Shell & Basic Commands

by Yun Je 2020. 5. 5.

1. Shell?

 Shell์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ์šด์˜์ฒด์ œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ค€ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค ์ปค๋„์€ ์œ ์ €๊ฐ€ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ธํ„ฐํŽ˜์ด์‹ฑ ํ•˜๊ธฐ ์œ„ํ•ด์„œ system call์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด system call์€ functional level์—์„œ์˜ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ €๊ฐ€ ์ด๋ฅผ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ๋ช…๋ น์–ด ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ shell์ž…๋‹ˆ๋‹ค. 

 

shell์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 - ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ command line์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ์Œ

 - ์šด์˜์ฒด์ œ ์•ˆ์— ์žˆ๋Š” file, process๋“ค์„ ๊ด€๋ฆฌ

 

2. Commonly Used shells

 ๋ฆฌ๋ˆ…์Šค๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ shell ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 

System utility๋“ค์€ bin ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”๋ฐ, shell ๊ด€๋ จํ•œ utility๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 - /bin/sh     : The Bourne Shell / POSIX shell

 - /bin/csh    : C shell

 - /bin/tcsh   : Enhanced C Shell

 - /bin/ksh    : Korn shell

 - /bin/bash  : Free ksh clone

 

shell๋„ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด๊ธฐ ๋•Œ๋ฌธ์— shell์„ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋”ฐ๋ผ์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” shell์€ bash์ž…๋‹ˆ๋‹ค. 

 

shell์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ์ž…๋ ฅ๋ฐ›์€ command๋ฅผ ํŒŒ์‹ฑ ํ•ด์„œ(๋ถ„์„ํ•ด์„œ) ๋ช…๋ น์–ด๋ฅผ ์•Œ์•„๋‚ธ ํ›„์— ์ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ์ปค๋„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. 

while(read command line from user) {
	parse the command line
	execute the command
}

 

3. Shell Interective Use

 ๋ฆฌ๋ˆ…์Šค์— ๋กœ๊ทธ์ธ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, shell ํ”„๋กœ๊ทธ๋žจ์€ ๋ถ€ํŒ…๊ณผ ๋™์‹œ์— ์‹คํ–‰์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ด์„œ๋„ shell๋กœ ๊ณ„์†(interectively)ํ•ด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 - ์‚ฌ์šฉํ•œ ๋ช…๋ น์–ด์˜ history ํ™•์ธ ๊ฐ€๋Šฅ

 - command line editing

 - ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ file๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Œ (tab completion support)

 - command expansion (๋‹จ์–ด ํ•˜๋‚˜๋งŒ ์น˜๊ณ  tab ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ๋‹จ์–ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์—ฌ ํ™•์ธ ๊ฐ€๋Šฅ)

 - key bindings

 - spelling correction

 - job control

 

4. simple commands

 shell์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„๋Š” 'command(๋ช…๋ น์–ด)'์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋Š” ํ•œ ๋‹จ์–ด๋กœ ์“ธ ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ตฌ๋ฌธ์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ์ฒซ ๋ฒˆ์งธ argument๋Š” ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด์˜ ์ด๋ฆ„์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋’ท๋ฐ›์นจํ•ด์ฃผ๋Š” ์ธ์ž๋“ค์ž…๋‹ˆ๋‹ค. 

 

argument๋“ค์€ command๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๊ฐ™์ด ์ „๋‹ฌ๋˜์–ด ๊ตฌ์ฒด์ ์ธ command์˜ ์†์„ฑ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด option๋“ค์€ file์ด๋ฆ„, ๊ฒฝ๋กœ, ๋””๋ ‰ํ„ฐ๋ฆฌ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ls๋Š” command๊ฐ€ ๋˜๊ณ  -l๊ณผ /bin์€ ์ด command์— ๋Œ€ํ•œ argument๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ls๋Š” ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ file list๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ๋’ค์— ์˜ค๋Š” -l ์˜ต์…˜์€ file์˜ ์†์„ฑ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฒƒ์ด๊ณ , /bin์€ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” file๋“ค์„ ๋ณด์—ฌ์ฃผ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ tar๋ช…๋ น์–ด๋ฅผ ๋“ค์–ด๋ณด๋ฉด, command์ธ tar๋Š” ์••์ถ•์„ ํ•˜๋Š” ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด ๊ธฐ์ˆ ํ•œ๋‹ค๋ฉด -c๋Š” creat, -v๋Š” ์‹คํ–‰๋˜๋Š” sequence๋ฅผ ์ถœ๋ ฅ, -f๋Š” file์ด๋ผ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ c์™€ f๊ฐ€ ํ•ฉ์ณ์ ธ ์••์ถ•๋œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์œ„์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด main.c์™€ main.h๋ฅผ ์••์ถ•ํ•ด์„œ archive.tar๋ผ๋Š” ํ•˜๋‚˜์˜ ์••์ถ•ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

5. Frequently Used Commands

  • pwd : ํ˜„์žฌ ์ž์‹ ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ path๋ฅผ ๋ณด์—ฌ์คŒ
  • cd : change directory
  • cat : text file์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ฝ์–ด์„œ ๋ฐ”๋กœ display(standard output, ์ฆ‰ ํ„ฐ๋ฏธ๋„์— ๋ฐ”๋กœ ์ถœ๋ ฅ)
  • chmod : file์— ๋Œ€ํ•œ ์†์„ฑ(access permission)์„ ๋ฐ”๊ฟˆ
  • vi : vi text editor์„ ์‹คํ–‰
  • ls : ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ๋“ค์„ ๋‚˜์—ด
  • rm : remove
  • mv : move ( +2๊ฐœ์˜ option์ด ํ•„์š”)
  • cp : copy (option - source file, destination file)
  • touch : empty file์„ ์ƒ์„ฑ
  • mkdir : make directory
  • rmdir : remove directory
  • more : ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ ๋‚˜์—ด๋˜๋Š” ์ •๋ณด๋“ค์ด ์ฐฝ์„ ๋„˜์–ด๊ฐˆ ๊ฒฝ์šฐ, ์ •๋ณด๋ฅผ ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ๋งž๋„๋ก ๋Š์–ด์„œ ์ถœ๋ ฅ
  • od : binary file ์ถœ๋ ฅ
  • ln : ํŒŒ์ผ์— ๋Œ€ํ•œ link๋ฅผ ๋งŒ๋“ฆ (symbolic or hard link)
  • file : ํ•ด๋‹น file์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ถœ๋ ฅ
  • passwd : password ๋ณ€๊ฒฝ
  • split : file์„ ๋‹ค๋ฅธ file๋กœ ๋ถ„ํ• 

6. Linux manual sections

shell command์— ๋Œ€ํ•œ ์†์„ฑ/์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ man์ด๋ผ๋Š” keyword๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

   man [section number][keyword]

e.g. $ man 3 printf // printf์˜ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ

Manual Section numbers
1 : Executable programs or shell commands
2 : System calls
3 : Library calls
4 : Special files
5 : File formats and conventions
6 : Games
7 : Miscellaneous
8 : System administration commands (usually only for root)

7. Linux File System

 ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋ฃจํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ณ„์ธต์  ํŠธ๋ฆฌ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. directory๋Š” windows์˜ ํด๋”์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋…์œผ๋กœ ํŒŒ์ผ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. 

๊ฐ€์žฅ ์œ„์— ๋ฃจํŠธ(/)๊ฐ€ ์กด์žฌํ•˜๊ณ , ์•„๋ž˜์— ๋””๋ ‰ํ„ฐ๋ฆฌ๋“ค์ด ์กด์žฌํ•˜๋ฉฐ ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์—๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ํŒŒ์ผ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

bin ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋Š” system์˜ binary file์ด ์žˆ๊ณ , boot๋Š” booting๊ณผ ๊ด€๋ จ๋œ file๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. etc๋Š” ๋ฆฌ๋ˆ…์Šค์˜ ํ™˜๊ฒฝ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. home ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์ด ๋ฆฌ๋ˆ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •๋งˆ๋‹ค ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด ์ฃผ๊ณ  ๊ฐ์ž์˜ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์—์„œ ๊ฐ์ž์˜ ๊ณ„์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค. usr์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ—ค๋” ํŒŒ์ผ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ‘ฉ‍๐Ÿซํ€ด์ฆˆ Where is the home for a user 'mtk' in the above system?

๋”๋ณด๊ธฐ

 

mtk๋ผ๋Š” ์œ ์ €์˜ home directory๋Š”

/home/mtk (root - home - mtk)

 

8. File/Directory Path

 ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ๋“ค์€ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 e.g. /home/avr/java/Go.java

 

  • Absolute path ์ ˆ๋Œ€ ๊ฒฝ๋กœ
    • ํ•ด๋‹น ์‚ฌ์šฉ์ž shell์˜ ํ˜„์žฌ position์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์ง€์ •ํ•œ ๊ฒฝ๋กœ
  • Relative path ์ƒ๋Œ€ ๊ฒฝ๋กœ
    • ํ˜„์žฌ ์‚ฌ์šฉ์ž position์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฒฝ๋กœ
    • '.(single dot)'์„ ์ด์šฉํ•ด ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ง€์ •
    • '..(double dot)'์„ ์ด์šฉํ•ด ์ƒ์œ„(๋ถ€๋ชจ) ์œ„์น˜ ์ง€์ •

e.g. ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ /home/avr์ผ ๊ฒฝ์šฐ, 

./java -> ํ˜„์žฌ ์œ„์น˜(/home/arv)์—์„œ java ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ (/home/avr/java)

../include -> ํ˜„์žฌ ์œ„์น˜์˜ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ include๋กœ ์ด๋™

 

๋งŒ์•ฝ ์–ด๋–ค ์œ„์น˜์— ์žˆ๋˜์ง€ user์˜ home directory๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด '~(tild)'๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

e.g. cd ~avr -> go to the home of user avr

e.g. cd ~ -> go to my home

9. File Permission

 ๋ฆฌ๋ˆ…์Šค์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ๋“ค์€ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ทธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ ‘๊ทผ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” level์€ ๊ทธ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†Œ์œ ์ž(owner), ๊ทธ ์†Œ์œ ์ž๊ฐ€ ์†ํ•œ ๊ทธ๋ฃน(group), ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค(other)๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. 

 

ls -l ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ํ•ด๋ณด๋ฉด ํ•ด๋‹น file์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์†์„ฑ์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ถœ๋ ฅ๋œ ์ •๋ณด์—์„œ ๊ฐ€์žฅ ์ฒ˜์Œ์œผ๋กœ ๋‚˜์™€์žˆ๋Š” ์ •๋ณด๊ฐ€ owner, group, others์— ๋Œ€ํ•œ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 

์ด๋ฅผ ํ•ด์„ ํ•ด๋ณด๋ฉด, owner์€ read(์ฝ๊ธฐ), write(์“ฐ๊ธฐ), execute(์‹คํ–‰)๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , group์— ๋Œ€ํ•ด์„œ๋Š” execute, read๊ฐ€๋Šฅ, ๊ทธ๋ฆฌ๊ณ  others์— ๋Œ€ํ•ด์„œ๋Š” execute๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  root๊ฐ€ ์‚ฌ์šฉ์ž์ด๊ณ  group์€ sys์ธ ๊ฒƒ ๋˜ํ•œ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ ‘๊ทผ๊ถŒํ•œ์„ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด๋Š” chmod [permission][filename] ์ž…๋‹ˆ๋‹ค. 

permission์€ binary code๋กœ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ, 

ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ๊ถŒํ•œ๋ถ€์—ฌ, 0์ด๋ฉด ์ ‘๊ทผ ๋ถˆ๊ฐ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด 'myFile.txt'๋ผ๋Š” ํŒŒ์ผ์—์„œ owner์™€ grouop์—๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ์ฃผ๊ณ , others์— ๋Œ€ํ•ด์„œ๋Š” read๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, permission์€ 111111100(2)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ค์‹œ 8์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 774๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋”ฐ๋ผ์„œ, ์ ‘๊ทผ๊ถŒํ•œ์„ ์œ„์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ์‹œํ‚ค๋ ค๋ฉด $ chmod 774 myFile.txt ์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 

 

10. Linux Programming Process

 

11. gcc Compiler

gcc๋Š” gnuํ™˜๊ฒฝ์—์„œ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ๋Š” C์ปดํŒŒ์ผ๋Ÿฌ ์ž…๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋ฅผ ์„ค์น˜ํ•˜๋ฉด default๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

gcc๋ผ๋Š” shell command๋ฅผ ์ด์šฉํ•ด ์ปดํŒŒ์ผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

 

e.g.

gcc sample.c -> sample.c์— ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ a.out(by default)๋ผ๋Š” binary ์‹คํ–‰ํŒŒ์ผ์ด ์ƒ์„ฑ๋จ

 ./a.out -> ์ƒ์„ฑ๋œ ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰ (./์„ ํ†ตํ•ด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊ผญ ํ•„์š”!)

 

gcc sample.c -o sample -> sample์ด๋ผ๋Š” ์ด๋ฆ„์˜ binary ์‹คํ–‰ํŒŒ์ผ์„ ์ƒ์„ฑ

 

2๊ฐœ ์ด์ƒ์˜ ํŒŒ์ผ์„ ์ปดํŒŒ์ผ ํ•  ๊ฒฝ์šฐ ํŒŒ์ผ ์ด๋ฆ„์„ ์—ฐ์†ํ•ด์„œ ์ ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

e.g. 

gcc file1.c file2.c -o fileout -> file1.c์™€ file2.c๋ฅผ ์ปดํŒŒ์ผ ํ•œ ํ›„ ๋‘ ํŒŒ์ผ์„ linkํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹คํ–‰ํŒŒ์ผ(fileout)์„ ๋งŒ๋“ฌ

gcc -c file1.c file2.c -> compile only and generates the object files

gcc -o fileout file1.o file2.o -> link the file1.o file2.o, then generates the fileout

 

๋Œ“๊ธ€