}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2019년 7월 31일 수요일

하드링크 소프트링크(파일과 디렉토리 차이, inode) 매우 자세히!

안녕하세요 마무입니다 오늘도 저의 블로그를 찾아주셔서 너무나 감사합니다! 오늘은 "하드링크 소프트링크", "심볼릭링크 소프트링크",  "파일과 디렉토리", "Inode(아이노드)란"에 대해서 포스팅을 하겠습니다~

이 포스트를 다 읽으시면

리눅스 파일과 디렉토리 차이, inode란, 하드링크 소프트링크

에 대해서 확실하게 아시게 될겁니다!


위 개념들은 리눅스를 GUI에서 사용하면 솔직히 몰라도 될 것 같지만
실제로 사용할 땐 CLI, TUI환경에서 사용할 것이고, 그 때문에 꼭 알아둬야 합니다.

오늘 이 포스트를 다 읽으시면 리눅스의 파일과 디렉토리, I-node에 대해서 잘 알게되실 겁니다!

---목차---

1. 리눅스에서 파일과 디렉토리란?
i)I-node     
ii) 리눅스 파일 종류
iii) 소프트(볼릭)링크와 하드링크, 복사
iv) 파일 이름과 확장자
v) 총 정리

-----------  



입니다.

여기서 못 찾은 정보는
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
운영체제 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_15.html
네트워크 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_14.html
에서 찾아보세요!





1. 리눅스에서 파일과 디렉토리란?


보통 대부분 "파일"이라는 것은 다들 아실겁니다. 하지만
"디렉토리"라는 것은 생소하실 텐데요

어렵게 생각할 것 없습니다. 그냥 윈도우의 "폴더"와 같다고 생각하시면 돼요

실제로도 거의 비슷하게 생겼습니다.













이렇게 생긴 윈도우의 폴더와














이렇게 생긴 리눅스의 디렉토리,

둘다 생김새도 별 차이가 없죠? 기능도 크게 차이가 없답니다.

혹시 "디렉토리", "디렉터리"가 다른건가 생각하시는 분들이 있을까봐 말하는데
같은 겁니다. 제가 옛날에 리눅스 배울 때 강사가 어떨 땐 디렉토리라 하고
어떨 땐 디렉터리라 해서 헷갈린 적이 있었는데

결국 둘은 같은 거였죠 하핳

리눅스의 특징은 모든 데이터를 파일로 표현하는데요

우리가 흔히 볼 수 있는 "평범한 파일"부터, 우리가 터미널에서 사용하는 "명령어", 심지어
"디스크나 하드웨어"까지 모두 파일로 인식하고 파일로 다룬다는 것입니다.
파일에 대해 자세히 알기전에 저흰 먼저 I-node에 대해서 알아야합니다



i) I-node(아이노드)란 


"i-node"
혹은 "inode"란  I(Index) Node의 줄임말로
Index : 색인 = 어떤 내용을 빨리 찾아보기 위해 일정한 순서로 정리한 목록

Node : 데이터의 지점이나 장치 =  데이터를 갖고 있는, 디스크의 한 지점이나 컴퓨터, 휴대폰, 프린트같은 장치들을 노드라 한다

정리하자면
i-node = 데이터를 갖고있는 것(파일)을 빠르게 찾기 위해 순서대로 정리한 정보
이렇게 이해하시면 될 것 같습니다.

리눅스에서 i-node는 "ls -l(L)" 이라는 명령어로 확인할 수 있는데요
터미널에서 명령어를 쳐보면



















이렇게 파일들의 정보가 나오는데요, 바로 이 파일들의 정보가 inode입니다.
다시말해서, drwxr-xr-x 2 root root 6 7월 31 15:27 이런식으로 돼 있는게 "I-node"
라는 겁니다.

이 "i-node"의 구성은 






맨 앞에서부터

1.파일형식(- , d , l, b , c, p, s)

2.파일권한(소유자,그룹,그 외사람들)

3.링크 수

4.파일 소유주

5.파일 그룹

6.파일크기

7.파일이 만들어진 시간

입니다. 

