โน๏ธ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.2 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://labex.io/ko/tutorials/linux-linux-file-comparing-271269 |
| Last Crawled | 2026-04-05 01:30:15 (6 days ago) |
| First Indexed | not set |
| HTTP Status Code | 200 |
| Meta Title | Linux ํ์ผ ๋น๊ต - diff ๋ช ๋ น์ด ํ์ฉ ๋ฐ ์ค์ต | LabEx |
| Meta Description | `diff` ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Linux ํ์ผ ๋น๊ต ๊ธฐ์ ์ ๋ฐฐ์ฐ์ธ์! ๊ณ ๊ธ ์ต์ ๋ง์คํฐ, ํจ์น ํ์ผ ์์ฑ, ๋๋ ํ ๋ฆฌ ๋น๊ต. ์ด ์ค์ต์ ํตํด Linux ํ์ผ ๋น๊ต ๋ฅ๋ ฅ์ ํฅ์์ํค์ธ์. |
| Meta Canonical | null |
| 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 | [](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 ํ์ผ ๋น๊ต
[Linux](https://labex.io/learn/linux)
Beginner

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)
[](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) ํต ์คํํธ linux](https://labex.io/ko/courses/quick-start-with-linux)
[ ์ฃผ๋์ด ์์คํ
๊ด๋ฆฌ์ ๋๊ธฐ linuxshell](https://labex.io/ko/courses/become-a-junior-system-administrator)
[ ๋ฆฌ๋
์ค ์ด๋ณด์๋ฅผ ์ํ ์๋ด์ linux](https://labex.io/ko/courses/linux-for-noobs)
[](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 ํ๊ฒฝ์์ ํ
์คํธ ํ์ผ๋ก ์์
ํ ๋ ํจ์จ์ฑ์ ํฅ์์ํฌ ์ ์๋ ๊ท์คํ ๊ธฐ๋ฅ์ ์ป์์ต๋๋ค. |
| Shard | 28 (laksa) |
| Root Hash | 1963243295958744828 |
| Unparsed URL | io,labex!/ko/tutorials/linux-linux-file-comparing-271269 s443 |