Day05 - jeremy0405/Codesquad_CS GitHub Wiki

์ˆ˜์—…

ํ˜ธ๋ˆ…์Šค์˜ ์ˆ˜์—…์„ ๋“ค์œผ๋ฉด์„œ ๊ธฐ์–ต์— ๋‚จ๋Š” ํ‚ค์›Œ๋“œ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์ฝ”์ฝ”์•„ ๋•Œ ํ•œ๋ฒˆ ๋ง์”€์„ ํ•ด์ฃผ์‹  ๋‚ด์šฉ์ด ๋งŽ์•˜๋Š”๋ฐ ๊นŒ๋จน์€ ๋‚ด์šฉ์ด ๋งŽ์•˜๋‹ค. ๋งˆ์Šคํ„ฐ์ฆˆ ์‹œ์ž‘ ์ „์— ์ฝ”์ฝ”์•„ ์œ„ํ‚ค๋ฅผ ํ•œ๋ฒˆ ๋ณด๊ณ  ๋ณต์Šต์„ ํ•˜์ž๊ณ  ๋งˆ์Œ๋งŒ ๋จน๊ณ  ์•ˆ ํ•œ ๊ฒƒ์„ ๋ฐ˜์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

ํ‚ค์›Œ๋“œ : ํ”„๋กœ์„ธ์Šค. ์šด์˜์ฒด์ œ, ์ปค๋„๊ณผ ์‰˜, vim

ํ”„๋กœ์„ธ์Šค

ํ”„๋กœ์„ธ์Šค๋ž€ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—๋Š” ์ตœ์†Œ ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ(๋ฉ”์ธ์“ฐ๋ ˆ๋“œ)๊ฐ€ ์กด์žฌํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ

  1. code ์˜์—ญ : ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ณณ
  2. data ์˜์—ญ : static ๋ฉ”์„œ๋“œ, static ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ณณ
  3. heap ์˜์—ญ : ๋™์  ํ• ๋‹น์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ (์ž๋ฐ”์˜ ๊ฐ์ฒด, c์–ธ์–ด์˜ malloc)
  4. stack ์˜์—ญ : ๋ฉ”์„œ๋“œ, ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

์ถœ์ฒ˜

์šด์˜์ฒด์ œ์˜ ์—ญํ• 

์šด์˜์ฒด์ œ๋Š” Mac OS, Linux, Window์™€ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค.

image ์ด๋ฏธ์ง€์ถœ์ฒ˜

์šด์˜์ฒด์ œ์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 

์šด์˜์ฒด์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์‚ฌ์šฉ์ž๋Š” 0๊ณผ 1๋กœ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง์ ‘ ์ œ์–ดํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์ž๋“ค์€ ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…์ด๋‹ค. ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์ปดํ“จํ„ฐ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ์–ด ๋งˆ์šฐ์Šค, ํ‚ค๋ณด๋“œ, ๋ชจ๋‹ˆํ„ฐ ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์กฐ์‚ฌ์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•ด์ค€๋‹ค.

  1. ํ•˜๋“œ์›จ์–ด ๋ณดํ˜ธ

์šด์˜์ฒด์ œ ์—†์ด ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ 0๊ณผ 1๋กœ ์ œ์–ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ œ๋กœ ๊ณผ๊ฑฐ์—๋Š” ์šด์˜์ฒด์ œ ์—†์ด ์ด๋ ‡๊ฒŒ ์ œ์–ด๋ฅผ ํ–ˆ๋‹ค. ์•„๋ฌด๋ฆฌ ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ์ด๋ผ๋„ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ฒŒ๋˜๋Š”๋ฐ ํ•˜๋“œ์›จ์–ด๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ณผ์ •์—์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ณ ์žฅ๋‚˜๊ฒŒ๋œ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฐ”๋กœ ํ•˜๋“œ์›จ์–ด ์กฐ์ž‘์„ ํ•˜์ง€ ์•Š๊ณ  ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•ด ์กฐ์ž‘์„ ํ•ด์„œ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ฆฌ

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ์ˆ˜๋งŽ์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์ž‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ด ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ํ•œ์ •๋œ ์ž์›์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์„œ ์ž์›์„ ์•Œ๋งž์€ ์ˆœ์„œ๋กœ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— ๋ถ„๋ฐฐํ•˜๊ณ  ๋‹ค์‹œ ํšŒ์ˆ˜ํ•˜๋Š” ์ž‘์—…์„ ํ•ด์ค€๋‹ค.

์ถœ์ฒ˜

์ปค๋„๊ณผ ์‰˜

์‰˜

์‰˜์€ ์‚ฌ์šฉ์ž์˜ ์‘์šฉํ”„๋กœ๊ทธ๋žจ๊ณผ ์ปค๋„ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์„ ์ปค๋„์— ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ปค๋„

์‹ค์ œ cpu์™€ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค, ๋ฉ”๋ชจ๋ฆฌ, I/O, ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ. ๋ณด์•ˆ ๋“ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