이런식으로 리눅스에서 다루는 모든 파일은 "i-node"를 가지고 있고, 또 새로운 파일이 생성될 때 i-node도 같이 생성됩니다

리눅스에선 이런 i-node들을 모아두는 곳이 "i-node list table" 라고 있습니다. 
(자세한건 파일시스템 총 정리 포스트에 있습니다. : https://mamu2830.blogspot.com/2019/10/chs-lba.html)

그리고 테이블에서 "i-node"를 구분하기 위해 각 "i-node"엔 번호가 붙어있습니다

만약 "i-node 번호"를 보고 싶으시면 "ls -i"이나 "ls -li"처럼 "-i"옵션을 추가로 붙여주시면






이런식으로 맨 왼쪽에 뜹니다.




ii) 리눅스 파일 종류 


리눅스는 모든 데이터를 파일로 표현한다고 했는데요

리눅스의 파일은 특수파일, 디렉토리 파일 ,일반 파일, 링크파일 이렇게 4가지로 
나눌 수 있습니다.  간단히만 알고 갑시다

1. 특수 파일

리눅스가 지원하는 특수 파일에는 "파이프", "주변장치", "소켓" 같은 것들이 있습니다.
파이프, 소켓이 뭔지 모르실 분들을 위해 간단히 설명드리자면

프로그래밍을 배우셨던 분들은 모두 아실 "|" 이렇게 생긴 특수기호가 "파이프"입니다

"소켓"은 프로그램이 서버와 통신을 할 때 "네트워크 접속을 위한 연결장치 역할을 하는 소프트웨어" 입니다.

아까 i-node의 첫 번째 순서가 파일형식이라고 했었죠?

파일형식 7개중 4개가(b,c,p,s) 바로 특수파일입니다.

b : 블록(운영체제가 사용하는 용량단위)형 특수 장치파일(디스크파일인 /dev/sda 같은 것)










c : 문자형 특수 파일 (입출력에 사용하는 콘솔(터미널) /dev/console 같은 것)








p : 파이프 특수 파일







s : 소켓 특수 파일









이렇게 "i-node"의 맨 앞을 봤을 때 앞서 말한 4가지 형식중 하나에 속한다면 "아~ 특수파일이구나" 하시면 되겠습니다.


파이프와 소켓외 주변장치 같은 걸 리눅스에서 파일로 사용되고 다루어진다는 것을 예시로 들어 설명 해보자면 윈도우 같은 경우에는 "디스크를" 'C:' , 'D:' 이렇게 표시하죠?






그리고 윈도우 디스크 순서는 C -> D -> E 이런식으로 보통 이어진다면

리눅스에서의 디스크는 "/dev" 디렉토리 안에 sda, sdb, sdc.... 이렇게 끝의 알파벳이 증가하는 식으로 디스크가 파일형식으로 있습니다.







이렇게 말이죠

"sda1" ,"sda2" 이런 숫자는 파티션입니다.

"partition"이란 영어 그대로 "sda란 드라이브"를 "sda1 ,sda2"이렇게 2개로 나눈거라 보시면 됩니다.

참고로 저희는 리눅스를 처음 세팅할 때 디스크를 한개만 설정했기에 보통은 "sda"로 시작하는 파일들만 있을겁니다만 VM에서 디스크를 추가하면 "sdb ,sdc" 이렇게 순서대로 생깁니다!

디스크 외에도 리눅스는 디바이스(장치)도 모두 "특수 파일"취급합니다







이렇게 "dev(device)"디렉토리 안을 보시면

우리가 아는 "bus(교통수단 bus가 아닌거 아시죠?)"나 "cpu", "cdrom" 같은 장치들이 파일형식으로 있는 걸 볼 수 있습니다.


2.디렉토리 파일


보통 줄여서 "디렉토리(Directory)"라고 부릅니다만 엄연히 따지면 "디렉토리 파일"입니다
디렉토리의 특징은 윈도우의 폴더처럼 트리형식으로 안에 다른 파일들을 가질 수 있습니다

