๐Ÿ•ท๏ธ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 28 (from laksa123)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

โ„น๏ธ Skipped - page is already crawled

๐Ÿ“„
INDEXABLE
โœ…
CRAWLED
6 days ago
๐Ÿค–
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.2 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://labex.io/ko/tutorials/linux-linux-file-comparing-271269
Last Crawled2026-04-05 01:30:15 (6 days ago)
First Indexednot set
HTTP Status Code200
Meta TitleLinux ํŒŒ์ผ ๋น„๊ต - diff ๋ช…๋ น์–ด ํ™œ์šฉ ๋ฐ ์‹ค์Šต | LabEx
Meta Description`diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ์„ธ์š”! ๊ณ ๊ธ‰ ์˜ต์…˜ ๋งˆ์Šคํ„ฐ, ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑ, ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต. ์ด ์‹ค์Šต์„ ํ†ตํ•ด Linux ํŒŒ์ผ ๋น„๊ต ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค์„ธ์š”.
Meta Canonicalnull
Boilerpipe Text
์†Œ๊ฐœ Linux ํŒŒ์ผ ๋น„๊ต ๋žฉ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํŒŒ์ผ ๋น„๊ต๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ถ”์ , ๋ฌธ์ œ ๋””๋ฒ„๊น…, ์ฝ”๋“œ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋˜๋Š” ๊ฐœ๋ฐœ์ž๋กœ์„œ, ๊ตฌ์„ฑ ํŒŒ์ผ, ์ฝ”๋“œ ๋ฒ„์ „ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ž์ฃผ ์‹๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋žฉ์—์„œ๋Š” ํŒŒ์ผ์„ ์ค„ ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ Linux ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ diff ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. diff ๋„๊ตฌ๋Š” ํŒŒ์ผ ๋ฒ„์ „ ๊ฐ„์— ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ, ์ด๋Š” ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์„ ๋งˆ์Šคํ„ฐํ•จ์œผ๋กœ์จ ํŒŒ์ผ ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํŒจ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ „๋ฐ˜์—์„œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ˆ ์€ ์ฝ”๋“œ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋˜๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์ด๋“œ ์‹คํ—˜์ž…๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ ์‹ค์Šต์„ ๋•๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.๊ฐ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์‹ค๋ฌด ๊ฒฝํ—˜์„ ์Œ“๊ธฐ ์œ„ํ•ด ์ง€์นจ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋”ฐ๋ฅด์„ธ์š”. ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅด๋ฉด, ์ด๊ฒƒ์€ ์ดˆ๊ธ‰ ๋ ˆ๋ฒจ์˜ ์‹คํ—˜์ด๋ฉฐ ์™„๋ฃŒ์œจ์€ 96% ์ž…๋‹ˆ๋‹ค.ํ•™์Šต์ž๋“ค๋กœ๋ถ€ํ„ฐ 100% ์˜ ๊ธ์ •์ ์ธ ๋ฆฌ๋ทฐ์œจ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. diff ๋ช…๋ น์–ด ์ดํ•ด diff ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ์„ ์ค„ ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ Linux ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” diff ๋ช…๋ น์–ด์˜ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ๊ณผ ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € diff ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. /home/labex/project ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. which diff ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /usr/bin/diff ์ด๋Š” diff ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ๋“  ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sudo apt-get update && sudo apt-get install -y diffutils ์ด์ œ ๋น„๊ตํ•  ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„ค์ •์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. echo "## Configuration File for Robot Arm" > /home/labex/project/files/config1.txt echo "motor_speed = 100" >> /home/labex/project/files/config1.txt echo "acceleration = 20" >> /home/labex/project/files/config1.txt echo "max_rotation = 180" >> /home/labex/project/files/config1.txt ์ด์ œ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. echo "## Configuration File for Robot Arm" > /home/labex/project/files/config2.txt echo "motor_speed = 120" >> /home/labex/project/files/config2.txt echo "acceleration = 20" >> /home/labex/project/files/config2.txt echo "max_rotation = 180" >> /home/labex/project/files/config2.txt ๋‘ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋‘ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cat /home/labex/project/files/config1.txt ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ## Configuration File for Robot Arm motor_speed = 100 acceleration = 20 max_rotation = 180 ์ด์ œ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์„ ๋ด…๋‹ˆ๋‹ค. cat /home/labex/project/files/config2.txt ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ## Configuration File for Robot Arm motor_speed = 120 acceleration = 20 max_rotation = 180 ์ด์ œ diff ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‘ ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. diff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2c2 < motor_speed = 100 --- > motor_speed = 120 ์ด ์ถœ๋ ฅ์€ ๋‹ค์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์˜ 2 ํ–‰์„ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์˜ 2 ํ–‰๊ณผ ์ผ์น˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. < ๋Š” ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์˜ ํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. > ๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์˜ ํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. --- ๊ฐ€ ์žˆ๋Š” ํ–‰์€ ๋‘ ๋ฒ„์ „์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์€ motor_speed ๊ฐ’์ด 100 ์—์„œ 120 ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ diff ์˜ต์…˜ ์‚ฌ์šฉ ์ด์ „ ๋‹จ๊ณ„์—์„œ๋Š” ๋‘ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์ธ diff ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ถœ๋ ฅ์„ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ณ ๊ธ‰ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ํ˜•์‹ (-u ์˜ต์…˜) ํ†ตํ•ฉ ํ˜•์‹์€ ์ฐจ์ด์ ์„ ๋” ์ปจํ…์ŠคํŠธ ์ธ์‹ ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. -u ์˜ต์…˜์€ ์ฐจ์ด์  ์ฃผ๋ณ€์˜ ์—ฌ๋Ÿฌ ์ค„์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. -u ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- /home/labex/project/files/config1.txt 2023-01-01 00:00:00.000000000 +0000 +++ /home/labex/project/files/config2.txt 2023-01-01 00:00:00.000000000 +0000 @@ -1,4 +1,4 @@ ## Configuration File for Robot Arm -motor_speed = 100 +motor_speed = 120 acceleration = 20 max_rotation = 180 ์ด ํ˜•์‹์—์„œ: - (๋งˆ์ด๋„ˆ์Šค) ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ค„์€ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. + (ํ”Œ๋Ÿฌ์Šค) ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ค„์€ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ์–ด๋–ค ํŒŒ์ผ์ด ๋น„๊ต๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. @@ -1,4 +1,4 @@ ์„น์…˜์€ ํ‘œ์‹œ๋˜๋Š” ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‚˜๋ž€ํžˆ ํ˜•์‹ (-y ์˜ต์…˜) ๋‚˜๋ž€ํžˆ ํ˜•์‹์€ ๋‘ ํŒŒ์ผ์„ ๋ณ‘๋ ฌ ์—ด๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ฐจ์ด์ ์„ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. diff -y /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ## Configuration File for Robot Arm ## Configuration File for Robot Arm motor_speed = 100 | motor_speed = 120 acceleration = 20 acceleration = 20 max_rotation = 180 max_rotation = 180 ์ด ๋ณด๊ธฐ์—์„œ: ์ค‘๊ฐ„์˜ | ๋ฌธ์ž๋Š” ์ค„์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ค„์€ ๋งˆ์ปค ์—†์ด ๋‘ ์—ด ๋ชจ๋‘์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ณต๋ฐฑ ๋ฌด์‹œ (-w ์˜ต์…˜) ๋•Œ๋กœ๋Š” ๊ณต๋ฐฑ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋‚ด์šฉ๋งŒ ๋น„๊ตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. -w ์˜ต์…˜์€ ๋ชจ๋“  ๊ณต๋ฐฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐ„๊ฒฉ์œผ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. echo "## Configuration File for Robot Arm" > /home/labex/project/files/config3.txt echo "motor_speed = 100 " >> /home/labex/project/files/config3.txt echo "acceleration = 20" >> /home/labex/project/files/config3.txt echo "max_rotation = 180" >> /home/labex/project/files/config3.txt ์ด์ œ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ๊ณผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์˜ต์…˜ ์—†์ด, ๊ทธ ๋‹ค์Œ -w ์˜ต์…˜์œผ๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. diff /home/labex/project/files/config1.txt /home/labex/project/files/config3.txt ๊ณต๋ฐฑ์œผ๋กœ ์ธํ•ด ์ฐจ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. diff -w /home/labex/project/files/config1.txt /home/labex/project/files/config3.txt -w ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ผํ•œ ๋ณ€ํ˜•์ด ๊ณต๋ฐฑ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— diff ๋Š” ์ฐจ์ด์ ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ์˜ต์…˜์€ diff ๋ฅผ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ํŒŒ์ผ ํ˜•์‹์— ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ต์…˜์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ถœ๋ ฅ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ ์šฉ ํŒจ์น˜ ํŒŒ์ผ์€ ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํŒจ์น˜ ํŒŒ์ผ์—๋Š” ๋‘ ๋ฒ„์ „์˜ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•œ ๋ฒ„์ „์„ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ config1.txt ์™€ config2.txt ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์บก์ฒ˜ํ•˜๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt > /home/labex/project/files/config.patch ์ด ๋ช…๋ น์–ด๋Š” ํ†ตํ•ฉ diff ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ config.patch ๋ผ๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจ์น˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cat /home/labex/project/files/config.patch diff -u ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- /home/labex/project/files/config1.txt 2023-01-01 00:00:00.000000000 +0000 +++ /home/labex/project/files/config2.txt 2023-01-01 00:00:00.000000000 +0000 @@ -1,4 +1,4 @@ ## Configuration File for Robot Arm -motor_speed = 100 +motor_speed = 120 acceleration = 20 max_rotation = 180 ํŒจ์น˜ ํŒŒ์ผ ์ ์šฉํ•˜๊ธฐ ์ด์ œ config1.txt ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cp /home/labex/project/files/config1.txt /home/labex/project/files/config1_copy.txt ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด patch ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. patch /home/labex/project/files/config1_copy.txt < /home/labex/project/files/config.patch ํŒจ์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ ์šฉ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. patching file /home/labex/project/files/config1_copy.txt ํŒจ์น˜๋œ ํŒŒ์ผ์ด ์ด์ œ config2.txt ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cat /home/labex/project/files/config1_copy.txt ์ถœ๋ ฅ์€ config2.txt ์™€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ## Configuration File for Robot Arm motor_speed = 120 acceleration = 20 max_rotation = 180 ํŒจ์น˜๋œ ํŒŒ์ผ๊ณผ config2.txt ๊ฐ„์— ์ฐจ์ด์ ์ด ์—†๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. diff /home/labex/project/files/config1_copy.txt /home/labex/project/files/config2.txt ์ถœ๋ ฅ์ด ์—†์œผ๋ฉด ํŒŒ์ผ์ด ๋™์ผํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, ํŒจ์น˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋” ๋ณต์žกํ•œ ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ ์ƒˆ ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ์ค„์„ ์ˆ˜์ •ํ•˜์—ฌ ๋” ๋ณต์žกํ•œ ํŒจ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cp /home/labex/project/files/config1.txt /home/labex/project/files/config4.txt ์ด์ œ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. echo "## Updated Configuration File for Robot Arm" > /home/labex/project/files/config4.txt echo "motor_speed = 150" >> /home/labex/project/files/config4.txt echo "acceleration = 25" >> /home/labex/project/files/config4.txt echo "max_rotation = 270" >> /home/labex/project/files/config4.txt echo "safety_limit = enabled" >> /home/labex/project/files/config4.txt ์ด์ œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํŒจ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config4.txt > /home/labex/project/files/complex.patch ์ด ๋” ๋ณต์žกํ•œ ํŒจ์น˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cat /home/labex/project/files/complex.patch ์ถ”๊ฐ€, ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ค„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด์—ฌ์ฃผ๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๊ณ  ํŒŒ์ผ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ์ถ”์ ํ•˜๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ณต์œ , ์—…๋ฐ์ดํŠธ ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต ๋ฐ ๊ธฐํƒ€ ๋น„๊ต ๋„๊ตฌ ์‚ฌ์šฉ ๊ฐœ๋ณ„ ํŒŒ์ผ ๋น„๊ต ์™ธ์—๋„ Linux ๋Š” ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด ๋น„๊ต ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. diff ๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ตํ•˜๊ธฐ diff ๋ช…๋ น์–ด๋Š” -r (์žฌ๊ท€์ , recursive) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ตํ•  ํŒŒ์ผ์ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. mkdir -p /home/labex/project/dir1 mkdir -p /home/labex/project/dir2 ## ์ฒซ ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ ์ƒ์„ฑ echo "This is file 1" > /home/labex/project/dir1/file1.txt echo "This is file 2" > /home/labex/project/dir1/file2.txt echo "This is file 3" > /home/labex/project/dir1/file3.txt ## ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ ์‚ฌํ•œ ํŒŒ์ผ ์ƒ์„ฑ echo "This is file 1 - modified" > /home/labex/project/dir2/file1.txt echo "This is file 2" > /home/labex/project/dir2/file2.txt ## ์ฐธ๊ณ : file3.txt๋Š” dir2์— ์—†์Œ echo "This is a new file" > /home/labex/project/dir2/file4.txt ์ด์ œ ์ด๋Ÿฌํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. diff -r /home/labex/project/dir1 /home/labex/project/dir2 ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. diff -r /home/labex/project/dir1/file1.txt /home/labex/project/dir2/file1.txt 1c1 < This is file 1 --- > This is file 1 - modified Only in /home/labex/project/dir1: file3.txt Only in /home/labex/project/dir2: file4.txt ์ด ์ถœ๋ ฅ์€ ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. file1.txt ์˜ ๋‚ด์šฉ ์ฐจ์ด file3.txt ๋Š” dir1 ์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. file4.txt ๋Š” dir2 ์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. file2.txt ๋Š” ๋‘ ๋””๋ ‰ํ† ๋ฆฌ ๋ชจ๋‘์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค (๋”ฐ๋ผ์„œ ์ฐจ์ด์ ์ด ๋ณด๊ณ ๋˜์ง€ ์•Š์Œ). diff3 ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ ์„ธ ๊ฐœ์˜ ํŒŒ์ผ (์˜ˆ: ์—ฌ๋Ÿฌ ์†Œ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•  ๋•Œ) ์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ diff3 ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์ฒด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์„ธ ๋ฒˆ์งธ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. echo "## Configuration File for Robot Arm" > /home/labex/project/files/config5.txt echo "motor_speed = 100" >> /home/labex/project/files/config5.txt echo "acceleration = 30" >> /home/labex/project/files/config5.txt echo "max_rotation = 180" >> /home/labex/project/files/config5.txt ์ด์ œ diff3 ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. diff3 /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt /home/labex/project/files/config5.txt diff3 ์˜ ์ถœ๋ ฅ ํ˜•์‹์€ ์•ฝ๊ฐ„ ๋” ๋ณต์žกํ•˜์ง€๋งŒ ๊ฐ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ํŒŒ์ผ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋ณด์—ฌ์ฃผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. colordiff ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ colordiff ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” diff ์˜ ๋ž˜ํผ๋กœ, ๋™์ผํ•œ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์ƒ‰์ƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋จผ์ € colordiff ๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. sudo apt-get update && sudo apt-get install -y colordiff ์ด์ œ colordiff ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. colordiff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ์ถœ๋ ฅ์€ ์ผ๋ฐ˜ diff ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋ฐ ๋ณ€๊ฒฝ๋œ ์ค„์— ๋Œ€ํ•œ ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. wdiff ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ wdiff (๋‹จ์–ด diff) ๋ช…๋ น์–ด๋Š” ์ค„ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋‹จ์–ด ๋‹จ์œ„๋กœ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋ฏ€๋กœ ์‚ฐ๋ฌธ์ด๋‚˜ ๋ฌธ์„œ์— ๋” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. wdiff ๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. sudo apt-get update && sudo apt-get install -y wdiff ๋ฌธ์žฅ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. echo "The robot arm moves quickly and efficiently." > /home/labex/project/files/sentence1.txt echo "The robot arm moves slowly but efficiently." > /home/labex/project/files/sentence2.txt ์ด์ œ wdiff ๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. wdiff /home/labex/project/files/sentence1.txt /home/labex/project/files/sentence2.txt ๋ณ€๊ฒฝ๋œ ๋‹จ์–ด๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜๋Š” ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. The robot arm moves [-quickly and-] {+slowly but+} efficiently. Linux ์˜ ๋‹ค์–‘ํ•œ ๋น„๊ต ๋„๊ตฌ๋Š” ๋‹ค์–‘ํ•œ ๋ชฉ์ ๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํŒŒ์ผ ๋น„๊ต๋ฅผ ์œ„ํ•œ diff ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต๋ฅผ ์œ„ํ•œ diff -r ์‚ผ๋ฐฉ ๋น„๊ต๋ฅผ ์œ„ํ•œ diff3 ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์ถœ๋ ฅ์„ ์œ„ํ•œ colordiff ๋‹จ์–ด ๋‹จ์œ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ wdiff ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋ฉด ํŒŒ์ผ ๋น„๊ต๋ฅผ ๋” ํšจ๊ณผ์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์•ฝ ์ด Lab ์—์„œ๋Š” ๋‹ค์žฌ๋‹ค๋Šฅํ•œ diff ๋ช…๋ น์–ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ Linux ์—์„œ ํŒŒ์ผ ๋น„๊ต ๋„๊ตฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์Šต๋“ํ•œ ์ฃผ์š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํŒŒ์ผ ๋น„๊ต : ๊ธฐ๋ณธ diff ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์œผ๋ฉฐ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ Diff ์˜ต์…˜ : ํ†ตํ•ฉ ํ˜•์‹ ( -u ), ๋‚˜๋ž€ํžˆ ๋น„๊ต ( -y ), ๊ณต๋ฐฑ ๋ฌด์‹œ ( -w ) ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ํƒ์ƒ‰ํ–ˆ์œผ๋ฉฐ, ๊ฐ ์˜ต์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋น„๊ต ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค. ํŒจ์น˜ ํŒŒ์ผ : ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐฐํฌ, ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ์— ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ธ ํŒจ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต : ์žฌ๊ท€ ์˜ต์…˜ ( -r ) ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ๋™์‹œ์— ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด ๋น„๊ต ๋„๊ตฌ : ์‚ผ๋ฐฉ ๋น„๊ต๋ฅผ ์œ„ํ•œ diff3 , ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์ถœ๋ ฅ์„ ์œ„ํ•œ colordiff , ๋‹จ์–ด ๋‹จ์œ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ wdiff ์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋„๊ตฌ๋ฅผ ์†Œ๊ฐœ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ, ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐ ๊ตฌ์„ฑ ๊ด€๋ฆฌ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ณ , ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ๋งˆ์Šคํ„ฐํ•จ์œผ๋กœ์จ ๋ชจ๋“  Linux ํ™˜๊ฒฝ์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ๋•Œ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ท€์ค‘ํ•œ ๊ธฐ๋Šฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
Markdown
[![LabEx](https://labex.io/labex-logo-dark.svg)](https://labex.io/ko) - [ํ•™์Šตํ•˜๊ธฐ](https://labex.io/ko/learn "Learn") - [๊ฐ€๊ฒฉ](https://labex.io/ko/pricing "Pricing") [๋กœ๊ทธ์ธ๋กœ๊ทธ์ธ](https://labex.io/ko/login)[๋ฌด๋ฃŒ ๊ฐ€์ž…๋ฌด๋ฃŒ ๊ฐ€์ž…](https://labex.io/ko/register) 1. [ํ•™์Šตํ•˜๊ธฐ](https://labex.io/ko/learn) 2. [ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials) 3. [Linux](https://labex.io/ko/tutorials/category/linux) # Linux ํŒŒ์ผ ๋น„๊ต [![](https://labex.io/cdn-cgi/image/width=84,height=84,quality=80,format=auto,fit=cover,onerror=redirect/https://file.labex.io/upload/u/1991/GXJSo2W4OcyY.png)Linux](https://labex.io/learn/linux) Beginner ![Linux ํŒŒ์ผ ๋น„๊ต](https://icons.labex.io/linux-file-comparing.png) Linux ํŒŒ์ผ ๋น„๊ต [์ง€๊ธˆ ์—ฐ์Šตํ•˜๊ธฐ](https://labex.io/ko/labs/linux-linux-file-comparing-271269) ๋ชฉ์ฐจ - [์†Œ๊ฐœ](https://labex.io/ko/tutorials/linux-linux-file-comparing-271269#%EC%86%8C%EA%B0%9C) - [diff ๋ช…๋ น์–ด ์ดํ•ด](https://labex.io/ko/tutorials/linux-linux-file-comparing-271269#diff-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%9D%B4%ED%95%B4) - [๊ณ ๊ธ‰ diff ์˜ต์…˜ ์‚ฌ์šฉ](https://labex.io/ko/tutorials/linux-linux-file-comparing-271269#%EA%B3%A0%EA%B8%89-diff-%EC%98%B5%EC%85%98-%EC%82%AC%EC%9A%A9) - [ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ ์šฉ](https://labex.io/ko/tutorials/linux-linux-file-comparing-271269#%ED%8C%A8%EC%B9%98-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%A0%81%EC%9A%A9) - [๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต ๋ฐ ๊ธฐํƒ€ ๋น„๊ต ๋„๊ตฌ ์‚ฌ์šฉ](https://labex.io/ko/tutorials/linux-linux-file-comparing-271269#%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EB%B9%84%EA%B5%90-%EB%B0%8F-%EA%B8%B0%ED%83%80-%EB%B9%84%EA%B5%90-%EB%8F%84%EA%B5%AC-%EC%82%AC%EC%9A%A9) - [์š”์•ฝ](https://labex.io/ko/tutorials/linux-linux-file-comparing-271269#%EC%9A%94%EC%95%BD) [![Default VM Cover](https://labex.io/cdn-cgi/image/quality=80,format=auto,onerror=redirect/images/lab/env-desktop.png)](https://labex.io/ko/labs/linux-linux-file-comparing-271269) [์ง€๊ธˆ ์—ฐ์Šตํ•˜๊ธฐ](https://labex.io/ko/labs/linux-linux-file-comparing-271269) ## ์†Œ๊ฐœ Linux ํŒŒ์ผ ๋น„๊ต ๋žฉ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํŒŒ์ผ ๋น„๊ต๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ถ”์ , ๋ฌธ์ œ ๋””๋ฒ„๊น…, ์ฝ”๋“œ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋˜๋Š” ๊ฐœ๋ฐœ์ž๋กœ์„œ, ๊ตฌ์„ฑ ํŒŒ์ผ, ์ฝ”๋“œ ๋ฒ„์ „ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ž์ฃผ ์‹๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋žฉ์—์„œ๋Š” ํŒŒ์ผ์„ ์ค„ ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ Linux ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. `diff` ๋„๊ตฌ๋Š” ํŒŒ์ผ ๋ฒ„์ „ ๊ฐ„์— ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ, ์ด๋Š” ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์„ ๋งˆ์Šคํ„ฐํ•จ์œผ๋กœ์จ ํŒŒ์ผ ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํŒจ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ „๋ฐ˜์—์„œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ˆ ์€ ์ฝ”๋“œ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋˜๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์ด๋“œ ์‹คํ—˜์ž…๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ ์‹ค์Šต์„ ๋•๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.๊ฐ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์‹ค๋ฌด ๊ฒฝํ—˜์„ ์Œ“๊ธฐ ์œ„ํ•ด ์ง€์นจ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋”ฐ๋ฅด์„ธ์š”. ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅด๋ฉด, ์ด๊ฒƒ์€ ์ดˆ๊ธ‰ ๋ ˆ๋ฒจ์˜ ์‹คํ—˜์ด๋ฉฐ ์™„๋ฃŒ์œจ์€ 96%์ž…๋‹ˆ๋‹ค.ํ•™์Šต์ž๋“ค๋กœ๋ถ€ํ„ฐ 100%์˜ ๊ธ์ •์ ์ธ ๋ฆฌ๋ทฐ์œจ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ## diff ๋ช…๋ น์–ด ์ดํ•ด `diff` ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ์„ ์ค„ ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ Linux ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” `diff` ๋ช…๋ น์–ด์˜ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ๊ณผ ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € `diff` ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. `/home/labex/project` ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ``` which diff ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` /usr/bin/diff ``` ์ด๋Š” `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ๋“  ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` sudo apt-get update && sudo apt-get install -y diffutils ``` ์ด์ œ ๋น„๊ตํ•  ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„ค์ •์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config1.txt echo "motor_speed = 100" >> /home/labex/project/files/config1.txt echo "acceleration = 20" >> /home/labex/project/files/config1.txt echo "max_rotation = 180" >> /home/labex/project/files/config1.txt ``` ์ด์ œ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config2.txt echo "motor_speed = 120" >> /home/labex/project/files/config2.txt echo "acceleration = 20" >> /home/labex/project/files/config2.txt echo "max_rotation = 180" >> /home/labex/project/files/config2.txt ``` ๋‘ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋‘ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config1.txt ``` ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm motor_speed = 100 acceleration = 20 max_rotation = 180 ``` ์ด์ œ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์„ ๋ด…๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config2.txt ``` ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ์ด์ œ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‘ ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` 2c2 < motor_speed = 100 --- > motor_speed = 120 ``` ์ด ์ถœ๋ ฅ์€ ๋‹ค์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. - ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์˜ 2 ํ–‰์„ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์˜ 2 ํ–‰๊ณผ ์ผ์น˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - `<`๋Š” ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์˜ ํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - `>`๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์˜ ํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - `---`๊ฐ€ ์žˆ๋Š” ํ–‰์€ ๋‘ ๋ฒ„์ „์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์€ `motor_speed` ๊ฐ’์ด `100`์—์„œ `120`์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ## ๊ณ ๊ธ‰ diff ์˜ต์…˜ ์‚ฌ์šฉ ์ด์ „ ๋‹จ๊ณ„์—์„œ๋Š” ๋‘ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์ธ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ถœ๋ ฅ์„ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ณ ๊ธ‰ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### ํ†ตํ•ฉ ํ˜•์‹ (-u ์˜ต์…˜) ํ†ตํ•ฉ ํ˜•์‹์€ ์ฐจ์ด์ ์„ ๋” ์ปจํ…์ŠคํŠธ ์ธ์‹ ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. `-u` ์˜ต์…˜์€ ์ฐจ์ด์  ์ฃผ๋ณ€์˜ ์—ฌ๋Ÿฌ ์ค„์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. `-u` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` --- /home/labex/project/files/config1.txt 2023-01-01 00:00:00.000000000 +0000 +++ /home/labex/project/files/config2.txt 2023-01-01 00:00:00.000000000 +0000 @@ -1,4 +1,4 @@ ## Configuration File for Robot Arm -motor_speed = 100 +motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ์ด ํ˜•์‹์—์„œ: - `-` (๋งˆ์ด๋„ˆ์Šค) ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ค„์€ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. - `+` (ํ”Œ๋Ÿฌ์Šค) ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ค„์€ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. - ํ—ค๋”๋Š” ์–ด๋–ค ํŒŒ์ผ์ด ๋น„๊ต๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. - `@@ -1,4 +1,4 @@` ์„น์…˜์€ ํ‘œ์‹œ๋˜๋Š” ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ### ๋‚˜๋ž€ํžˆ ํ˜•์‹ (-y ์˜ต์…˜) ๋‚˜๋ž€ํžˆ ํ˜•์‹์€ ๋‘ ํŒŒ์ผ์„ ๋ณ‘๋ ฌ ์—ด๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ฐจ์ด์ ์„ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ``` diff -y /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm ## Configuration File for Robot Arm motor_speed = 100 | motor_speed = 120 acceleration = 20 acceleration = 20 max_rotation = 180 max_rotation = 180 ``` ์ด ๋ณด๊ธฐ์—์„œ: - ์ค‘๊ฐ„์˜ `|` ๋ฌธ์ž๋Š” ์ค„์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - ๋™์ผํ•œ ์ค„์€ ๋งˆ์ปค ์—†์ด ๋‘ ์—ด ๋ชจ๋‘์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ### ๊ณต๋ฐฑ ๋ฌด์‹œ (-w ์˜ต์…˜) ๋•Œ๋กœ๋Š” ๊ณต๋ฐฑ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋‚ด์šฉ๋งŒ ๋น„๊ตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. `-w` ์˜ต์…˜์€ ๋ชจ๋“  ๊ณต๋ฐฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐ„๊ฒฉ์œผ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config3.txt echo "motor_speed = 100 " >> /home/labex/project/files/config3.txt echo "acceleration = 20" >> /home/labex/project/files/config3.txt echo "max_rotation = 180" >> /home/labex/project/files/config3.txt ``` ์ด์ œ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ๊ณผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์˜ต์…˜ ์—†์ด, ๊ทธ ๋‹ค์Œ `-w` ์˜ต์…˜์œผ๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` diff /home/labex/project/files/config1.txt /home/labex/project/files/config3.txt ``` ๊ณต๋ฐฑ์œผ๋กœ ์ธํ•ด ์ฐจ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. ``` diff -w /home/labex/project/files/config1.txt /home/labex/project/files/config3.txt ``` `-w` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ผํ•œ ๋ณ€ํ˜•์ด ๊ณต๋ฐฑ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— `diff`๋Š” ์ฐจ์ด์ ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ์˜ต์…˜์€ `diff`๋ฅผ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ํŒŒ์ผ ํ˜•์‹์— ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ต์…˜์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ถœ๋ ฅ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ ์šฉ ํŒจ์น˜ ํŒŒ์ผ์€ ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํŒจ์น˜ ํŒŒ์ผ์—๋Š” ๋‘ ๋ฒ„์ „์˜ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•œ ๋ฒ„์ „์„ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ### ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ `config1.txt`์™€ `config2.txt` ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์บก์ฒ˜ํ•˜๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt > /home/labex/project/files/config.patch ``` ์ด ๋ช…๋ น์–ด๋Š” ํ†ตํ•ฉ diff ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ `config.patch`๋ผ๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจ์น˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config.patch ``` `diff -u` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` --- /home/labex/project/files/config1.txt 2023-01-01 00:00:00.000000000 +0000 +++ /home/labex/project/files/config2.txt 2023-01-01 00:00:00.000000000 +0000 @@ -1,4 +1,4 @@ ## Configuration File for Robot Arm -motor_speed = 100 +motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ### ํŒจ์น˜ ํŒŒ์ผ ์ ์šฉํ•˜๊ธฐ ์ด์ œ `config1.txt`์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cp /home/labex/project/files/config1.txt /home/labex/project/files/config1_copy.txt ``` ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด `patch` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ``` patch /home/labex/project/files/config1_copy.txt < /home/labex/project/files/config.patch ``` ํŒจ์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ ์šฉ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` patching file /home/labex/project/files/config1_copy.txt ``` ํŒจ์น˜๋œ ํŒŒ์ผ์ด ์ด์ œ `config2.txt`์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config1_copy.txt ``` ์ถœ๋ ฅ์€ `config2.txt`์™€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ํŒจ์น˜๋œ ํŒŒ์ผ๊ณผ `config2.txt` ๊ฐ„์— ์ฐจ์ด์ ์ด ์—†๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff /home/labex/project/files/config1_copy.txt /home/labex/project/files/config2.txt ``` ์ถœ๋ ฅ์ด ์—†์œผ๋ฉด ํŒŒ์ผ์ด ๋™์ผํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, ํŒจ์น˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ### ๋” ๋ณต์žกํ•œ ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ ์ƒˆ ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ์ค„์„ ์ˆ˜์ •ํ•˜์—ฌ ๋” ๋ณต์žกํ•œ ํŒจ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cp /home/labex/project/files/config1.txt /home/labex/project/files/config4.txt ``` ์ด์ œ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ``` echo "## Updated Configuration File for Robot Arm" > /home/labex/project/files/config4.txt echo "motor_speed = 150" >> /home/labex/project/files/config4.txt echo "acceleration = 25" >> /home/labex/project/files/config4.txt echo "max_rotation = 270" >> /home/labex/project/files/config4.txt echo "safety_limit = enabled" >> /home/labex/project/files/config4.txt ``` ์ด์ œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํŒจ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ``` diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config4.txt > /home/labex/project/files/complex.patch ``` ์ด ๋” ๋ณต์žกํ•œ ํŒจ์น˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/complex.patch ``` ์ถ”๊ฐ€, ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ค„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด์—ฌ์ฃผ๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๊ณ  ํŒŒ์ผ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ์ถ”์ ํ•˜๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ณต์œ , ์—…๋ฐ์ดํŠธ ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ## ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต ๋ฐ ๊ธฐํƒ€ ๋น„๊ต ๋„๊ตฌ ์‚ฌ์šฉ ๊ฐœ๋ณ„ ํŒŒ์ผ ๋น„๊ต ์™ธ์—๋„ Linux ๋Š” ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด ๋น„๊ต ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ### diff ๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ตํ•˜๊ธฐ `diff` ๋ช…๋ น์–ด๋Š” `-r` (์žฌ๊ท€์ , recursive) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ตํ•  ํŒŒ์ผ์ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` mkdir -p /home/labex/project/dir1 mkdir -p /home/labex/project/dir2 ## ์ฒซ ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ ์ƒ์„ฑ echo "This is file 1" > /home/labex/project/dir1/file1.txt echo "This is file 2" > /home/labex/project/dir1/file2.txt echo "This is file 3" > /home/labex/project/dir1/file3.txt ## ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ ์‚ฌํ•œ ํŒŒ์ผ ์ƒ์„ฑ echo "This is file 1 - modified" > /home/labex/project/dir2/file1.txt echo "This is file 2" > /home/labex/project/dir2/file2.txt ## ์ฐธ๊ณ : file3.txt๋Š” dir2์— ์—†์Œ echo "This is a new file" > /home/labex/project/dir2/file4.txt ``` ์ด์ œ ์ด๋Ÿฌํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff -r /home/labex/project/dir1 /home/labex/project/dir2 ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` diff -r /home/labex/project/dir1/file1.txt /home/labex/project/dir2/file1.txt 1c1 < This is file 1 --- > This is file 1 - modified Only in /home/labex/project/dir1: file3.txt Only in /home/labex/project/dir2: file4.txt ``` ์ด ์ถœ๋ ฅ์€ ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. - `file1.txt`์˜ ๋‚ด์šฉ ์ฐจ์ด - `file3.txt`๋Š” `dir1`์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. - `file4.txt`๋Š” `dir2`์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. - `file2.txt`๋Š” ๋‘ ๋””๋ ‰ํ† ๋ฆฌ ๋ชจ๋‘์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค (๋”ฐ๋ผ์„œ ์ฐจ์ด์ ์ด ๋ณด๊ณ ๋˜์ง€ ์•Š์Œ). ### diff3 ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ ์„ธ ๊ฐœ์˜ ํŒŒ์ผ (์˜ˆ: ์—ฌ๋Ÿฌ ์†Œ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•  ๋•Œ) ์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ `diff3` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์ฒด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์„ธ ๋ฒˆ์งธ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config5.txt echo "motor_speed = 100" >> /home/labex/project/files/config5.txt echo "acceleration = 30" >> /home/labex/project/files/config5.txt echo "max_rotation = 180" >> /home/labex/project/files/config5.txt ``` ์ด์ œ `diff3`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` diff3 /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt /home/labex/project/files/config5.txt ``` `diff3`์˜ ์ถœ๋ ฅ ํ˜•์‹์€ ์•ฝ๊ฐ„ ๋” ๋ณต์žกํ•˜์ง€๋งŒ ๊ฐ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ํŒŒ์ผ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋ณด์—ฌ์ฃผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ### colordiff ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ `colordiff` ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” `diff`์˜ ๋ž˜ํผ๋กœ, ๋™์ผํ•œ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์ƒ‰์ƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋จผ์ € `colordiff`๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` sudo apt-get update && sudo apt-get install -y colordiff ``` ์ด์ œ `colordiff`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` colordiff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ์ถœ๋ ฅ์€ ์ผ๋ฐ˜ `diff` ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋ฐ ๋ณ€๊ฒฝ๋œ ์ค„์— ๋Œ€ํ•œ ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ### wdiff ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ `wdiff` (๋‹จ์–ด diff) ๋ช…๋ น์–ด๋Š” ์ค„ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋‹จ์–ด ๋‹จ์œ„๋กœ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋ฏ€๋กœ ์‚ฐ๋ฌธ์ด๋‚˜ ๋ฌธ์„œ์— ๋” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `wdiff`๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` sudo apt-get update && sudo apt-get install -y wdiff ``` ๋ฌธ์žฅ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` echo "The robot arm moves quickly and efficiently." > /home/labex/project/files/sentence1.txt echo "The robot arm moves slowly but efficiently." > /home/labex/project/files/sentence2.txt ``` ์ด์ œ `wdiff`๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` wdiff /home/labex/project/files/sentence1.txt /home/labex/project/files/sentence2.txt ``` ๋ณ€๊ฒฝ๋œ ๋‹จ์–ด๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜๋Š” ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` The robot arm moves [-quickly and-] {+slowly but+} efficiently. ``` Linux ์˜ ๋‹ค์–‘ํ•œ ๋น„๊ต ๋„๊ตฌ๋Š” ๋‹ค์–‘ํ•œ ๋ชฉ์ ๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. - ์ผ๋ฐ˜ ํŒŒ์ผ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff` - ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff -r` - ์‚ผ๋ฐฉ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff3` - ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์ถœ๋ ฅ์„ ์œ„ํ•œ `colordiff` - ๋‹จ์–ด ๋‹จ์œ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ `wdiff` ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋ฉด ํŒŒ์ผ ๋น„๊ต๋ฅผ ๋” ํšจ๊ณผ์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ์š”์•ฝ ์ด Lab ์—์„œ๋Š” ๋‹ค์žฌ๋‹ค๋Šฅํ•œ `diff` ๋ช…๋ น์–ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ Linux ์—์„œ ํŒŒ์ผ ๋น„๊ต ๋„๊ตฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์Šต๋“ํ•œ ์ฃผ์š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. 1. **๊ธฐ๋ณธ ํŒŒ์ผ ๋น„๊ต**: ๊ธฐ๋ณธ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์œผ๋ฉฐ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. 2. **๊ณ ๊ธ‰ Diff ์˜ต์…˜**: ํ†ตํ•ฉ ํ˜•์‹ (`-u`), ๋‚˜๋ž€ํžˆ ๋น„๊ต (`-y`), ๊ณต๋ฐฑ ๋ฌด์‹œ (`-w`) ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ํƒ์ƒ‰ํ–ˆ์œผ๋ฉฐ, ๊ฐ ์˜ต์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋น„๊ต ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค. 3. **ํŒจ์น˜ ํŒŒ์ผ**: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐฐํฌ, ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ์— ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ธ ํŒจ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 4. **๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต**: ์žฌ๊ท€ ์˜ต์…˜ (`-r`) ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ๋™์‹œ์— ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 5. **๋Œ€์ฒด ๋น„๊ต ๋„๊ตฌ**: ์‚ผ๋ฐฉ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff3`, ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์ถœ๋ ฅ์„ ์œ„ํ•œ `colordiff`, ๋‹จ์–ด ๋‹จ์œ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ `wdiff`์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋„๊ตฌ๋ฅผ ์†Œ๊ฐœ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ, ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐ ๊ตฌ์„ฑ ๊ด€๋ฆฌ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ณ , ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ๋งˆ์Šคํ„ฐํ•จ์œผ๋กœ์จ ๋ชจ๋“  Linux ํ™˜๊ฒฝ์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ๋•Œ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ท€์ค‘ํ•œ ๊ธฐ๋Šฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ์ฃผ์ œ [DevOps](https://labex.io/ko/tutorials/category/devops)[์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ](https://labex.io/ko/tutorials/category/cybersecurity)[Kali Linux](https://labex.io/ko/tutorials/category/kali)[DevOps Engineer](https://labex.io/ko/tutorials/category/devops-engineer)[Cybersecurity Engineer](https://labex.io/ko/tutorials/category/cybersecurity-engineer)[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค](https://labex.io/ko/tutorials/category/database)[๋ฐ์ดํ„ฐ ๊ณผํ•™](https://labex.io/ko/tutorials/category/datascience)[Red Hat Enterprise Linux](https://labex.io/ko/tutorials/category/rhel)[CompTIA](https://labex.io/ko/tutorials/category/comptia)[Docker](https://labex.io/ko/tutorials/category/docker)[Kubernetes](https://labex.io/ko/tutorials/category/kubernetes)[Python](https://labex.io/ko/tutorials/category/python)[Git](https://labex.io/ko/tutorials/category/git)[Shell](https://labex.io/ko/tutorials/category/shell)[Nmap](https://labex.io/ko/tutorials/category/nmap)[Wireshark](https://labex.io/ko/tutorials/category/wireshark)[Hydra](https://labex.io/ko/tutorials/category/hydra)[Java](https://labex.io/ko/tutorials/category/java)[SQLite](https://labex.io/ko/tutorials/category/sqlite)[PostgreSQL](https://labex.io/ko/tutorials/category/postgresql)[MySQL](https://labex.io/ko/tutorials/category/mysql)[Redis](https://labex.io/ko/tutorials/category/redis)[MongoDB](https://labex.io/ko/tutorials/category/mongodb)[Golang](https://labex.io/ko/tutorials/category/go)[C++](https://labex.io/ko/tutorials/category/cpp)[C](https://labex.io/ko/tutorials/category/c)[Jenkins](https://labex.io/ko/tutorials/category/jenkins)[Ansible](https://labex.io/ko/tutorials/category/ansible)[Pandas](https://labex.io/ko/tutorials/category/pandas)[NumPy](https://labex.io/ko/tutorials/category/numpy)[scikit-learn](https://labex.io/ko/tutorials/category/sklearn)[Matplotlib](https://labex.io/ko/tutorials/category/matplotlib)[์›น ๊ฐœ๋ฐœ](https://labex.io/ko/tutorials/category/webdev)[HTML](https://labex.io/ko/tutorials/category/html)[CSS](https://labex.io/ko/tutorials/category/css)[JavaScript](https://labex.io/ko/tutorials/category/javascript)[React](https://labex.io/ko/tutorials/category/react) ๊ด€๋ จ [Linux ์ฝ”์Šค](https://labex.io/learn/linux) [![๋ฆฌ๋ˆ…์Šค (Linux) ํ€ต ์Šคํƒ€ํŠธ](https://labex.io/cdn-cgi/image/width=1130,height=582,quality=85,format=auto,onerror=redirect/https://course-cover.labex.io/quick-start-with-linux.png?lang=ko) ๋ฆฌ๋ˆ…์Šค (Linux) ํ€ต ์Šคํƒ€ํŠธ linux](https://labex.io/ko/courses/quick-start-with-linux) [![์ฃผ๋‹ˆ์–ด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋˜๊ธฐ](https://labex.io/cdn-cgi/image/width=1130,height=582,quality=85,format=auto,onerror=redirect/https://course-cover.labex.io/become-a-junior-system-administrator.png?lang=ko) ์ฃผ๋‹ˆ์–ด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋˜๊ธฐ linuxshell](https://labex.io/ko/courses/become-a-junior-system-administrator) [![๋ฆฌ๋ˆ…์Šค ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์•ˆ๋‚ด์„œ](https://labex.io/cdn-cgi/image/width=1130,height=582,quality=85,format=auto,onerror=redirect/https://course-cover.labex.io/linux-for-noobs.png?lang=ko) ๋ฆฌ๋ˆ…์Šค ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์•ˆ๋‚ด์„œ linux](https://labex.io/ko/courses/linux-for-noobs) [![LabEx](https://labex.io/labex-logo-light.svg)](https://labex.io/ko) ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด ์‹ค์Šต ๋žฉ์œผ๋กœ Linux, DevOps ๋ฐ ์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ์„ ๋ฐฐ์šฐ์„ธ์š” ์‹ค์Šต ๋žฉ ์‹ค์Šต ๊ณผ์ • [๋ฆฌ๋ˆ…์Šค ํ•™์Šต](https://labex.io/ko/learn/linux) [ํŒŒ์ด์ฌ ํ•™์Šต](https://labex.io/ko/learn/python) [์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ํ•™์Šต](https://labex.io/ko/learn/cybersecurity) [๋„์ปค ํ•™์Šต](https://labex.io/ko/learn/docker) [CompTIA ํ•™์Šต](https://labex.io/ko/learn/comptia) [์ž๋ฐ” ํ•™์Šต](https://labex.io/ko/learn/java) [๋ฐ์ดํ„ฐ ๊ณผํ•™ ํ•™์Šต](https://labex.io/ko/learn/data-science) [Git ํ•™์Šต](https://labex.io/ko/learn/git) [์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ•™์Šต](https://labex.io/ko/learn/kubernetes) [์นผ๋ฆฌ ๋ฆฌ๋ˆ…์Šค ํ•™์Šต](https://labex.io/ko/learn/kali) [์•ค์„œ๋ธ” ํ•™์Šต](https://labex.io/ko/learn/ansible) [๋ฐ๋ธŒ์˜ต์Šค ํ•™์Šต](https://labex.io/ko/learn/devops) [๋จธ์‹ ๋Ÿฌ๋‹ ํ•™์Šต](https://labex.io/ko/learn/ml) [RHCSA ์‹ค์ „ ์‹œํ—˜](https://labex.io/ko/courses/rhcsa-certification-exam-practice-exercises) [CompTIA ๋ฆฌ๋ˆ…์Šค+](https://labex.io/ko/courses/comptia-linux-plus-training-labs) [ํŒŒ์ด์ฌ ์—ฐ์Šต ๋ฌธ์ œ](https://labex.io/ko/exercises/python) [๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด ์š”์•ฝํ‘œ](https://linux-commands.labex.io/) ์‹ค์Šต ๋žฉ [๋ฆฌ๋ˆ…์Šค ํ”„๋กœ์ ํŠธ](https://labex.io/ko/projects/category/linux) [ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ](https://labex.io/ko/projects/category/python) [์ž๋ฐ” ํ”„๋กœ์ ํŠธ](https://labex.io/ko/projects/category/java) [C ์–ธ์–ด ํ”„๋กœ์ ํŠธ](https://labex.io/ko/projects/category/c) [๋ฐ๋ธŒ์˜ต์Šค ํ”„๋กœ์ ํŠธ](https://labex.io/ko/projects/category/devops) [Go ์–ธ์–ด ํ”„๋กœ์ ํŠธ](https://labex.io/ko/projects/category/go) [Git ์‹ค์Šต](https://labex.io/ko/free-labs/git) [์…ธ ์‹ค์Šต](https://labex.io/ko/free-labs/shell) [์ž๋ฐ” ์‹ค์Šต](https://labex.io/ko/free-labs/java) [๋„์ปค ์‹ค์Šต](https://labex.io/ko/free-labs/docker) [MySQL ์‹ค์Šต](https://labex.io/ko/free-labs/mysql) [MongoDB ์‹ค์Šต](https://labex.io/ko/free-labs/mongodb) [์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹ค์Šต](https://labex.io/ko/free-labs/kubernetes) [๋จธ์‹ ๋Ÿฌ๋‹ ์‹ค์Šต](https://labex.io/ko/free-labs/ml) [์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ์‹ค์Šต](https://labex.io/ko/free-labs/cybersecurity) [Nmap ์‹ค์Šต](https://labex.io/ko/free-labs/nmap) [Wireshark ์‹ค์Šต](https://labex.io/ko/free-labs/wireshark) ๋†€์ดํ„ฐ [์˜จ๋ผ์ธ ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„](https://labex.io/ko/tutorials/linux-online-linux-terminal-and-playground-372915) [๋„์ปค ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/docker-online-docker-playground-372912) [์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/kubernetes-online-kubernetes-playground-593609) [ํŒŒ์ด์ฌ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/python-online-python-playground-372886) [Go ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/go-online-golang-playground-372913) [C++ ์˜จ๋ผ์ธ ์ปดํŒŒ์ผ๋Ÿฌ](https://labex.io/ko/tutorials/cpp-online-c-playground-372911) [์•ค์„œ๋ธ” ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/ansible-online-ansible-playground-415831) [์  ํ‚จ์Šค ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/jenkins-online-jenkins-playground-415838) [์ž๋ฐ” ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/java-online-java-playground-372914) [๋Ÿฌ์ŠคํŠธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://labex.io/ko/tutorials/rust-online-rust-playground-372918) [์นผ๋ฆฌ ๋ฆฌ๋ˆ…์Šค ์˜จ๋ผ์ธ](https://labex.io/ko/tutorials/kali-online-kali-linux-terminal-and-playground-592935) [Nmap ์˜จ๋ผ์ธ](https://labex.io/ko/tutorials/nmap-online-nmap-playground-593613) [์™€์ด์–ด์ƒคํฌ ์˜จ๋ผ์ธ](https://labex.io/ko/tutorials/wireshark-online-wireshark-playground-593624) [MySQL ์˜จ๋ผ์ธ](https://labex.io/ko/tutorials/mysql-online-mysql-playground-372916) [PostgreSQL ์˜จ๋ผ์ธ](https://labex.io/ko/tutorials/kali-online-postgresql-database-playground-593616) [RHCSA ์‹œํ—˜ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ](https://labex.io/ko/tutorials/rhel-online-rhel-terminal-rhcsa-and-rhce-exam-playground-592933) [์ถ”์ฒœ Linux ๋ฐฐํฌํŒ](https://labex.io/ko/lesson/choosing-a-linux-distribution) ํŠœํ† ๋ฆฌ์–ผ [Linux ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/linux) [Docker ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/docker) [Kubernetes ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/kubernetes) [MongoDB ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/mongodb) [PostgreSQL ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/postgresql) [Wireshark ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/wireshark) [DevOps ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/devops) [์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials/category/cybersecurity) [Java ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/java-java-interview-questions-and-answers-593685) [Python ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/python-python-interview-questions-and-answers-593698) [Kubernetes ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/kubernetes-kubernetes-interview-questions-and-answers-593688) [DevOps ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/linux-devops-interview-questions-and-answers-593679) [์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/cybersecurity-cybersecurity-interview-questions-and-answers-593676) [Docker ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/docker-docker-interview-questions-and-answers-593680) [Linux ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/linux-linux-interview-questions-and-answers-593689) [MongoDB ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/mongodb-mongodb-interview-questions-and-answers-593692) [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉด์ ‘ ์งˆ๋ฌธ](https://labex.io/ko/tutorials/linux-database-interview-questions-and-answers-593677) [์ง€์›](https://support.labex.io/)\|[๋ฌธ์˜ํ•˜๊ธฐ](mailto:info@labex.io)\|[ํฌ๋Ÿผ](https://labex.io/ko/forum)\|[ํŠœํ† ๋ฆฌ์–ผ](https://labex.io/ko/tutorials)\|[๋ฌด๋ฃŒ ์‹ค์Šต](https://labex.io/ko/free-labs)\|[LINUX JOURNEY](https://labex.io/ko/linuxjourney)\|[์—ฐ์Šต](https://labex.io/ko/exercises)\|[LABEX TEAMS](https://labex.io/ko/teams)\|[์ œํœด](https://labex.io/ko/questions/labex-affiliate-program-a6jov663)\|[์‚ฌ์ดํŠธ๋งต](https://sitemap.labex.io/)\|[๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ](https://labex.io/ko/privacy)\|[์„œ๋น„์Šค ์ด์šฉ์•ฝ๊ด€](https://labex.io/ko/terms) ยฉ 2017-2026 LabEx Technology Limited All Rights Reserved
Readable Markdown
## ์†Œ๊ฐœ Linux ํŒŒ์ผ ๋น„๊ต ๋žฉ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํŒŒ์ผ ๋น„๊ต๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ถ”์ , ๋ฌธ์ œ ๋””๋ฒ„๊น…, ์ฝ”๋“œ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋˜๋Š” ๊ฐœ๋ฐœ์ž๋กœ์„œ, ๊ตฌ์„ฑ ํŒŒ์ผ, ์ฝ”๋“œ ๋ฒ„์ „ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ž์ฃผ ์‹๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋žฉ์—์„œ๋Š” ํŒŒ์ผ์„ ์ค„ ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ Linux ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. `diff` ๋„๊ตฌ๋Š” ํŒŒ์ผ ๋ฒ„์ „ ๊ฐ„์— ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ, ์ด๋Š” ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์„ ๋งˆ์Šคํ„ฐํ•จ์œผ๋กœ์จ ํŒŒ์ผ ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํŒจ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ „๋ฐ˜์—์„œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ˆ ์€ ์ฝ”๋“œ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋˜๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์ด๋“œ ์‹คํ—˜์ž…๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ ์‹ค์Šต์„ ๋•๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.๊ฐ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์‹ค๋ฌด ๊ฒฝํ—˜์„ ์Œ“๊ธฐ ์œ„ํ•ด ์ง€์นจ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋”ฐ๋ฅด์„ธ์š”. ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅด๋ฉด, ์ด๊ฒƒ์€ ์ดˆ๊ธ‰ ๋ ˆ๋ฒจ์˜ ์‹คํ—˜์ด๋ฉฐ ์™„๋ฃŒ์œจ์€ 96%์ž…๋‹ˆ๋‹ค.ํ•™์Šต์ž๋“ค๋กœ๋ถ€ํ„ฐ 100%์˜ ๊ธ์ •์ ์ธ ๋ฆฌ๋ทฐ์œจ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ## diff ๋ช…๋ น์–ด ์ดํ•ด `diff` ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ์„ ์ค„ ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ Linux ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” `diff` ๋ช…๋ น์–ด์˜ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ๊ณผ ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € `diff` ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. `/home/labex/project` ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ``` which diff ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` /usr/bin/diff ``` ์ด๋Š” `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ๋“  ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` sudo apt-get update && sudo apt-get install -y diffutils ``` ์ด์ œ ๋น„๊ตํ•  ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„ค์ •์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config1.txt echo "motor_speed = 100" >> /home/labex/project/files/config1.txt echo "acceleration = 20" >> /home/labex/project/files/config1.txt echo "max_rotation = 180" >> /home/labex/project/files/config1.txt ``` ์ด์ œ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config2.txt echo "motor_speed = 120" >> /home/labex/project/files/config2.txt echo "acceleration = 20" >> /home/labex/project/files/config2.txt echo "max_rotation = 180" >> /home/labex/project/files/config2.txt ``` ๋‘ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋‘ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config1.txt ``` ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm motor_speed = 100 acceleration = 20 max_rotation = 180 ``` ์ด์ œ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์„ ๋ด…๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config2.txt ``` ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ์ด์ œ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‘ ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` 2c2 < motor_speed = 100 --- > motor_speed = 120 ``` ์ด ์ถœ๋ ฅ์€ ๋‹ค์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. - ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์˜ 2 ํ–‰์„ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์˜ 2 ํ–‰๊ณผ ์ผ์น˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - `<`๋Š” ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์˜ ํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - `>`๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์˜ ํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - `---`๊ฐ€ ์žˆ๋Š” ํ–‰์€ ๋‘ ๋ฒ„์ „์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์€ `motor_speed` ๊ฐ’์ด `100`์—์„œ `120`์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ## ๊ณ ๊ธ‰ diff ์˜ต์…˜ ์‚ฌ์šฉ ์ด์ „ ๋‹จ๊ณ„์—์„œ๋Š” ๋‘ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์ธ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ถœ๋ ฅ์„ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ณ ๊ธ‰ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### ํ†ตํ•ฉ ํ˜•์‹ (-u ์˜ต์…˜) ํ†ตํ•ฉ ํ˜•์‹์€ ์ฐจ์ด์ ์„ ๋” ์ปจํ…์ŠคํŠธ ์ธ์‹ ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. `-u` ์˜ต์…˜์€ ์ฐจ์ด์  ์ฃผ๋ณ€์˜ ์—ฌ๋Ÿฌ ์ค„์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. `-u` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` --- /home/labex/project/files/config1.txt 2023-01-01 00:00:00.000000000 +0000 +++ /home/labex/project/files/config2.txt 2023-01-01 00:00:00.000000000 +0000 @@ -1,4 +1,4 @@ ## Configuration File for Robot Arm -motor_speed = 100 +motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ์ด ํ˜•์‹์—์„œ: - `-` (๋งˆ์ด๋„ˆ์Šค) ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ค„์€ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. - `+` (ํ”Œ๋Ÿฌ์Šค) ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ค„์€ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. - ํ—ค๋”๋Š” ์–ด๋–ค ํŒŒ์ผ์ด ๋น„๊ต๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. - `@@ -1,4 +1,4 @@` ์„น์…˜์€ ํ‘œ์‹œ๋˜๋Š” ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ### ๋‚˜๋ž€ํžˆ ํ˜•์‹ (-y ์˜ต์…˜) ๋‚˜๋ž€ํžˆ ํ˜•์‹์€ ๋‘ ํŒŒ์ผ์„ ๋ณ‘๋ ฌ ์—ด๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ฐจ์ด์ ์„ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ``` diff -y /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm ## Configuration File for Robot Arm motor_speed = 100 | motor_speed = 120 acceleration = 20 acceleration = 20 max_rotation = 180 max_rotation = 180 ``` ์ด ๋ณด๊ธฐ์—์„œ: - ์ค‘๊ฐ„์˜ `|` ๋ฌธ์ž๋Š” ์ค„์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - ๋™์ผํ•œ ์ค„์€ ๋งˆ์ปค ์—†์ด ๋‘ ์—ด ๋ชจ๋‘์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ### ๊ณต๋ฐฑ ๋ฌด์‹œ (-w ์˜ต์…˜) ๋•Œ๋กœ๋Š” ๊ณต๋ฐฑ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋‚ด์šฉ๋งŒ ๋น„๊ตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. `-w` ์˜ต์…˜์€ ๋ชจ๋“  ๊ณต๋ฐฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐ„๊ฒฉ์œผ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config3.txt echo "motor_speed = 100 " >> /home/labex/project/files/config3.txt echo "acceleration = 20" >> /home/labex/project/files/config3.txt echo "max_rotation = 180" >> /home/labex/project/files/config3.txt ``` ์ด์ œ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ๊ณผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์˜ต์…˜ ์—†์ด, ๊ทธ ๋‹ค์Œ `-w` ์˜ต์…˜์œผ๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` diff /home/labex/project/files/config1.txt /home/labex/project/files/config3.txt ``` ๊ณต๋ฐฑ์œผ๋กœ ์ธํ•ด ์ฐจ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. ``` diff -w /home/labex/project/files/config1.txt /home/labex/project/files/config3.txt ``` `-w` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ผํ•œ ๋ณ€ํ˜•์ด ๊ณต๋ฐฑ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— `diff`๋Š” ์ฐจ์ด์ ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ์˜ต์…˜์€ `diff`๋ฅผ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ํŒŒ์ผ ํ˜•์‹์— ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ต์…˜์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ถœ๋ ฅ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ ์šฉ ํŒจ์น˜ ํŒŒ์ผ์€ ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํŒจ์น˜ ํŒŒ์ผ์—๋Š” ๋‘ ๋ฒ„์ „์˜ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•œ ๋ฒ„์ „์„ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ### ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ `config1.txt`์™€ `config2.txt` ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์บก์ฒ˜ํ•˜๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt > /home/labex/project/files/config.patch ``` ์ด ๋ช…๋ น์–ด๋Š” ํ†ตํ•ฉ diff ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ `config.patch`๋ผ๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจ์น˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config.patch ``` `diff -u` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` --- /home/labex/project/files/config1.txt 2023-01-01 00:00:00.000000000 +0000 +++ /home/labex/project/files/config2.txt 2023-01-01 00:00:00.000000000 +0000 @@ -1,4 +1,4 @@ ## Configuration File for Robot Arm -motor_speed = 100 +motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ### ํŒจ์น˜ ํŒŒ์ผ ์ ์šฉํ•˜๊ธฐ ์ด์ œ `config1.txt`์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cp /home/labex/project/files/config1.txt /home/labex/project/files/config1_copy.txt ``` ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด `patch` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ``` patch /home/labex/project/files/config1_copy.txt < /home/labex/project/files/config.patch ``` ํŒจ์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ ์šฉ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` patching file /home/labex/project/files/config1_copy.txt ``` ํŒจ์น˜๋œ ํŒŒ์ผ์ด ์ด์ œ `config2.txt`์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/config1_copy.txt ``` ์ถœ๋ ฅ์€ `config2.txt`์™€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``` ## Configuration File for Robot Arm motor_speed = 120 acceleration = 20 max_rotation = 180 ``` ํŒจ์น˜๋œ ํŒŒ์ผ๊ณผ `config2.txt` ๊ฐ„์— ์ฐจ์ด์ ์ด ์—†๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff /home/labex/project/files/config1_copy.txt /home/labex/project/files/config2.txt ``` ์ถœ๋ ฅ์ด ์—†์œผ๋ฉด ํŒŒ์ผ์ด ๋™์ผํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, ํŒจ์น˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ### ๋” ๋ณต์žกํ•œ ํŒจ์น˜ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ ์ƒˆ ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ์ค„์„ ์ˆ˜์ •ํ•˜์—ฌ ๋” ๋ณต์žกํ•œ ํŒจ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cp /home/labex/project/files/config1.txt /home/labex/project/files/config4.txt ``` ์ด์ œ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ``` echo "## Updated Configuration File for Robot Arm" > /home/labex/project/files/config4.txt echo "motor_speed = 150" >> /home/labex/project/files/config4.txt echo "acceleration = 25" >> /home/labex/project/files/config4.txt echo "max_rotation = 270" >> /home/labex/project/files/config4.txt echo "safety_limit = enabled" >> /home/labex/project/files/config4.txt ``` ์ด์ œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํŒจ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ``` diff -u /home/labex/project/files/config1.txt /home/labex/project/files/config4.txt > /home/labex/project/files/complex.patch ``` ์ด ๋” ๋ณต์žกํ•œ ํŒจ์น˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` cat /home/labex/project/files/complex.patch ``` ์ถ”๊ฐ€, ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ค„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด์—ฌ์ฃผ๋Š” ํŒจ์น˜ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๊ณ  ํŒŒ์ผ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ์ถ”์ ํ•˜๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ณต์œ , ์—…๋ฐ์ดํŠธ ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ## ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต ๋ฐ ๊ธฐํƒ€ ๋น„๊ต ๋„๊ตฌ ์‚ฌ์šฉ ๊ฐœ๋ณ„ ํŒŒ์ผ ๋น„๊ต ์™ธ์—๋„ Linux ๋Š” ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด ๋น„๊ต ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ### diff ๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ตํ•˜๊ธฐ `diff` ๋ช…๋ น์–ด๋Š” `-r` (์žฌ๊ท€์ , recursive) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ตํ•  ํŒŒ์ผ์ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` mkdir -p /home/labex/project/dir1 mkdir -p /home/labex/project/dir2 ## ์ฒซ ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ ์ƒ์„ฑ echo "This is file 1" > /home/labex/project/dir1/file1.txt echo "This is file 2" > /home/labex/project/dir1/file2.txt echo "This is file 3" > /home/labex/project/dir1/file3.txt ## ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ ์‚ฌํ•œ ํŒŒ์ผ ์ƒ์„ฑ echo "This is file 1 - modified" > /home/labex/project/dir2/file1.txt echo "This is file 2" > /home/labex/project/dir2/file2.txt ## ์ฐธ๊ณ : file3.txt๋Š” dir2์— ์—†์Œ echo "This is a new file" > /home/labex/project/dir2/file4.txt ``` ์ด์ œ ์ด๋Ÿฌํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` diff -r /home/labex/project/dir1 /home/labex/project/dir2 ``` ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` diff -r /home/labex/project/dir1/file1.txt /home/labex/project/dir2/file1.txt 1c1 < This is file 1 --- > This is file 1 - modified Only in /home/labex/project/dir1: file3.txt Only in /home/labex/project/dir2: file4.txt ``` ์ด ์ถœ๋ ฅ์€ ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. - `file1.txt`์˜ ๋‚ด์šฉ ์ฐจ์ด - `file3.txt`๋Š” `dir1`์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. - `file4.txt`๋Š” `dir2`์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. - `file2.txt`๋Š” ๋‘ ๋””๋ ‰ํ† ๋ฆฌ ๋ชจ๋‘์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค (๋”ฐ๋ผ์„œ ์ฐจ์ด์ ์ด ๋ณด๊ณ ๋˜์ง€ ์•Š์Œ). ### diff3 ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ ์„ธ ๊ฐœ์˜ ํŒŒ์ผ (์˜ˆ: ์—ฌ๋Ÿฌ ์†Œ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•  ๋•Œ) ์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ `diff3` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์ฒด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์„ธ ๋ฒˆ์งธ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` echo "## Configuration File for Robot Arm" > /home/labex/project/files/config5.txt echo "motor_speed = 100" >> /home/labex/project/files/config5.txt echo "acceleration = 30" >> /home/labex/project/files/config5.txt echo "max_rotation = 180" >> /home/labex/project/files/config5.txt ``` ์ด์ œ `diff3`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` diff3 /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt /home/labex/project/files/config5.txt ``` `diff3`์˜ ์ถœ๋ ฅ ํ˜•์‹์€ ์•ฝ๊ฐ„ ๋” ๋ณต์žกํ•˜์ง€๋งŒ ๊ฐ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ํŒŒ์ผ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋ณด์—ฌ์ฃผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ### colordiff ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ `colordiff` ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” `diff`์˜ ๋ž˜ํผ๋กœ, ๋™์ผํ•œ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์ƒ‰์ƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋จผ์ € `colordiff`๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` sudo apt-get update && sudo apt-get install -y colordiff ``` ์ด์ œ `colordiff`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` colordiff /home/labex/project/files/config1.txt /home/labex/project/files/config2.txt ``` ์ถœ๋ ฅ์€ ์ผ๋ฐ˜ `diff` ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋ฐ ๋ณ€๊ฒฝ๋œ ์ค„์— ๋Œ€ํ•œ ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ### wdiff ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ `wdiff` (๋‹จ์–ด diff) ๋ช…๋ น์–ด๋Š” ์ค„ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋‹จ์–ด ๋‹จ์œ„๋กœ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋ฏ€๋กœ ์‚ฐ๋ฌธ์ด๋‚˜ ๋ฌธ์„œ์— ๋” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `wdiff`๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` sudo apt-get update && sudo apt-get install -y wdiff ``` ๋ฌธ์žฅ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ``` echo "The robot arm moves quickly and efficiently." > /home/labex/project/files/sentence1.txt echo "The robot arm moves slowly but efficiently." > /home/labex/project/files/sentence2.txt ``` ์ด์ œ `wdiff`๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ``` wdiff /home/labex/project/files/sentence1.txt /home/labex/project/files/sentence2.txt ``` ๋ณ€๊ฒฝ๋œ ๋‹จ์–ด๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜๋Š” ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` The robot arm moves [-quickly and-] {+slowly but+} efficiently. ``` Linux ์˜ ๋‹ค์–‘ํ•œ ๋น„๊ต ๋„๊ตฌ๋Š” ๋‹ค์–‘ํ•œ ๋ชฉ์ ๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. - ์ผ๋ฐ˜ ํŒŒ์ผ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff` - ๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff -r` - ์‚ผ๋ฐฉ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff3` - ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์ถœ๋ ฅ์„ ์œ„ํ•œ `colordiff` - ๋‹จ์–ด ๋‹จ์œ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ `wdiff` ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋ฉด ํŒŒ์ผ ๋น„๊ต๋ฅผ ๋” ํšจ๊ณผ์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ์š”์•ฝ ์ด Lab ์—์„œ๋Š” ๋‹ค์žฌ๋‹ค๋Šฅํ•œ `diff` ๋ช…๋ น์–ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ Linux ์—์„œ ํŒŒ์ผ ๋น„๊ต ๋„๊ตฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์Šต๋“ํ•œ ์ฃผ์š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. 1. **๊ธฐ๋ณธ ํŒŒ์ผ ๋น„๊ต**: ๊ธฐ๋ณธ `diff` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์œผ๋ฉฐ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. 2. **๊ณ ๊ธ‰ Diff ์˜ต์…˜**: ํ†ตํ•ฉ ํ˜•์‹ (`-u`), ๋‚˜๋ž€ํžˆ ๋น„๊ต (`-y`), ๊ณต๋ฐฑ ๋ฌด์‹œ (`-w`) ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ํƒ์ƒ‰ํ–ˆ์œผ๋ฉฐ, ๊ฐ ์˜ต์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋น„๊ต ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค. 3. **ํŒจ์น˜ ํŒŒ์ผ**: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐฐํฌ, ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ์— ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ธ ํŒจ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 4. **๋””๋ ‰ํ† ๋ฆฌ ๋น„๊ต**: ์žฌ๊ท€ ์˜ต์…˜ (`-r`) ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ๋™์‹œ์— ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 5. **๋Œ€์ฒด ๋น„๊ต ๋„๊ตฌ**: ์‚ผ๋ฐฉ ๋น„๊ต๋ฅผ ์œ„ํ•œ `diff3`, ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์ถœ๋ ฅ์„ ์œ„ํ•œ `colordiff`, ๋‹จ์–ด ๋‹จ์œ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ `wdiff`์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋„๊ตฌ๋ฅผ ์†Œ๊ฐœ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ ๋น„๊ต ๊ธฐ์ˆ ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ, ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐ ๊ตฌ์„ฑ ๊ด€๋ฆฌ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ณ , ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ๋งˆ์Šคํ„ฐํ•จ์œผ๋กœ์จ ๋ชจ๋“  Linux ํ™˜๊ฒฝ์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ๋•Œ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ท€์ค‘ํ•œ ๊ธฐ๋Šฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
Shard28 (laksa)
Root Hash1963243295958744828
Unparsed URLio,labex!/ko/tutorials/linux-linux-file-comparing-271269 s443