vim

ํ•ต์‹ฌVIM๋ช…๋ น์–ด ์ถœ์ฒ˜

h  l  k  j
์ขŒ ์šฐ ์ƒ ํ•˜

e // ์˜ค๋ฅธ์ชฝ ํ•œ ๋‹จ์–ด์˜ ์•ž ๋ถ€๋ถ„์œผ๋กœ ์ปค์„œ ์ด๋™
b // ์™ผ์ชฝ ํ•œ ๋‹จ์–ด์˜ ์•ž ๋ถ€๋ถ„์œผ๋กœ ์ปค์„œ ์ด๋™
^ // ์ค„ ์•ž์œผ๋กœ
$ // ์ค„ ๋์œผ๋กœ

H // ํ™”๋ฉด ์ œ์ผ ์ƒ๋‹จ
M // ํ™”๋ฉด ์ค‘๋‹จ
L // ํ™”๋ฉด ์ œ์ผ ํ•˜๋‹จ
gg // ์ตœ์ƒ๋‹จ
G // ์ตœํ•˜๋‹จ
[lineNum] G // ์ง€์ •ํ•œ ๋ผ์ธ์œผ๋กœ ์ด๋™
ctrl+d // ๋ฐ˜ ํ™”๋ฉด ์•„๋ž˜๋กœ
ctrl+u // ๋ฐ˜ ํ™”๋ฉด ์œ„๋กœ

i // insert๋ชจ๋“œ
o // ์ปค์„œ ์•„๋ž˜์— ํ–‰ ์‚ฝ์ž… ํ›„ insert๋ชจ๋“œ
r // ์ปค์„œ ์œ„์น˜ ํ•œ ๊ธ€์ž๋งŒ ์ˆ˜์ •
R // ์ปค์„œ ์œ„์น˜๋ถ€ํ„ฐ Replace๋ชจ๋“œ
ESC // ์ข…๋ฃŒ

dd // ๋ผ์ธ ์‚ญ์ œ
de // d ์‚ญ์ œ + e ์˜ค๋ฅธ์ชฝ ํ•œ ๋‹จ์–ด๊นŒ์ง€ ์ด๋™ -> ์˜ค๋ฅธ์ชฝ ํ•œ ๋‹จ์–ด ์‚ญ์ œ
u // ๋˜๋Œ๋ฆฌ๊ธฐ

yy // ์ปค์„œ ๋ผ์ธ ๋ณต์‚ฌ
p // ๋ถ™์—ฌ๋„ฃ๊ธฐ -> ์ตœ๊ทผ์˜ d๋ช…๋ น or y๋ช…๋ น์„ ๋ถ™์ž„

/[๊ฒ€์ƒ‰] -> n ์œผ๋กœ ๋„˜๊น€

์ถœ์ฒ˜

์‰˜ ์Šคํฌ๋ฆฝํŠธ

find ๋ช…๋ น์–ด

find . -name "*.cs"

find . -type f -name "*.cs"

FINDRESULT=$(find . -name "*.cs")
echo ${FINDRESULT[@]} // ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๋ฐฐ์—ด๋กœ ๋‹ด๊น€

ํŒŒ์ดํ”„

// command1์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ command2์˜ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ
command1 | command2

// file.txt ๋‚ด์šฉ์„ grep a์˜ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ
cat file.txt | grep a

๋ฆฌ๋‹ค์ด๋ ‰์…˜

๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋‚ด์šฉ
< ํŒŒ์ผ ์ฝ๊ธฐ
> ํŒŒ์ผ ์“ฐ๊ธฐ(overwrite)
>> ํŒŒ์ผ ์“ฐ๊ธฐ(insert)
๊ตฌ๋ถ„ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ
ํ‘œ์ค€ ์ž…๋ ฅ 0
ํ‘œ์ค€ ์ถœ๋ ฅ 1
ํ‘œ์ค€ ์—๋Ÿฌ 2
command > outfile
command >> outfile
command >& outfile
command >>& outfile

// ์ถœ๋ ฅ ๋ฌธ๊ตฌ๋ฅผ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•ด์„œ ์•ˆ๋„์›€
sample.sh > /dev/null

๋‚˜๋Š” ์ง์ ‘ ์ „์ฒดํƒ์ƒ‰ํ•˜๋ฉฐ csํŒŒ์ผ์„ ์˜ฎ๊ฒผ๋Š”๋ฐ ์ฟ ํ‚ด์€ ๊ฐ„๋‹จํ•œ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ†ตํ•ด zip ์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค. ์ด๊ฑธ ๋ณด๊ณ  ๊นœ์ง ๋†€๋ž๋‹ค!! ๐Ÿ˜ฑ

find . -name "*.cs"  | zip -@ "$FILENAME"".zip"  > /dev/null

์ฐธ๊ณ -์ฟ ํ‚ดgist

zip -@ ์˜ต์…˜์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

zip -@ ์ฐธ๊ณ 1 zip -@ ์ฐธ๊ณ 2