트리구조란, 나무를 보시면 줄기로 시작해서 여러 가지로 나눠지고 또 그 가지에서 또 다른 가지로 나눠지죠? 그런식으로 상위폴더가 하위폴더를 또 하위폴더가 또 다른 하위폴더를 가지고 있는 그런 구조를 트리(나무) 구조라 합니다.

보통 유저의 홈인 '~'에서 "ls" 명령어로 보시면






이렇게 하얀색 이름과 파란색 이름이 나오는데요.
 보통 "파랑색 이름""디렉토리"입니다 여기선 한글로 지어진 파일들이 디렉토리입니다.

하지만 여기서 중요한게 있습니다.

색깔을 너무 맹신하면 안된다는 것이죠 왜냐면 색깔은 설정에 따라 달라지기 때문입니다.
그럼 디렉토리랑 파일을 어떻게 구분하는가?

그 때 바로 쓰이는 것이 첨에 배운 "i-node"입니다

i-node를 볼 수 있는 "ls -l" 명령어를 쳐보시면


















i-node 맨 앞자리에 "-" 인 것과 "d"인 것이 있죠?

"-"는 그냥 "일반 파일"이란 뜻이고
"d"는 directory, 즉 "디렉토리"란 뜻입니다

이처럼 저희는 i-node를 통해 맨앞에 "d"를 보고 디렉토리란 걸 알 수 있다는 것입니다.


3. 일반파일


데이터를 관리하는데 주로 사용되는 일상적인 파일은 대부분 다 일반 파일이라 볼 수 있습니다.

실행파일이나, 이미지파일, 프로그램 소스파일, 텍스트파일 등등이 여기에 속하죠

그리고 위에 말했다시피 일반파일은 i-node의 맨앞이 "-"로 표시됩니다.

참고로 "실행 파일"이나 "이미지 파일"의 경우 데이터가 "바이너리(이진)" 형태로 저장되어 있기 때문에 텍스트 파일 읽을 때 처럼 "cat" 이나 "vi" 명령어로 읽을 수 없습니다.







"ll"은 "ls -l"을 "alias"로 등록한 겁니다.(ll = ls -l)

보시면 "yum"과 "mount" 둘다 명령어로 쓰이는 일반 파일인데 "mount"만 붉은색이죠?

둘의 차이는 "yum"스크립트 형태로 있다가 쉘이 해석하면서 바이너리(이진수로 변환)화 하는 것이고

"mount"그냥 이진수 파일 즉 바이너리 파일로 있는 겁니다. 그래서 문장을 읽는 "cat"이나 "vi" 명령어로





이렇게 "yum"파일은 읽을 수 있지만





"mount"파일은 읽을 수가 없습니다. 이진 파일이기 때문이죠.

그럼 어떻게 바이너리 파일인지 텍스트(스크립트) 파일인지 구분할 수 있느냐?
이 때 파일의 종류를 알려주는 "file"이란 명령어를 사용하시면 됩니다




이런 영어가 나오면 ASCII 문자로 쓰여진 실행가능한 텍스트 스크립트(코드) 파일이란
것이구






이런 설명들이 나오면 이진파일이란 뜻입니다.



4. 링크파일


이름 그대로 "링크(연결)" 역할을 하는 파일로서 종류엔 "소프트링크(심볼릭 링크)"
"하드링크"가 있습니다.

링크파일은






요렇게 아이노드 맨앞이 "l"로 표시됐는데, 함정은 "소프트 링크만" 이렇게 표시됩니다.
"하드링크"는 "l"로 표시가 안돼 있죠...


링크파일의 자세한 내용은 바로 밑에서 다루겠습니다.




iii) 소프트(심볼릭)링크와 하드링크 복사 차이 


시작하기에 앞서 혹시나해서 설명하자면 "소프트링크""심볼릭링크"같은 겁니다.
어떤 분들은 "심볼릭" 링크라는 이름을 더 많이 쓰시고 누군(저는) "소프트링크" 라는 이름을 많이 쓰죠.

개념부터 설명해드리자면

소프트(심볼릭)링크는

