[unix] Unix / Linux OS의 표준 및 / 또는 공통 디렉토리

Windows 세계에서 온 폴더 디렉토리 이름 의 대부분은 매우 직관적이라는 것을 알았습니다 .

  • \Program Files 프로그램에서 사용하는 파일을 포함합니다 (서프라이즈!)

  • \Program Files (x86) 64 비트 OS에서 32 비트 프로그램이 사용하는 파일을 포함합니다.

  • \Users(이전 Documents and Settings)에는 사용자의 파일, 즉 문서 및 설정이 포함됩니다

    • \Users\USER\Application Data 응용 프로그램 별 데이터를 포함

    • \Users\USER\Documents 사용자에게 속한 문서를 포함

  • \Windows Windows 자체의 작업에 속하는 파일을 포함합니다

    • \Windows\Fonts 서체 파일을 저장합니다 (서프라이즈!)

    • \Windows\Temp 글로벌 임시 디렉토리입니다

등등. 이 폴더들이 무엇을했는지 몰랐더라도 이름에서 정확하게 추측 할 수있었습니다.

이제 Linux를 잘 살펴보고 파일 시스템을 둘러 보는 방법에 대해 혼란스러워합니다.

예를 들면 다음과 같습니다.

  • /bin이진을 포함합니다. 그러나 그렇게 /sbin, /usr/bin, /usr/sbin, 아마 더 나는 약을 모르는. 어느 게 어느 건지?? 그들 사이의 차이점은 무엇입니까? 바이너리를 만들고 시스템 전체의 어딘가에 넣으려면 어디에 두어야합니까?

  • /media외부 미디어 파일 시스템을 포함합니다. 그러나 그렇습니다 /mnt. 그리고 그들 중 어느 것도 현재 내 시스템에 아무것도 포함하지 않았습니다. 모든 것 같습니다 /dev. 차이점이 뭐야? 어디처럼 내 하드 디스크의 다른 파티션입니다 C:D:그 윈도우에 있었다?

  • /home사용자 파일 및 설정을 포함합니다. 그 정도는 직관적이지만, 무엇이 들어가야 /usr합니까? /root파일과 설정을 사용하는 사용자 인 경우에도 어떻게 오나요 ?

  • /libDLL과 같은 공유 라이브러리를 포함합니다. 그러나 그렇습니다 /usr/lib. 차이점이 뭐야?

  • 무엇 이다 /etc ? 실제로 “et cetera”또는 다른 것을 의미합니까? 어떤 종류의 파일이 있어야합니까 (전 세계 또는 로컬)? 아무도 어디에 두어야할지 알지 못하는 것에 대한 포괄입니까, 아니면 특별한 유스 케이스가 있습니까?

  • 무엇 /opt, /proc그리고 /var? 그들은 무엇을 의미하며 무엇을 위해 사용됩니까? 나는 Windows *에서 그들과 같은 것을 보지 못했고, 그들이 무엇을위한 것인지 알 수 없습니다.

누구나 알고 싶은 다른 표준 장소를 생각할 수 있다면 질문에 자유롭게 추가하십시오. 잘하면 이것이 * nix 시스템에 익숙해지기 시작한 나와 같은 사람들에게 좋은 참고 자료가 될 수 있기를 바랍니다.

* 좋아, 거짓말이야. WinObj에서도 비슷한 것을 보았지만 정기적으로 그렇지는 않습니다. 그래도 여전히 리눅스에서 무엇을하는지 모르겠습니다.



답변

Linux 배포판은 FHS를 사용합니다. http://www.pathname.com/fhs/pub/fhs-2.3.html

또한 시도 할 수 있습니다 man hier.

