
나는 쉘 스크립트나 고급 명령을 작성하려고 할 때 명령과 스위치의 이름을 기억하는 것이 항상 어렵다는 것을 알게 되었습니다.
예를 들어
tr -d '\n' < file | wc -c
프로그래밍 언어로는 다음과 같은 것을 쓸 수 있지만
len(replace(str(file), "\n", ""))
어느 것이 더 기억에 남고 매뉴얼 페이지에서 검색할 가능성이 적으며 다른 사람들이 더 쉽게 이해할 수 있습니다.
그렇다면 왜 쉘 스크립팅이 이렇게 수년간 비밀스러운 형태로 유지되어 왔을까요? 많은 매뉴얼 페이지를 공부하지 않고도 코드가 수행하는 작업을 명확하게 하기 위해 구문을 변경하려는 노력이 있습니까? 이 형태에는 몇 가지 장점이 있나요? 쉘 스크립팅을 최대한 활용하기 위해 단점을 어떻게 극복할 수 있습니까?
답변1
읽기 위해 파일을 열고, 해당 파일의 내용을 소비하는 라이브러리 함수를 호출하고, 해당 함수의 출력을 다른 함수로 스트리밍하고, 두 번째 함수의 출력을 사용자에게 반환하고, 반환하는 프로그래밍 언어를 알고 있습니까? 종료 상태를 표시한 다음 나중에 모든 것을 매우 짧은 줄로 정리하시겠습니까?
귀하가 제시한 예에는 대부분의 언어에 필요한 많은 지원 gubbins이 빠져 있습니다.
임의의 수의 입력을 허용하고 다양한 모드에서 작동하며 간단한 인터페이스를 갖는 라이브러리 기능을 갖춘 프로그래밍 언어는 몇 개입니까?
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")