심볼릭(symbolic) : 상징적인(뭔가를 나타내는)
소프트(soft) : 만질 수 없는, 실체가 없는
링크(link) : 연결(링크파일을 클릭하면 원본과 연결시켜주는 것, 인터넷에서 사용하는 흔한 링크, 하이퍼링크의 링크와 같다고 보시면 됩니다)

즉 , 소프트(심볼릭)링크"실체가 없고 원본과 연결된 파일"
또는
"어떤 파일과 연결된 상징적인 파일"이라 할 수 있습니다.


하드링크는

하드(hard) : 만질 수 있는, 실체가 있는
링크(link) : 연결

즉, 하드링크는 "실체가 있으며 원본과 연결된 파일" 이라 할 수 있습니다.

먼저 소프트(심볼릭)링크는 "ln -s(soft or symbolic)" 란 명령어로 만들 수 있습니다
정확히는 "ln -s [링크만들 대상파일] [링크파일이름]
입니다.

사진을 보시죠

저는 위의 사진 명령어를 치기전에 "touch"라는 빈파일을 만드는 명령어를 이용해서
"fff"라는 빈 파일을 만든다음






"fff"파일을 위에서 말한 "ln -s"명령어를 이용해  "fff_soft" 라는 링크파일을 만들었습니다.
만든 뒤 "ll(ls -l)"명령어로 보시면




위쪽 2번째에 "34497201 lrwxrwxrwx 1 root root 4 8월 2 20:18 fff_soft -> fff" 이렇게
소프트 링크가 만들어진 것을 볼 수 있습니다

원본인 fff에 비교해서, 권한도 다르고, i-node 번호도 다르고, 파일크기도 다릅니다
하지만 생성된 시간은 같다고 보이죠 링크파일 즉,  원본이랑 연결됐기(링크됐기) 때문입니다.

"소프트링크"윈도우의 "바로가기"거의 같다고 보시면 됩니다.
윈도우의 바로가기가 뭡니까?

윈도우의 "디스크 C:" 또는 "D:"에 설치된 원본을 일일이 드라이브에 들어가서 실행하기
귀찮으니 바탕화면에 만들어 두고 클릭하면 원본이 실행되는 파일 아닙니까?





보통 게임을 깔면 바탕화면에 생기는 아이콘은 대부분 바로가기라 보시면 됩니다

실제로 바탕화면에 있는 바로가기는 용량도 원본과 비교하면 거의 없다고 할 수 있을만큼 적습니다. 연결역할만 하기 때문이죠

그래서 바탕화면에 있는 아이콘을 지운다 한들 오버워치 프로그램이 진짜로 삭제되진 않죠






진짜 오버워치는 이렇게 드라이브에 들어있으니까 말입니다. 이와 마찬가지로 리눅스의 "소프트링크"는 윈도우의 "바로가기" 처럼 삭제해도 원본에 영향을 주지 않습니다.

하지만 반대로 실제 드라이브에 있는 원본을 삭제하면바로가기와 마찬가지로 소프트 링크는 사용 할 수 없습니다.




하드링크는 소프트 링크 만드는 명령어에서 "-s"옵션을 뺀

ln [하드링크 만들 대상] [하드링크 파일 이름]
로 만들 수 있습니다







이런식으로 말이죠

"ll -i(ls -li)"로 확인해보시면





이렇게 "asd_hard"라 하는 "하드링크"가 만들어진게 보이실 겁니다

소프트링크와는 다르게 원본을 가리키는 화살표도 없고i-node 번호도 같고 ,권한도 똑같고 , 소프트링크와  같이 생성된 시간도 같고 심지어 용량도 같습니다.

오직 이름만 다릅니다. 이렇듯 "하드링크"는 "원본과 똑같은 녀석"입니다.

진짜로 똑같은, 같은 녀석입니다. 왜냐면 같은 i-node 번호인 파일을 이름만 바꿔서 새로 만든거니까요. 뭔가 복사랑 헷갈리시지 않나요?

