유닉스 개발 철학

제프 포스터
제프 포스터

팔로우

2019 년 7 월 31 일·5 분 읽기

유닉스는 매혹적인 운영 체제입니다. 원래 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

꼭두각시,요리사,엔진,앤서블—이 모든 개발 운영 도구는 유닉스 기반 시스템에서 태어나 자란 것입니다.

답글 남기기

이메일 주소는 공개되지 않습니다.

Previous post 다양한 종류의 베고니아 재배 방법
Next post 의과 대학