일부 셸 스크립트나 고급 명령을 만들 때 명령과 해당 스위치의 이름을 기억하는 것이 항상 어렵다는 것을 알았습니다.
예를 들어
tr -d '\n' < file | wc -c
프로그래밍 언어에서는 다음과 같은 것을 작성할 수 있지만
len(replace(str(file), "\n", ""))
어느 것이 기억하기 쉽고, 매뉴얼 페이지에서 검색될 가능성이 적으며, 다른 사람들이 이해하기 더 쉽습니다.
그렇다면 쉘 스크립트가 왜 그렇게 오랜 세월 동안 신비한 형태로 남아 있었을까요? 수많은 매뉴얼 페이지를 연구하지 않고도 코드의 기능을 명확하게 알 수 있도록 구문을 변경하려는 노력을 기울였습니까? 이 형식에는 장점이 있나요? 이러한 단점을 어떻게 극복하고 쉘 스크립트를 최대한 활용합니까?
답변1
읽기 위해 파일을 열고, 파일의 내용을 사용하는 라이브러리 함수를 호출하고, 해당 함수의 출력을 다른 함수로 스트리밍하고, 두 번째 함수의 출력을 사용자, 반환 및 종료 상태를 모두 정리한 다음 짧은 줄 하나로 모든 것을 정리하시겠습니까?
귀하가 제공한 예에는 대부분의 언어에 필요한 많은 지원 gubbin이 누락되어 있습니다.
원하는 수의 입력을 받아들이고, 여러 모드에서 작동하며, 간단한 인터페이스를 갖는 라이브러리 기능을 갖춘 프로그래밍 언어는 몇 개나 될까요?
printf
그럴 수도 있지만 대부분의 라이브러리는 배워야 할 다른 이름과 다른 매개변수를 가진 일련의 함수로 끝납니다. 나는 어떤 차이도 볼 수 없습니다.
또한 대부분의 언어는 이러한 함수를 직렬로 호출합니다. 셸 스크립트는 이를 병렬로 실행하고 너무 많은 메모리를 소비하지 않고 원하는 양의 데이터를 파이프할 수 있으며 (데이터 소스가 키보드, 네트워크 소켓 또는 다른 것인 경우) 데이터가 도착할 때 지연 평가를 통해 모두 수행됩니다. 당신이 가장 좋아하는 언어가 이것을 할 수 있나요?
작업을 더 빠르고 효율적으로 수행하거나 숫자를 더 정확하게 계산할 수 있는 언어가 많이 있지만 쉘 스크립트의 힘을 과소평가하지 마십시오!
문법은? 글쎄, 작동합니다. 지금은 어떤 모습이든 배워야 합니다. 무엇을 더 원하시나요?
답변2
노력하다pbs
-- 명령줄 도구를 Python과 결합합니다. -- 예를 들면 다음과 같습니다.
# sort this directory by biggest file
print sort(du(glob("*"), "-sb"), "-rn")
# print the number of folders and files in /etc
print wc(ls("/etc", "-1"), "-l")