하지만 복사랑은 다릅니다. "복사"는 말그대로 똑같지만 "다른 객체를 만드는 것"이지만
하드링크는 그냥 똑같은 녀석을 이름만 바꾼 것입니다. 마치 제가 온라인상에서 "매니"라는 닉네임과 "마무"라는 닉네임을 둘다 사용하는 것과 같습니다.

매니든, 마무든 결국 저는 하나죠.

그래서 "복사"는 복사본을 바꿔도 원본은 그대로지만 "하드링크"는 하드링크 파일을 바꾸면 원본도 똑같이 바뀝니다.

예시를 들자면

"복사(copy)"는 만화 "나루토"에서의 그림자 분신술이고
"하드링크(hard link)"는 만화 "원피스"에서의 로빈의 꽃꽃열매 기술입니다

두 만화를 모르시면 이해가 안될테니 보충설명을 하자면

나루토 카카시 방울 뺏기에 대한 이미지 검색결과











위 사진처럼 나루토의 그림자 술법은 분신을 만들었을 때 분신이 피해를 입으면 분신만 상처를 입지 본인은 상처를 입지 않습니다 오른쪽 하단에 구경만 하는 본체가 보이십니까?

하지만 원피스의 꽃꽃열매는 자신의 신체인 팔이나 다리같은걸 마구마구 분신마냥 생성 해서 움직일 수 있지만, 이 분신에 상처를 입으면 본인도 똑같이 상처를 입습니다

로빈이 먹은 악마의 열매의 명칭은 꽃꽃 열매. 즉 말 그대로 신체의 일부분을 어느 곳에서라도 꽃처럼 피어나게 할 수 있는 능력이다. 지면이나 자신의 신체, 혹은 타인의 신체에도 피어나게 할 수 있으며 동시에 두 종류의 신체를 피어나게 해 사용하는 것도 가능. 20년 동안이나 능력을 쓴 만큼 로빈의 악마의 열매 응용력은 밀짚모자 해적단 중에서도 가장 톱 클래스이며 로빈은 이 능력을 공격, 방어, 탐색, 도청, 절도, 비행 등의 다방면으로 사용하고 있다. 피어낸 신체에 상처가 난다고 본체의 부분에도 똑같이 상처가 나지는 않지만, 감각은 그대로 전달된다. 악마의 열매 능력에 의한 접촉에는 본체에도 영향이 간다. 자연계 능력자와 해왕류나 해수, 거인족같은 크기가 거대한 상대에게는 이 능력이 통하지 않는다. (2년뒤 현재에는 자신까지도 분신할 수 있을 정도로 능력이 진화되었다.)-위키백과


로빈이 능력 사용중 동시에 상처를 입는 장면을 찾기가 힘들어서 위키백과 내용을 가져왔습니다. ㅠㅠㅠ

이렇듯 "복사"와 "하드링크"는 완전히 다른 거란 것입니다.

확실히 구분하기위해 복사하는 명령여 "cp"를 이용해 "asd"란 파일을 복사해봅시다




이렇게 말이죠

그리고 "ll -i" 명령어로 홈을 확인해보시면






이렇게 복사한 "asd_copy"는 "i-node"가 다른 것을 볼 수 있습니다. i-node가 다르다는건
원본인 "asd"랑은 아예 다른 객체란겁니다. 그에 비해 "하드링크"는 i-node도 같죠?

물론 "소프트링크"도 복사처럼 원본과 "i-node"가 다르지만, 소프트링크는 "링크(이어져있)"됐기 때문에 "하드링크"처럼
원본이 바뀌면 소프트링크도 똑같이 바뀌고
소프트링크가 바뀌면 원본도 똑같이 바뀝니다

"소프트 링크"를 예시로 보여드리자면







이렇게 아까 만든 원본인 "fff"파일에 0000이란 내용을 vi로 넣고 저장하고 나간뒤
소프트링크로 만든 "fff_soft"를 파일 내용을 읽는 명령어 "cat"으로 읽어보면









이렇게 소프트링크 파일도 원본과 같이 똑같이 바뀐 걸 볼 수 있죠

이번엔 소프트링크 파일인 "fff_soft"의 내용을









이렇게 바꾸고 저장한뒤 나가서