나는 당신의 질문에 대한 답을 내 머리 위로 요약하려고 노력할 것이지만, FHS를 읽는 것이 좋습니다.

  • / bin은 수퍼 유저가 아닌 시스템 바이너리 용입니다.
  • / sbin은 수퍼 유저 (루트) 시스템 바이너리 용입니다.
  • / usr / bin 및 / usr / sbin은 각각 중요하지 않은 공유 비 수퍼 유저 또는 수퍼 유저 바이너리 용입니다.
  • / mnt는 파티션을 임시로 마운트하기위한 것입니다
  • / media는 많은 이동식 미디어를 한 번에 마운트하기위한 것입니다
  • / dev는 시스템 장치 파일을 포함합니다. 이건 긴 이야기다 🙂
  • / usr 폴더 및 해당 하위 폴더는 다른 시스템과 공유 할 수 있으므로 한 곳에 설치된 동일한 프로그램 / 파일에 액세스 할 수 있습니다. / usr은 일반적으로 별도의 파일 시스템에 있으므로 시스템을 온라인 상태로 만드는 데 필요한 바이너리가 포함되어 있지 않습니다.
  • / root는 별도의 파티션 / 하드 드라이브 / 서버에있을 수있는 다른 디렉토리를 마운트하지 않고 시스템을 온라인 상태로 만들어야 할 수 있으므로 별도입니다.
  • 예, / etc는 “et cetera”를 나타냅니다. 로컬 시스템의 구성 파일이 거기에 저장됩니다.
  • / opt는 다운로드 / 컴파일하는 프로그램을 설치할 수있는 곳입니다. 이렇게하면 모든 파일을 한 곳에 두어 나머지 시스템과 분리 할 수 ​​있습니다.
  • / proc에는 커널 및 실행중인 프로세스에 대한 정보가 포함되어 있습니다.
  • / var는 로그, 메일, 웹 페이지 등과 같은 가변 크기 파일을 포함합니다.

시스템에 액세스하려면 일반적으로 / var, / opt, / usr, / home이 필요하지 않습니다. 시스템에서 잠재적으로 가장 큰 디렉토리 중 일부.

일부 사람들이 사용하지 않는 즐겨 찾기 중 하나는 / srv입니다. http / ftp / samba와 같은 서비스를 통해 호스팅되는 데이터를위한 것입니다. 나는 / var이 이것을 많이 사용하는 것을 보았습니다. 실제 그 목적은 아닙니다.


답변

나는 그들 모두가 의미하는 바에 대해 대답하지 않지만 (다른 사람들이 가지고있는) 역사적인 맥락을 조금 제시합니다.

우선, 유닉스는 종이 테이프와 300 보드 하드 코딩 된 터미널을 메인 프레임으로 사용하던 시절이 40 년에 가까워지고 있다는 점을 기억하십시오 (Windows XP 시스템은 10 살에 가깝습니다). 타이핑 속도가 느리고 타이핑 효율이 다른 많은 고려 사항보다 중요했습니다. 이것이 매우 짧은 기본 명령의 이유입니다 (예 : ‘ls’, ‘cat’, ‘cc’, ‘dd’등). 디렉토리 구조도 마찬가지입니다. 명령이 3 ~ 4자를 넘으면 이름이 너무 길다는 생각이 들었습니다.

대부분의 명령은 / bin에 있고 모든 장치 파일은 / dev에 있었기 때문에 / usr 디렉토리에는 원래 사용자의 홈 디렉토리가있었습니다. 나중에 부팅 시간을 단축하기 위해 기본 드라이브 (루트 파일 시스템 ‘/’)를 작게 만드는 것으로 생각되었습니다. 따라서 / usr / bin, / usr / include 및 / usr / lib와 같은 다른 구조가 나타 났으며, 여기서 / usr은 별도의 “드라이브”였습니다. 훨씬 후에는 / home에 사용자의 홈 디렉토리가 있고 다른 드라이브가 있다고 생각되었습니다. 그리고 그보다 훨씬 늦게 / var (가변 / 변경 가능)를 갖습니다. / etc 디렉토리는 ‘et cetera’를 의미했으며 모든 시스템 구성 파일의 포괄 위치였습니다. / mnt는 드라이브 (종종 백업 드라이브)에 액세스하기위한 임시 장소로 사용되었습니다. / opt, / proc 및 / media와 같은 디렉토리는 훨씬 후에 나왔습니다.

/ usr / local 및 / net과 같이 많은 부분이 빠져 있지만 이름이 왜 직관적이지 않은지에 대한 간단한 설명을 제공합니다.


답변

여기에서 이미 언급했듯이 Linux 배포판은 주로 FHS를 사용합니다 . 튜토리얼과 같은 개요를 보려면 여기 를 참조 하십시오 . 특히 Windows 사용자에게 적합합니다.

참고로, Windows 디렉토리 직관적이고 피상적으로 보입니다 . 그러나 프로그램의 설정이 어디에 있는지 *.ini, 프로그램 폴더 의 파일, Documents and Settings\User( \Application Data또는 \Local Settings\Application Data) 또는 악명 높은 레지스트리 의 파일 로 어디에서 물어 볼까요? 마이크로 소프트조차도 모릅니다. 그리고 우리는 계속해서 갈 수 있습니다.


답변