유닉스는 매혹적인 운영 체제입니다. 원래 1960 년대 후반에 벨 연구소에서 잉태,그것은”멀티 틱스”(다중 정보 및 컴퓨팅 서비스)로 알려진 운영 체제와 좌절에서 부담했다. 유닉스는 이제 50 세 이상입니다(!)그리고 리눅스 구현 힘 인터넷의 거대한 한번 벤 면적을.
그렇다면 유닉스는 왜 그렇게 인기가 있습니까?
내 마음 속에서 유닉스의 성공은 개발에 대한 철학적 접근에서 비롯된다. 유닉스 철학은 벨 시스템 기술 저널에 더그 맥 킬로이에 의해 설명되어 있습니다 1978:
1. 각 프로그램이 한 가지 일을 잘 수행하도록하십시오. 새로운 작업을 수행하려면 새로운”기능”을 추가하여 오래된 프로그램을 복잡하게하기보다는 새로 구축하십시오.
2. 모든 프로그램의 출력이 아직 알려지지 않은 다른 프로그램의 입력이 될 것으로 기대하십시오. 불필요한 정보로 출력을 혼란스럽게하지 마십시오. 엄격하게 원주 형 또는 이진 입력 형식을 피하십시오. 대화 형 입력을 주장하지 마십시오.
3. 설계 및 소프트웨어,심지어 운영 체제를 구축,이상적으로 주 이내에,초기 시도 할 수 있습니다. 서투른 부분을 던져 그들을 다시 주저하지 마십시오.
4. 당신이 도구를 구축하고 당신이 그들을 사용하여 완료 한 후 그들 중 일부를 던질 것으로 예상 우회해야하는 경우에도,프로그래밍 작업을 밝게하는 숙련 된 도움말에 우선하여 도구를 사용합니다.
이 40 년 전,고체(단일 책임 원칙,개방/폐쇄),마이크로 서비스,기능 파이프 라인,민첩하고 개발 운영의 정신을 캡처!
유닉스 철학에 대한 훨씬 더 자세한 내용은,이 책을 읽고(여기에서 자유롭게 사용할 수 있지만 저자를 지원하기 위해 사본을 구입!).
의 행동에 유닉스 철학의 몇 가지 예를 살펴 보자.
각 프로그램이 한 가지 일을 잘 수행하도록하십시오. 새로운 작업을 수행하려면 새로운”기능”을 추가하여 오래된 프로그램을 복잡하게하기보다는 새로 구축하십시오.
cat
정확히 한 가지를 수행합니다. 이 파일을 연결하고 표준 출력에 표시합니다. 그것이 전부입니다. 그것은 페이지 매김을하지 않습니다. 그것은 검색 기능을 제공하지 않습니다. 그것은 단지 주석과 더 이상 말한다 정확히 않습니다.
tr
은 비슷합니다. 그것은 입력에서 읽고,어떤 번역을하고,출력에 씀으로써”텍스트 대체”를 수행합니다.
tr -d aeiouAEIOU < file # Display file without vowels
tr eao 340 < file # Partially leet speak file
true
그리고false
는 아마도 한 가지 일을 잘하는 가장 좋은 예일 것입니다. true
아무것도하지 않습니다,성공적으로! false
는 아무것도 하지 않는다.
false && echo Hi # does nothing
true && echi Hi # Prints Hi
구성
“모든 프로그램의 출력이 다른 프로그램의 입력이 될 것으로 예상”
에 유닉스,대부분의 작업은 잘 이해 된 텍스트 형식으로 표준 출력을 읽고 쓸 수 있습니다. |
,>
및<
와 같은 몇 가지 명령을 사용하면 한 프로그램의 출력을 다른 프로그램으로 공급할 수 있습니다.
이 예제에서는cat
를 사용하여 파일 내용을 출력하고 파일의 줄 수를 셀 수있는wc
에 출력을 공급합니다.
cat foo.txt | wc -l
이 예제에서는history
를 사용하여 다음과 결합하여 가장 자주 사용되는 명령을 찾습니다cut
, sort
, uniq
그리고head
.
history | cut -f5 -d" " | sort -rn | uniq -c | sort -rn | head
xargs
당신이 표준 출력에서 명령을 구축 할 수 있도록 궁극적 인 스위스 군용 칼입니다. 그것을 모두 삭제하는 데 사용합시다”.6901>을 사용한 후 현재 디렉터리에 있는 파일을 찾습니다.
find -type f *.tmp | xargs rm
모든 것은 파일입니다
유닉스에서 모든 것은 파일입니다(또는 더 정확하게는 모든 것이 바이트 스트림입니다). 이 프로그램은 시스템 관리자가 루트 암호 공유없이 루트 권한을 얻을 수 있도록 합니다.
예를 들어,리눅스의 전체/proc
파일 시스템은 실제로 파일이 아닙니다.
몇 가지 예:
cat /proc/cpuinfo # Displays your CPU info exposed as a filefoo > /dev/null # Redirect output into a file called
# null (which discards everything)od -vAn -N1 -td1 < /dev/urandom # Display a random 1 byte number
# (via https://unix.stackexchange.com/a/268960
자동화
“모든 것을 자동화”하기 훨씬 전에 유닉스가 있었다.
cron
(더 여기)는 지난 40 년 동안 모든 것을 자동화하고있다. 크론 작업은 고정된 시간 또는 고정된 간격으로 실행할 수 있는 예약된 스크립트입니다.
유닉스 시스템의 각 사용자는crontab
명령을 사용하여 볼 수있는 일련의 예약 된 작업을 가지고 있습니다. 이 파일은 실행되는 스크립트의 날짜와 시간을 제공하는 매우 간단한 형식입니다.
at
명령은 우호적 인 대안이며,다음은 1 월 31 일(여기에서)1145 에서 명령을 실행하는 예입니다.
echo "cc -o foo foo.c" | at 1145 jan 31
꼭두각시,요리사,엔진,앤서블—이 모든 개발 운영 도구는 유닉스 기반 시스템에서 태어나 자란 것입니다.