이번엔 원본 "fff"을 cat명령어로 확인해 보면








이렇게 원본도 똑같이 바뀐 것을 볼 수 있습니다.



여기까지만 보면 그럼 하드링크와 소프트링크는 별 차이가 없는데? 하실 겁니다

하지만 바로 이제 설명할 것에서 큰 차이가 있습니다.











이렇게 " ll -i" 명령어로 봤을 때  소프트링크는 i-node 번호가 원본과 다른 것을 볼 수 있습니다 

번호가 다르기 때문에 링크파일인 fff_soft를 삭제해도 원본인 fff는 그대로고

원본인 fff를 삭제해도 링크인 fff_soft도 그대로 있습니다.

하지만 원본을 삭제하면
소프트링크는 본체가 없어졌기 때문에 파일은 있지만 제 기능을 발휘못하죠







이렇게 원본을 삭제하면






이런식으로 사용할 수 없다 붉은 색 빛으로 소프트링크 파일이 변합니다






위 사진처럼 사용하려 해도 소프트링크는 원본이 삭제돼서 사용할 수 없는 걸 볼 수
있습니다.



하지만 하드링크는 같은 녀석은 원본을 이름만 바꾼 것이기 때문에

다른 이름인 녀석을 제거한다고 해도 같은 i-node를 가지고 있는 파일이 하나 더 있기 때문에 원본을 제거하든, 하드링크를 제거하든 남은 하나를 그대로 사용할 수 있습니다.







사진처럼 파일 제거 명령어 "rm"을 이용해 하드링크의 원본을 제거한 뒤












홈을 보시면 하드링크였던 녀석 asd_hard가, 본체가 사리지니
지가 본체인양 변했습니다 (색깔이 달라졌죠?)

방금 위에 언급한 소프트링크와 하드링크의 차이점 외에도
또 중요한 차이점이 한가지 더 있습니다.  그것은 바로

"디렉토리는 하드링크 파일을 만들 수 없다!" 입니다.

밑에 사진을 보시면





이렇게 최상위 "/" 디렉토리로 이동해서 ll(ls -l) 을 해보시면

편의성에 의해 bin , lib , lib64 , sbin 이런 디렉토리들이 이미
소프트(심볼릭)링크로만 만들어져서 사용되고 있는 걸 볼 수 있습니다.

여기서 왜??? 바로 /에 bin,lib등을 꺼내놓고 쓰지 구지 /usr안에 넣어두고
링크를 만들어서 쓰느냐? 라는 의문이 드실수 있는데 이것에 대해선
다른 포스트에서 다루겠습니다!


하지만 하드링크로 사용되는 디렉토리는 없단 걸 알 수 있죠

왜 디렉토리만 하드링크를 만들 수 없고 소프트링크는 가능한가는
사실 여러이유가 있지만 아주 간단하게만 설명하자면

소프트링크는 원래 실체가 없는 파일이랬죠? 오직 원본과 연결만 시켜주는
바로가기 같은 거라고 말이죠

하지만 하드링크는 실체가 있는 이름만 바꾼 파일이라고 했죠
그래서 실제로 디렉토리를 하드링크할 경우 여러 문제가 발생할 수 있습니다.

예를 들어보겠습니다.





이렇게 소프트링크는 바로가기처럼 실체가 없이 원본을 연결만 시켜주기 때문에
파일시스템에서 헷갈릴 일이 없습니다.

하지만 하드링크는









"디렉토리"가 아닌 그냥 "파일"이라면 별 문제가 없지만 "디렉토리"가 "하드링크"가 되면
상당히 꼬이게됩니다

정확하게 설명을 하자면 요것도 길어질 것 같으니... 이것도 시간나면 다른 포스트에 정확하게 다뤄보겠습니다.

어쨋든 이렇게 "파일시스템에 혼란을 야기하는 하드링크"는 디렉토리에 사용할 수 없다
이겁니다.

혹시나 "복사"는 그럼 왜 됩니까??? 하시는 분들이 있을까봐 복사도 그림으로 설명하자면







복사는 아예 다른 객체이므로 파일시스템에서 헷갈릴리가 없습니다






iv) 파일 이름과 확장자 


리눅스의 "파일이름"에 대해서도 꼭! 알고 가셔야 하는데요. 저희가 익숙한 "윈도우"운영체제에서는 파일 이름은 파일자체에 영향을 미칠정도로 중요합니다 특히 "확장자"라는 것 때문인데요

"확장자"란 이름 끝에 ".txt"이런식으로  "."과 함께 쓰여진 것을 말하는데요.




이렇게 메모파일을 만든다음






"폴더 옵션"에 들어가 파란색으로 표시된 "파일 확장명 숨기기 옵션"체크해제 해주신다음 "적용"을 누르시면





이렇게 이제 메모파일에 ".txt"라는 확장자가 보이게 됩니다.

원래 바탕화면에 있었는데 폴더 내로 옮긴 이유는 캡쳐하려니 자꾸 .txt확장자가 사라져셔..
쨌든 이제 이것의 확장자 이름을 바꿔보겠습니다.





이렇게 말이죠 그러면

















이렇게 경고가 뜹니다. 무시하고 "예"를 클릭하시면






ㅋㅋㅋㅋㅋㅋㅋ 이런식으로 수상한 동영상처럼 바뀝니다





물론 실행은 안됩니다.

이렇듯 "윈도우 운영체제"에선 확장자가 들어가는 "파일의 이름"은 상당히 중요하다 볼 수 있습니다.

하지만 "리눅스"에선 특별한 확장자를 나타내는 이름같은게 없습니다.
그리고 컴퓨터를 "CLI" 환경에서 작업하면 이 파일이 동영상인지, 이미지파일인지, 텍스트파일인지 이미지로 안 나타니까 외관을 보고도 알 수도 없습니다.

그렇기 때문에 "리눅스"에선 파일의 이름만 봐도 "아~ 어떤거에 쓰이는 어떤 파일이구나" 라 알 수 있게 이름을 짓습니다.

리눅스에서 "cd /etc" 라는 명령어로 "/etc/"디렉토리에 들어가 "ls"로 들어있는 파일들을 확인해보시면






이런식으로 파일 이름 끝에  ".conf" ,".cfg"  또는 ".d" 으로 붙은 것이 보일 텐데요

.conf와 .cfg는  configuration(설정)의 약어입니다, 이 .conf 또는 cfg라는 확장자 이름은 모든 운영체제에서 자주 쓰이니 알아두세요!

보통 어떤 프로그램의 설정 파일에 저런 확장자이름을 붙입니다

"repos"는  저장소란 뜻의 "repository"의 약어입니다

".d"디렉토리 파일의 이름에 붙어있으면 "앞에 적은 내용이 들어있는 directory", 즉 디렉토리 이라는 뜻 입니다.

위 예시 "yum.repos.d"인 경우, "yum 프로그램의 repos(저장소, 참고로 yum의 저장소란 온라인에 있는 yum 패키지 저장소로서, 들어가면 URL이 적힌 파일들이 있습니다.)들이 있는 디렉토리"란 뜻이죠.

반면 실행파일(실행권한 x(excute)가 있는)에 붙은 ".d" daemon의 약어입니다 리눅스가 처음 가동될 때 백그라운드에서(우리눈에 안보이게) 실행되는 프로세스라고 생각하시면 됩니다.

이 때 daemon의 "d"는 .srv 또는 service와 같은 의미로
데몬과 서비스라는 것을 알고싶으시면

프로세스란(데몬과 서비스):https://mamu2830.blogspot.com/2020/04/blog-post_18.html
여기에 자세히 써놓았으니 여기서 배우시면 됩니다!

자 이렇듯 아까 말했다시피, 리눅스는 파일이름에 특정한 확장자 이런게 없기 때문에

저희가 리눅스 어느곳에서든, 아무 파일이나 디렉토리 만들어놓고 그 이름을 "yum.conf.d"라 지어도, 윈도우 운영체제처럼 파일이 실행 안되거나 그렇진 않습니다.

물론 "/etc"가 아닌 딴곳에 만들어야 헷갈리지 않겠죠?




v) 총 정리




1. i-node = 데이터를 갖고있는 것(파일)을 빠르게 찾기 위해 순서대로 정리한 정보로.
inode를 모아두는 곳 i-node table이라 하고, 여기서 inode를 구분하기 위해 각 inode에도 번호가 붙어 있다.
inode를 확인하고 싶으면 "ls -l" , 번호까지 확인하고 싶으면 "ls -li" , "ls -il"을 하자

2. 파일의 종류에는 특수파일(b,c,p,s)디렉토리파일(d), 일반파일(-), 링크파일(l) 총 7개가 있다

3. 소프트 링크는 "ln -s [링크만들대상] [링크파일]"로 만들고, 윈도우 운영체제의 "바로가기"와 같고 실체가 없는 상징적 파일이며 inode번호가 다르다.

하드링크는 "ln [링크만들대상] [링크파일]"로 만들며, 디렉토리를 대상으로 만들 수 없다
그리고 실체가 있는 파일로서 inode가 원본이랑 똑같아 이름만 다르다

4. 리눅스에서 파일 이름은 아무렇게나 지어도 되며, 확장자 개념이 없다
단지 파일의 이름을 봤을 때 무슨 파일인지 알기 위하여 이름을 짓는게 좋다



이상입니다 오타나 틀린개념 발견시 주저말고 지적해주세요!
이번에도 포스팅하는데 저~엉말 많은 시간을 들인 것 같습니다 ㅠㅠ

도움이 되셨다면 좋아요 눌러주시고 팔로우도 눌러주시면 큰 도움이 됩니다!

댓글도 좋아요!

항상 더 나은 퀄리티의 포스팅으로 찾아뵐게요~! 이상 마무입니다~


댓글 26개:

  1. 내용이 너무 좋네요. 감사합니다.

    답글삭제
  2. 잘 보고 있습니다!! 항상 응원드립니다! 원래 댓글 잘 안 다는데 다네요! 개인적으로 자바스크립트도 독학하시는거 같은데 읽어보고 싶네요 ㅎㅎ

    답글삭제
    답글
    1. 힘이 나는 따뜻한 댓글 감사합니다! 아쉽게도 자바스크립트는 누군가를 가르쳐주기엔 아직 저 스스로도 많이 미흡하기에 ㅠㅠ 언젠가 실력이 많이 좋아진다면 쓰고 싶습니다!

      삭제
  3. 항상 잘 읽고 있습니다~~ 좋은 게시글 작성해주셔서 감사합니다!

    답글삭제
    답글
    1. 항상 잘 읽어주셔서 너무나 감사합니다!!!

      삭제
  4. 정리가 너무 잘되어있어요 감사합니다 잘읽었어요!!

    답글삭제
    답글
    1. 도움이 돼 다행입니다!! 매번 따뜻한 댓글 달아주셔서 감사해요!

      삭제
  5. 리눅스를 배운지 두 달이 넘었는데도 아직까지 이 개념이 정립이 안되어 있어서 너무 혼란스러웠는데 이렇게 쉽게 잘 정리해주셔서 감사합니다!

    답글삭제
    답글
    1. 도움이 돼 다행입니다!!! 다른 포스트로도 꼭 도움이 되길 바라겠습니다!

      삭제
  6. 정말 쉽게 잘 쓰시네요 감사합니다 ^^

    답글삭제
    답글
    1. 제 노력이 도움이 돼 다행입니다!! 따듯한 댓글 감사합니다 ^^

      삭제
  7. 공부하는데 도움 되었습니다.
    감사합니다!

    답글삭제
    답글
    1. 도움이 돼 다행입니다!
      다른 포스트들도 도움이 되길 바랄게요~!

      삭제
  8. 많은 도움이 되었어요!! 정성스러운 글 정말 감사해요 종종 들릴 것 같습니다

    답글삭제
    답글
    1. 도움이 돼 다행입니다! 앞으로도 종종 들려주세요 ㅎㅎ

      삭제
  9. 많은 도움이 되었습니다 감사합니다!!

    답글삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *