Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 makepp_buildins 명령입니다.
프로그램:
이름
makepp_buildins -- makepp에 내장된 명령
기술
A: AWK, C: &고양이,
을 chgrp,
&chmod,
chown하지,
&cp,
CPP,
&자르다, D: 데이터, E: &에코,
&expr, F: 그릇된,
fmt, G: &그렙, H: 머리, I: &설치하다, L: &ln, M: m4,
&mkdir,
&mv, P: &펄,
&전처리,
&printf, R: &rm,
rmdir, S: &sed,
&종류, T: 꼬리,
&주형,
&만지다,
tr, U: &제거,
&유니크, Y: &예
규칙에 내장된 명령을 호출할 수 있는 특별한 Shell과 같은 가능성이 있습니다. 유일한
인식되는 메타 문자는 주석 기호, 백슬래시, 작은따옴표 및 큰따옴표입니다. 오직
한 줄에 하나의 명령이 제공될 수 있으며 I/O 리디렉션을 사용할 수 없습니다("-i" 및 "-o" 참조).
대신 아래에서).
이 명령은 Perl의 기능 문자인 "&"로 시작하지만 유효한 문자는 아닙니다.
Shell의 첫 번째 문자입니다. 해당 이름의 내장 명령을 찾을 수 없는 경우에도 마찬가지입니다.
규칙을 수행하는 Perl 인스턴스 내에서 외부 스크립트를 호출하기 위한 구문입니다.
"실행"을 참조하세요.
이러한 명령은 사용자가 직접 정의한 명령과 Perl 스크립트도 호출할 수 있습니다.
make 함수를 사용하여 표준 출력을 반환합니다. 이를 위해서는 PerlIO용으로 Perl을 구축해야 합니다.
"define" 문 내에서 평가되는 경우를 제외하고 개행 문자는 공백으로 변환됩니다.
첫 번째 단어 ;= $(&cut -d' ' -f0 $(FILES))
이러한 명령을 규칙 작업으로 들여쓰지 않으면 해당 명령을 읽는 동안 수행됩니다.
메이크파일. 예를 들어 일부 기능이 필요한 경우 독립 실행형으로 이러한 명령에 액세스할 수도 있습니다.
makeppbuildin 명령을 통해 Unix에서는 사용할 수 없습니다.
이러한 명령은 대부분 GNU 변형을 기반으로 합니다. 그러나 많은 옵션(예: --backup,
--interactive 또는 --recursive)는 makefile에서는 실제로 의미가 없습니다. 그래서 비록
Perl에서는 구현하기 쉬울 것이므로 제외되었습니다. 또한 많은 Unix 명령
상당히 복잡한 경우를 다루는 다양한 옵션을 제공합니다(예: 정렬 필드
사양)은 여전히 본질적으로 제한되어 있습니다. Perl에 대한 액세스를 허용합니다.
어쨌든 존재하는 것은 여기에 훨씬 더 많은 힘을 줍니다.
파일 이름 목록은 비어 있을 수 있으므로 선택하지 않은 상태로 이러한 명령을 호출하는 것이 안전합니다.
목록. 짧은 형식의 옵션은 "-a -b" 대신 "-ab"처럼 서로 붙어 있을 수 있습니다.
긴 형식의 인수는 "=" 기호를 붙여서 제공하거나 별도로 제공할 수 있습니다.
짧은 형식에서는 직접 또는 별도로 접착할 수 있습니다.
Standard 옵션
몇 가지 옵션은 여러 내장 기능에 공통적이지만 짧은 형식은 때때로 다음으로 숨겨져 있습니다.
명령 자체 옵션(예: "&cut -f"):
-A 파일 이름
--args 파일=파일 이름
--인수-파일=파일 이름
파일을 읽고 가능한 인용된 공백 및/또는 줄 바꿈으로 구분된 것으로 구문 분석합니다.
옵션을 제공합니다.
-f
--힘
종류가 다르더라도 매개변수가 의도한 파일을 강제로 생성합니다.
해당 이름의 파일 또는 빈 디렉터리가 이미 존재합니다. 이는 "-o,
--output=filename" 옵션이 영향을 미치는 경우.
-i 쉘 명령
--inpipe=쉘 명령
Shell 명령을 시작하고 출력을 내장 명령으로 파이프하십시오. 선택적으로
후행 "|"이어야 합니다. 문자는 이것이 파이프임을 나타냅니다. 이 옵션을 사용하면 아니요
파일 이름을 지정해야 합니다. 그러나 두 파일 모두에 내장된 기능을 수행하고 싶다면
파이프 출력의 경우 파이프 출력의 파일 이름으로 "-"를 사용해야 합니다. 파이프는
비어 있지만 "--infail"도 지정하지 않으면 명령이 기다리지 않으므로
병렬로 종료할 수 있습니다. 리디렉션이 없기 때문에 이 옵션이 필요합니다.
통사론.
-I
--실패
"--inpipe" 셸 명령이 실패하면 현재 내장 기능도 실패하게 됩니다.
현재 Strawberry 및 Win ActiveState에서는 작동하지 않습니다.
그들은 유닉스 포크/exec를 에뮬레이트하는 방식으로 마음이 편치 않습니다. Cygwin은 그것을 올바르게 이해합니다.
-o 파일 이름
--출력=파일 이름
stdout이 아닌 이 파일에 출력을 씁니다. 파일 이름에는 다음 중 하나가 있을 수 있습니다.
형태 :
파일 이름
>파일 이름
파일에 쓰기만 하면 됩니다.
>>파일 이름
(반드시 그런 것은 아님) 기존 파일에 추가합니다.
+<파일 이름
또한 입력용 파일을 열어 내부 편집이 가능합니다. 이 옵션 변형을 사용하면
입력 파일 이름을 제공할 필요가 없습니다. 하지만 내장된 기능을 수행하고 싶다면
더 많은 파일을 저장하려면 이 파일의 입력 파일 이름으로 "-"를 사용해야 합니다. 실제로는
출력은 마지막에 filename으로 이동되는 임시 파일에 기록됩니다.
|쉘 명령
내장된 출력을 Shell 명령으로 파이프합니다.
리디렉션 구문이 없기 때문에 이 옵션이 필요합니다.
-O
--실패
"--output" 셸 명령이 실패하면 현재 내장 기능도 실패하게 됩니다.
-r 번호
--레코드 크기=번호
현재 내장에 대해 로컬로 $/를 설정합니다. 입력을 길이 레코드로 분할합니다.
번호 한 줄씩보다는. 만약에 번호 가 XNUMX이면 각 입력 파일 전체는 하나입니다.
기록.
-s 현
--구분자=현
현재 내장에 대해 로컬로 $/를 설정합니다. 이렇게 하면 입력이 분할됩니다. 현 라인보다는
줄로.
-S
--synclines
"#line " 생성"아니요"""""파일"""" 및 "#line ""아니요" 많은 C 언어에서 이해되는 라인
언어.
-v
--말 수가 많은
파일 시스템의 변경 사항을 문서화합니다. 이 작업을 수행하려면 다른 옵션보다 먼저 수행되어야 합니다.
그 효과를 문서화하십시오. 이 옵션을 makepp 자체에 전달하면 마치
모든 단일 내장 명령에 대해 제공됩니다.
빌트인 명령
makepp에 명령을 내장하는 데에는 두 가지 동기가 있습니다. 첫 번째는
쉘 명령과 달리 동일하게 작동하는 유틸리티 세트
"&echo -n" 또는 "&mkdir -p"와 같이 어디서나 경로를 찾는 번거로움을 덜어줍니다.
매우 다양한 옵션을 설치하고 알아내는 것입니다. 컴파일 환경에서는
일반적으로 "m4"만 제공하는 "--synclines" 옵션을 사용하는 것이 유용합니다.
필터.
또 하나는 효율성의 문제이다. 일반적으로 비용이 많이 드는 포크/실행은 피해야 합니다.
합리적으로 가능한 경우. Cygwin이나 BS2000/Posix와 같은 Unix 에뮬레이션에서는 이것이
눈에 띄는 승리. 그러나 Linux에서도 makepp 테스트 스위트가
내장된 외부 명령을 사용하면 전체적으로 사용자 CPU 사용량이 3%, 15%가 절약되었습니다.
시스템 CPU 사용량. (물론 테스트는 기본 동작에 중점을 두고 있으며
컴파일러.)
일관성도 문제입니다. 하지만 우리는 유닉스를 개혁하지는 않을 것입니다. 일반적으로 명령
정규식에는 다양한 뉘앙스가 있습니다. 그리고 많은 사람들이 일종의 언어를 만들어냅니다.
물론 무언가를 수행하는 경우(예: "expr", "sed" ...) 또는 복잡한 옵션에 대해서는 다릅니다.
필드, 구분 기호, 열 지정(예: "잘라내기", "정렬" ...)
대신에, 멋진 것은 모두 Perl에 의해 처리되어 전체에 걸쳐 일관성을 제공합니다.
모든 명령과 전체 옵션보다 훨씬 더 강력한 기능을 제공합니다. 더 나은 점은 무엇이든 펄코드
이 명령은 당신을 위해 실행되고 Makefile 패키지에서 실행됩니다. 그러니까 그보다는
Perl 코드를 규칙 작업에 추가하면 함수와 변수를 정의하고 사용할 수 있습니다.
명령 내에서:
하위 my_filter {
# $_가 바람직하다면 true를 반환합니다.
}
%.out: %.in Makepp파일
&grep &my_filter $(입력) -o $(출력)
명령에 Perl 함수나 변수를 사용하는 경우 makepp는 이를 다음과 같이 인식하지 않습니다.
의존성. 일반적으로 makepp에 모든 것을 알려주는 것이 더 안전하므로 Perl을 사용하는 규칙은
요소는 다음과 같이 해당 요소를 제공하는 makefile이나 모듈에 의존해야 합니다.
위의 예.
반면에 프로그래밍 방식을 혼합한 프로그램이 있으면 무지가 바람직할 수 있습니다.
및 구성 측면을 하나의 파일에 담습니다. 예를 들어 다음 두 가지를 모두 포함하는 WSDL 파일이 있습니다.
웹 서비스 인터페이스 정의 및 IP 주소. 다음을 사용하여 이 파일을 전처리할 수 있습니다.
&template 명령을 사용하여 구성을 패치하지만 makepp에 알리지 마세요.
&고양이 [옵션 ...] 파일 이름 ...
모든 파일을 하나의 파일로 연결합니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=파일 이름, -O, --outfail, -S,
--synclines, -v, --verbose"
&chmod [옵션 ...] 모드 파일 이름 ...
설정 모드 주어진 모든 파일에 대해. 모드는 XNUMX진수 문자열이어야 합니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -v, --verbose"
&cp [옵션 ...] 소스 파일 파괴하다
&cp [옵션 ...] 소스 파일
&cp [옵션 ...] 소스 파일 ... 목적지
부 소스 파일 에 파괴하다한 소스 파일 현재 디렉토리 또는 여러
소스 파일s의 목적지 같은 이름으로.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--말 수가 많은"
-l
--링크
파일을 연결해 보세요. 실패하면 심볼릭 링크를 시도하십시오.
요청한 경우, 그렇지 않으면 복사하세요.
-s
--기호
--기호 링크
--symlink
파일을 기호적으로 연결해 보십시오. 실패하면 복사하세요.
&ln 아래의 참고 사항을 참조하세요.
&자르다 [옵션 ...] 파일 이름 ...
각 파일 또는 선택한 줄에서 선택한 줄 부분을 전체에 걸쳐 계산하여 인쇄합니다.
파일. 출력은 필드 및 필드에 대해 기본적으로 TAB으로 설정되는 구분 기호로 구분됩니다.
문자의 경우 빈 문자열입니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=파일 이름, -O, --outfail, -r,
--record-size=숫자, --separator=문자열, -S, --synclines, -v, --verbose"
-c 명부
--문자=명부
다음으로 지정된 모든 문자를 인쇄합니다. 명부. 명부 Perl 표현식일 수 있습니다.
정수 목록을 반환합니다. 정수는 양수일 수 있습니다.
처음부터 계산하려면 XNUMX, 끝부터 계산하려면 음수입니다. 유닉스와 달리
"컷", 요청한 순서가 존중됩니다.
".." 범위가 양수이거나 양수여야 하는 Perl의 슬라이스 연산자와 달리
음수, &cut을 사용하면 양수로 시작하고 음수로 끝날 수 있습니다. 하지만
이는 표현식이 숫자, 쉼표 및
"..". 예를 들어 "1..-2"는 처음(0)과 마지막(-1)을 제외한 모든 것을 의미합니다.
목록 표현식은 $_의 전체 행을 볼 수 있습니다. 이에 대한 변경 사항은 다음과 같습니다.
그러나 무시됩니다. 왜냐하면 이 표현식이 평가될 때 해당 행은 이미
Perl의 자동 분할 변수 @::F로 분할되었습니다. 당신이 반환하는 숫자는 실제로
해당 목록의 색인입니다.
-d 현
--구분자=현
입력 필드 및 출력에 대한 새 구분 기호를 설정합니다. Unix "cut"과 달리 이것은
어떤 길이든.
-E
--탈출구가없는
"\"를 "-p, --printf=format"에 대한 일반 리터럴로 처리합니다.
-f 명부
--필드=명부
다음으로 지정된 모든 그룹을 인쇄합니다. 명부. 명부 "-c에 설명된 대로입니다.
--characters=list". 이렇게 하면 표준 옵션 "-f"가 숨겨집니다.
"--force"로 지정됩니다.
-l 명부
--라인=명부
다음으로 지정된 모든 행을 인쇄합니다. 명부. 명부 "-c에 설명된 대로입니다.
--characters=list" 한 가지 주요 차이점은 다음과 같습니다. 첫 번째 줄에는 숫자 1이 있습니다.
라인 0이 없습니다. 이는 혼합된 파일이 있는 경우 큰 파일의 경우 확실히 비효율적입니다.
목록의 양수 범위에서 음수 범위까지 모든 것을 메모리에 읽어 들입니다.
그렇지 않으면 Perl이 이를 최적화할 수 있지만 그렇게 될지는 모르겠습니다.
-m
--어울리는
일치하는 줄, 즉 충분한 문자나 필드가 있는 줄만 인쇄합니다. 이것
"--only-delimited"를 의미하므로 단일 필드 행을 놓칠 수 있습니다.
"--필드=0".
-p 체재
--printf=체재
모든 필드 또는 문자에 형식(\escape 포함)을 적용합니다.
-s
--단지 구분
구분 기호가 포함된 줄만 인쇄합니다.
&cut -c 10-20,-5,25- $(입력)
&cut -c 'grep $$_ % 3, 0..99' $(input) # 첫 번째 1개 열은 100의 배수가 아닙니다.
&cut -d: --fields 0,4 --printf='%10s는 %s입니다\n' / etc / passwd
&에코 [옵션 ...] 현 ...
&printf [옵션 ...] 체재 논의 ...
&예 [옵션 ...] 현 ...
모든 문자열을 stdout 또는 지정된 outfile에 씁니다. &echo와 &yes 모두 개행을 추가합니다.
마지막에. 문자열 또는 &printf 형식의 경우 "\" 이스케이프가 포함될 수 있습니다.
C나 최신 Unix 또는 Shell "echo"에서 알려져 있습니다. 그러나 그들은 Perl의 double-
이는 단일 후행 "\"가 허용되지 않는 등 일부 차이점을 의미합니다.
Perl에는 몇 가지 더 흥미로운 탈출구가 있지만, 여러분이 뭔가를 할 것이라고 기대할 수도 있는 탈출구가 있습니다.
다른 점은 다음과 같습니다:
\cA는 제어 문자 ^A입니다.
\u 다음 문자를 대문자로 바꿉니다.
\U 나머지를 대문자로 바꾸거나, 발견된 경우 다음 "\E" 또는 "\L"까지 대문자로 표시합니다.
\xHH, \x{Hhhh}
주어진 Hex 코드의 문자 값입니다. 숫자 코드는 그렇지 않습니다.
EBCDIC 플랫폼으로 이식 가능!
Unix "yes"와 달리 &yes는 다음에 대한 출력을 반복한다는 점을 제외하면 &echo와 똑같습니다.
가능한 한 일반적으로 "--output '| 명령'" 종료됩니다. 그리고, 만약 &예
인수가 없으면 기본값은 "y"입니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -o,
--output=파일 이름, -O, --outfail, -v, --verbose"
-E
--탈출구가없는
"\"를 일반 리터럴로 처리합니다.
-n
--nonewline
마지막 문자열 뒤에 개행 문자를 추가하지 마세요. (&printf에서는 이해되지 않습니다.)
&expr [옵션 ...] 펄코드 ...
하나 또는 여러 개의 인수로 작성할 수 있는 perlcode의 스칼라 값을 인쇄합니다.
내장 명령은 셸에서 구문 분석되지 않으므로 "*", "(" 또는 ">"는 구문 분석되지 않습니다.
특별한. 그러나 문자열 인용문은 makepp에 의해 구문 분석되므로 Perl 문자열은 인용문으로 묶어야 합니다.
베어워드를 사용하려는 경우가 아니면 두 번. 값이 false이면 실패합니다. 메모
-- Unix "expr"과 달리 -- Perl의 인덱스 함수는 0(false)에서 시작하여 다음을 반환합니다.
실패의 경우 -1(true)입니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -o,
--output=파일 이름, -O, --outfail, -v, --verbose"
-n
--nonewline
출력 뒤에 개행 문자를 추가하지 마세요.
&expr ($(VAR) - 3) * 2 < 1 && -1 || 1
&expr "$(VAR) - 3 * 2 < 1 ? '기쁨' : '슬픔'" -o $(출력)
-&expr $(VAR) - 3 * 2 -o >>$(출력)
&grep [옵션 ...] 펄코드 파일 이름 ...
&펄 [옵션 ...] 펄코드 파일 이름 ...
&sed [옵션 ...] 펄코드 파일 이름 ...
모든 파일은 한 줄씩 읽혀집니다("--separator" 옵션을 제공하지 않은 경우).
펄코드 인쇄되기 전에 각 줄에 대해 평가됩니다. &sed는 다음과 유사합니다.
"perl -pe", &grep은 다음과 같은 라인만 출력합니다. 펄코드 true를 반환합니다.
값. &perl은 "perl -ne"과 유사하며 명시적으로 인쇄한 내용만 출력합니다.
인간을 펄코드. 줄 내용은 $_에서 사용할 수 있으며 수정될 수 있습니다.
이 세 가지 중 아무 것도 출력하지 않으면 &grep만 실패합니다. 없다는 점 참고하세요
대소문자 무시 옵션은 "/를 사용하여 수행하기 때문입니다.정규식/i".
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=파일 이름, -O, --outfail, -r,
--record-size=숫자, -s, --separator=문자열, -S, --synclines, --verbose"
"--synclines" 옵션은 &Mpp::Cmds::print를 사용하여 &perl과만 의미가 있습니다.
$_를 출력합니다. &grep에만 추가 옵션이 있습니다:
-c
--세다
정상적인 출력을 억제합니다. 대신 일치하는 줄 수를 인쇄합니다. "-v를 사용하면,
--invert-match" 옵션(아래 참조), 일치하지 않는 행 수를 계산합니다.
-l
--목록
--일치하는 파일
일치하는 파일의 이름만 출력합니다. "-v와 결합하면,
--invert-match", 일치하지 않는 줄이 있는 파일 이름을 출력합니다(약간
터무니 없지만 Unix -vl과 호환됩니다). 이게 더블로 결합되면
"-vv", 일치하는 파일이 없는 파일 이름을 출력합니다.
-v
--그 반대
--되돌리기 일치
-- 반전 일치
일치 의미를 반전하여 일치하지 않는 선을 선택합니다. 숨겨져 있으니 참고하세요
"--verbose"로 제공되어야 하는 표준 옵션 "-v".
-w 파일 이름
--폐기물 파일=파일 이름
거부된 라인을 수집하기 위한 선택적인 쓰레기통입니다. 이는 뿐만 아니라
선택 코드를 디버깅할 뿐만 아니라 입력을 두 개로 분할할 수도 있습니다. 와 같은
일반적인 출력에서는 false를 반환하기 전에 $_를 수정할 수 있습니다.
&sed s/foo/bar/ f1 f2 f3 -o outfile # sed s/foo/bar/ f1 f2 f3 >outfile과 같습니다.
&sed '$$_ = uc' f1 f2 f3 -o outfile # like tr '[:lower:]' '[:upper:]' f1 f2 f3
&grep '$$. % 3' f1 f2 f3 -o outfile # 세 번째 줄마다 제거
&grep -c /match/i f1 f2 f3 # STDOUT에 'match'와 일치하는 줄 수를 셉니다.
접근자를 대량 생성하도록 강요하지 않고 간단히 다음과 같은 방법으로 이를 수행할 수 있습니다.
각 타입과 원하는 변수명 사이에 RO, RW 주석을 한꺼번에 넣어서
선. 생성된 getter 및 선택적으로 setter 메소드는 다음 발견 항목으로 이동합니다.
공개 또는 보호 섹션:
# "type /* R[OW] */ member;"에서 get 및 might set 메소드를 만듭니다.
하위 cxx_accessors {
$acc ||= ''; # 5.10.0 주 후보
if( m!^\s*(.+?)\s*/\*\s*R([OW])\s*\*/\s*(.+?)\s*;! ) {
$acc .= "#라인 $.\n"; # C++에 이것이 어디서 왔는지 알려줍니다.
$acc .= "무효 세트\u$3( const $1 &__tmp ) { $3 = __tmp; }"
$2 eq 'W'인 경우;
$acc .= "const $1 &get\u$3() const { return $3; }\n";
} elsif( /^\s*(?:public|protected)\s*:/ ) {
$_ .= $acc;
$acc = '';
}
}
%.cc: %.cc.in # I/O 처리를 위해 &sed를 사용합니다
&sed --sync-lines &cxx_accessors $(입력) -o $(출력)
&설치하다 [옵션 ...] 소스 파일 파괴하다
&설치하다 [옵션 ...] 소스 파일 ... 목적지
&install --디렉토리 [옵션 ...] 예배 규칙서 ...
이동 또는 이름 바꾸기 소스 파일 에 파괴하다또는 여러 소스 파일s의 목적지 와 더불어
같은 이름. 이는 빌드 결과를 최종 결과로 전송하는 데 선호되는 방법입니다.
설치 위치.
&install에 의해 수행된 모든 파일 시스템 수정은
환경 변수 $INSTALL_LOG가 가리키는 파일, 또는 설정되지 않은 경우
우리는 다음과 같은 디렉터리 아래에 있습니다. RootMakepp파일(.mk), 파일로 .install_log 그 안에
디렉터리로 이동하거나 현재 디렉터리의 해당 파일로 이동합니다. 삭제하고 싶을 수도 있습니다.
일련의 &install 호출 앞에 로그 파일이 있습니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -v, --verbose"
-c
--복사
파일을 이동하지 말고 복사하세요. 강요하지 않기 때문에 바람직하다.
다음에 파일을 다시 빌드하려면 makepp를 사용하세요. 그러나 이는 기본값이 아닙니다.
다른 설치 프로그램과의 호환성.
-d
--예배 규칙서
이 명령의 세 번째 형식에서는 주어진 모든 디렉토리와
필요한 상위 디렉토리.
-g 그룹
--그룹=그룹
대상 파일의 그룹 소유권을 변경합니다. 그룹은 다음과 같이 주어질 수 있습니다.
이름이나 숫자로.
-l
--링크
파일을 연결해 보세요. 실패하면 복사하세요.
--로그=파일 이름
--로그 파일=파일 이름
파일 이름 일반 로그 파일 대신.
-m 모드
--모드=모드
설정 모드 모든 대상 파일이나 디렉터리에 대해. 모드는 XNUMX진수 문자열이어야 합니다.
-o 소유자
--소유자=소유자
대상 파일의 소유권을 변경합니다. 소유자는 이름으로 지정될 수 있습니다.
수치적으로.
-r
--해결하다
--해결 기호
--해결-심볼릭-링크
--해결 심볼릭 링크
-S
--기호
--기호 링크
--symlink
이동하는 대신 심볼릭 링크를 만듭니다. 이 옵션은 &ln에 전달되며 다음과 같습니다.
거기에 설명되어 있습니다.
-s
--조각
대상 파일의 $PATH에 있어야 하는 "스트립" 유틸리티를 호출합니다.
&ln [옵션 ...] 소스 파일 파괴하다
&ln [옵션 ...] 소스 파일
&ln [옵션 ...] 소스 파일 ... 목적지
(링크) 소스 파일 에 파괴하다한 소스 파일 현재 디렉토리 또는 여러
소스 파일s의 목적지 같은 이름으로.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--말 수가 많은"
-r
--해결하다
--해결 기호
--해결-심볼릭-링크
--해결 심볼릭 링크
이것이 바로 "ln -s"가 수행하기를 항상 원했던 것입니다. 어려운 것보다 상징적인 것을 창조하라
지정된 문자열이 아닌 실제로는 지정된 파일에 대한 링크입니다.
-s
--기호
--기호 링크
--symlink
하드 링크보다는 심볼릭 링크를 생성하세요.
참고 : 다양한 파일 또는 운영 체제에서는 이 작업이 지원되지 않습니다. 아니면
예를 들어 Cygwin에서는 가능하지만 기본 Windows 컴파일러에서는 이해되지 않습니다(사용하는 경우).
메이크파일의 경우 최소한 일종의 결과를 얻으려면 &ln 및 "&cp -l을 변경할 수 없습니다.
-s"는 대신 파일을 복사할 수 있습니다(디렉토리는 아님). 이를 달성하려면
makepp를 호출하기 전에 다음 변수를 내보내야 합니다.
MAKEPP_LN_CP=1 내보내기
&ln --resolve 또는 --symbolic은 기호를 생성하는 대신 파일을 복사합니다.
링크를 클릭하십시오.
MAKEPP_LN_CP=2 내보내기
&ln은 하드 링크를 만드는 대신 파일을 복사합니다.
MAKEPP_LN_CP=3 내보내기
&ln을 호출하면 두 종류 중 하나를 생성하는 대신 파일을 복사합니다.
링크를 클릭하십시오.
&mkdir [옵션 ...] 예배 규칙서 ...
디렉터리를 만듭니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--말 수가 많은"
-m 모드
--모드=모드
설정 모드 umask에 관계없이 생성된 모든 디렉토리에 대해. 모드는 다음과 같아야 합니다.
XNUMX진 문자열.
-p
--부모의
또한 필요한 상위 디렉터리를 만듭니다. 디렉터리 생성 실패 무시
디렉토리가 이미 존재하기 때문에(동시에 생성된 경우에도)
다른 프로세스).
&mv [옵션 ...] 소스 파일 파괴하다
&mv [옵션 ...] 소스 파일
&mv [옵션 ...] 소스 파일 ... 목적지
이동 또는 이름 바꾸기 소스 파일 에 파괴하다한 소스 파일 현재 디렉토리 또는 여러
소스 파일s의 목적지 같은 이름으로.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--말 수가 많은"
&전처리 [옵션 ...] 변수=정의 ... 파일 이름 ...
이는 makepp가 makefile에 대해 수행하는 것과 정확히 동일한 방식으로 파일을 전처리합니다. 이것은
&template보다 강력하지만 구문상으로 많은 양의 파일에 적합하지 않습니다.
Makefile이나 스크립트와 같은 "$" 기호.
조건문과 "include"/"_include" 문(여기서는
파일을 빌드하거나 위쪽으로 검색하지 않음), "perl"/"makeperl"/"perl_begin" 또는
"sub"/"makesub" 또는 파일 내에 정의한 모든 명령문이 처리됩니다. 비어 있는
주석 줄은 제거됩니다.
그러나 빌드 규칙을 학습하는 대신 이후에 남은 모든 라인을 출력합니다.
"$(...)" 표현식 확장. 진술이 그러한 것으로 인식되는 것을 방지하기 위해
빈 표현식 "$()"을 앞에 붙일 수 있습니다. 라인에도 동일하게 적용됩니다.
비어 있거나 선행 주석 기호를 유지해야 합니다. 마찬가지로, 만약
후행 백슬래시는 다음 줄과 연결되지 않으며 그 뒤에 "$()"를 입력합니다.
일반 라인은 그대로 출력됩니다.
$(MAKEEXPRESSIONS) 줄이 확장되어 출력됩니다.
ifdef WANTTHIS # 정의 여부에 관계없이 출력을 얻지 못합니다.
출력되지 않을 수도 있습니다
ENDIF
일부 파일을 포함
_존재하지 않을 수 있는 일부 파일을 포함하거나 # 또는 -include
$()include 빈 표현식을 사용하면 키워드가 인식되지 않습니다.
# 주석 줄과 빈 줄은 삼켜집니다.
$()# 빈 표현식으로 마스크되지 않는 한.
$()
빈 표현식은 \$()를 방지합니다.
백슬래시 연속이 인식되지 않습니다.
다음을 제공할 수 있습니다.
일반 라인은 그대로 출력됩니다.
무엇이든 확장되어 출력되는 라인입니다.
여기에 내용이 많이 포함되어 있습니다 ...
빈 표현식을 포함하면 키워드가 인식되지 않습니다.
# 빈 표현식으로 마스크되지 않는 한.
빈 표현은 \를 방지합니다.
백슬래시 연속이 인식되지 않습니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -o,
--output=파일 이름, -O, --outfail, -S, --synclines, -v, --verbose"
-a
--과제
또한 파일 내의 할당을 makepp와 마찬가지로 처리하십시오. 아아 그런 대사는 있을 수 없어
변수 이름을 다음과 같이 구성하는 것이 적법하기 때문에 빈 "$()"로 마스크되었습니다.
표현. 이는 "정의"라는 진술을 추가로 인식합니다.
"내보내기"/"내보내기 취소" 및 "재정의"("$()"로 마스크할 수 있음).
-시간 \\%해시
--hashref=\\%해시
이를 통해 쉽게 긴 값을 포함하여 변수 값을 사전 할당할 수 있습니다.
명령으로 전달되었습니다. 전달된 표현식은 다음을 반환하는 Perl 코드일 수 있습니다.
해시 참조. 이는 명령에 전달된 다른 변수와 병합됩니다.
다른 "--hashref" 옵션을 포함합니다.
&rm [옵션 ...] 파일 이름 ...
디렉토리 쓰기 권한이 있는 경우 파일을 삭제하십시오. 이것이 유닉스의 "rm -f"가 하는 일입니다.
삭제하세요. 대화형 사용을 위한 특별한 보호 기능이 있기 때문에 필요하지 않습니다.
메이크파일.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -v, --verbose"
-f
--힘
이렇게 하면 존재하지 않는 파일에 대해 불평하는 것을 방지할 수 있습니다. 이게 부작용이구나
옵션은 Unix에 있으며 여기서는 의미가 있는 유일한 옵션입니다.
-m
--메타인포
지정된 파일 외에도 makepp의 메타 정보도 삭제됩니다.
.makepp 디렉토리에 이에 대한 정보를 저장합니다. 따라서 makepp은 자신이 알고 있던 모든 것을 잊어버립니다.
주어진 파일에 대해. 이후에 .makepp 디렉토리가 비어 있으면 해당 디렉토리도 마찬가지입니다.
삭제됩니다.
이는 또한 지정된 디렉토리를 삭제하지만 해당 디렉토리가 비어 있는 경우에만 해당됩니다. 촉진하기 위해
이렇게 하면 깊이가 내림차순으로 마지막으로 디렉터리가 삭제됩니다. 그래서 당신은 할 수 있습니다
전체 계층을 삭제하려면 "**" 표현식을 사용하세요. 다음은에서 찾을 수 있는 예입니다.
많은 최상위 레벨 make 파일. 다음을 수행할 수 있는 "makeppclean" 유틸리티가 있습니다.
이것이 더 효율적이다.
$(가짜 클린올드):
&rm -fm $(오직 오래된 **/*)
$(phony clean): 클린올드
&rm -f $(와일드카드 **/*.[ao])
$(phony distclean): 깨끗함
&rm -fm $(대상만 **/*)
&종류 [옵션 ...] 파일 이름 ...
모든 파일을 사전순으로 정렬합니다. 규모가 큰 경우에는 비효율적입니다.
파일은 완전히 메모리에서 발생하기 때문입니다. 결합된 크기가 다음과 같은 경우에는 실패합니다.
모든 파일이 귀하에게 부여된 메모리를 초과합니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=파일 이름, -O, --outfail,
--record-size=숫자, -s, --separator=문자열, -v, --verbose"
-c 펄코드
--비교=펄코드
펄코드 $a와 XNUMX개의 정렬 후보가 있는 Perl 정렬 블록을 나타냅니다.
$b.
-n
--숫자
--숫자 정렬
이 정렬은 레코드의 시작 부분에서 숫자순으로 정렬됩니다. 선행 공백은 다음과 같습니다.
건너뛰었습니다. 숫자가 일치하지 않으면 "--transform" 및 "--detransform"을 사용할 수 있습니다.
시작.
-r
--역전
결과를 역순으로 출력합니다. 이렇게 하면 표준 옵션이 숨겨집니다.
"-r"은 "--record-size"로 지정되어야 합니다.
-t 펄코드
--변형=펄코드
-d 펄코드
--역변환=펄코드
코드가 복잡하면 정렬에 비례하여 비용이 점점 더 많이 듭니다.
레코드 수 n, 코드가 O(n 통나무(n)) 번. 피하려면
즉, 먼저 다음을 수정하여 Perl이 정렬에 집중하도록 허용할 수 있습니다.
복잡한 검색 기준 추출이 레코드당 한 번씩 발생하는 문자열,
일단 정렬되면 다시 수정합니다.
이러한 옵션이 제공되면 "--transform" 펄코드 레코드에 매핑됩니다.
$_에서 차례로 수정이 가능합니다. 정렬 후 "--detransform"
펄코드 $_의 수정된 레코드에 차례로 매핑되고
다시 수정하세요. 일반적으로 이 옵션 중 어느 것도 사용하지 않거나 둘 다 사용하지 않습니다.
수정된 라인을 출력하고 싶습니다.
문자열을 추출된 정렬 기준의 구조로 변환하면
"--비교하다" 펄코드 픽업할 수 있는 것은 슈바르츠 변환(ST)으로 알려져 있습니다.
"--비교"가 발생하지 않도록 모든 것을 문자열 자체에 담습니다. 펄코드 is
비용이 많이 드는 Perl을 수행하지 않고도 전체 정렬이 수행되도록 허용합니다.
코드는 Guttmann-Rosler 변환(GRT)으로 알려져 있습니다. 다음을 통해 팁을 찾을 수 있습니다.
웹에서 그 이름을 검색해 보세요.
# 수치 표현식을 값별로 정렬합니다($$는 makepp 확장으로부터 $를 보호합니다)
&sort --compare 'eval( $$a ) <=> eval( $$b )' $(입력) -o >>$(출력)
# 대소문자를 구분하지 않는 정렬을 위한 ST
&sort -t '[lc, $$_]' -c '$$a->[0] cmp $$b->[0]' -d '$$_->[1]' $(입력) - o >>$(출력)
# Makeppfile의 다른 곳에 정의된 수정 함수를 사용하는 GRT
&sort -t &transform -d &detransform $(입력) -o >>$(출력)
-u
--유니크
--고유 한
정렬 후 중복된 항목을 제거합니다. 이는 동일한 라인이거나
"--비교" 옵션이 제공됩니다. 펄코드 동등한 것으로 보고합니다.
&주형 [옵션 ...] 매크로=정의 ... 파일 이름 ...
이것은 C 전처리기나 "m4"만큼 강력하지는 않은 매크로 전처리기입니다.
보다 강력한 대안을 보려면 &preprocess를 참조하세요. automake의 매크로에서 영감을 얻었습니다.
교체 Makefile.am 그리고 Makefile.in. 그러나 그것은 그 이상입니다. 일반 텍스트
변함없이 진행됩니다. 특수 구문은 기본적으로 "@"으로 구분됩니다. 그들
"-r, --record-size" 또는 "--separator" 중 하나를 전달하지 않는 한 한 줄에 맞아야 합니다.
@# 본문 @
스크립트 "#" 줄 끝 주석 구문을 차용했음에도 불구하고 이것은 다음과 같습니다.
인라인 주석.
@MACRO@
이 구성은 다음의 값으로 대체됩니다. MACRO. 매크로 이름은 다음으로 시작해야 합니다.
문자 또는 밑줄, 그 뒤에 임의 개수의 문자, 밑줄, 빼기 또는 기호가 옵니다.
점. makepp 이름과 달리 밑줄과 빼기는 동일하지 않습니다.
@MACRO(인수1, 인수2...)@
첫 번째 것과 비슷하지만 매개변수화되어 있습니다. 인수는 $1부터 $9까지 대체합니다.
"${숫자}" 가치에. 또는 값이 Perl 함수인 경우 다음과 같이 전달됩니다.
정상적인 매개변수. 그러면 결과가 전체 구성을 대체합니다. 한 수준의
괄호 안의 인수에 일반 내용이 포함될 수 있으므로 매크로 중첩이 가능합니다.
"@MACRO@" 호출(예: "@f(@x@)@"), 여기서 "@x@"는 확장되기 전에 확장됩니다.
"f" 본문으로 대체되었습니다.
@포함하다(파일 이름)@
이것은 미리 정의된 유일한 매크로입니다. 이는 &template-processed로 대체됩니다.
명명된 파일의 내용입니다. 모든 매크로와 마찬가지로 이는 작업 도중에 발생할 수 있습니다.
선. 아아, 그 때문에 "-S, --synclines"는 파일 포함을 무시합니다.
모든 것이 포함 파일에서 나오는 것 같습니다.
@MACRO=정의@
@MACRO?=정의@
이는 파일 내의 매크로를 정의합니다. 이것은 아무것도 대체되지 않습니다. 두번째
form은 아마도 명령에 매크로가 정의되지 않은 경우에만 적용됩니다.
줄입니다.
@MACRO { 펄코드 }@
이는 또한 본문이 Perl 하위인 매크로를 정의합니다. 인수는 다음과 같습니다.
있는 경우 @_로 전달됩니다.
@{ 펄코드 }@
이것은 펄코드 즉시 반환 값으로 대체됩니다.
지금까지 우리는 특별한 것을 삽입하는 구문을 하나만 보았습니다. 또 있다
여러 줄 구문을 사용하며 둘 다 변형을 통해 개행을 억제할 수 있습니다. 이들은
내장 구문(아래 옵션으로 구성 가능) 여기 스페셜 용 스탠드
위에 표시된 구성 중 하나:
@스페셜@
@스페셜@\
이는 한 줄의 어느 위치에서나 여러 번 나타날 수 있습니다. 바로 뒤따르는 변형
"\"는 줄 끝에서만 작동합니다. 또한 다음 줄바꿈을 대체합니다.
@@스페셜@@ 표준 본문 @@
@@스페셜@@ 표준 본문 @@\
이것은 이전과 같습니다. 그러나 대체되는 일반 텍스트는
여러 줄에 걸쳐 있을 수 있습니다. 주석 줄에 특수 부품을 넣을 수 있습니다.
제거된 스크립트에만 필요한 소스 코드를 제거하거나
설치 과정에서 교체됨:
# @@# 다음 2줄은 사라집니다 @@
echo 이 스크립트의 제거된 버전을 실행 중입니다.
#@@
# @@교체@@
에코 여기에 뭔가 다른 것이 있을 거예요
#@@
다양한 가능성을 보여주는 의미 없는 예:
@m1=어떤 정의@\
@m2=foo $1 바@\
@middle_of_arg=iddl@\
@m1@ @m2(m@middle_of_arg@e)@
@@m2(여러줄)@@
...
@@ 일반 텍스트 1 + 2 = @{ 1 + 2 }@
된다
일부 정의 foo 중간 막대
foo 많은 줄 바 일반 텍스트 1 + 2 = 3
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=파일 이름, -O, --outfail, -r,
--record-size=숫자, --separator=문자열, -S, --synclines, -v, --verbose"
-d
--한정된
실제로 정의된 매크로 인스턴스만 교체합니다. 이 옵션이 없으면
정의되지 않은 것들은 모두 아무것도 대체되지 않습니다.
-시간 \\%해시
--hashref=\\%해시
이를 통해 쉽게 긴 값을 포함하여 매크로 값을 사전 할당할 수 있습니다.
명령으로 전달되었습니다. 전달된 표현식은 다음을 반환하는 Perl 코드일 수 있습니다.
해시 참조. 이는 명령에 전달된 다른 매크로와 병합됩니다.
다른 "--hashref" 옵션을 포함합니다. 해시 값은 코드일 수도 있습니다.
이 경우 "@macro {와 같이 함수가 호출됩니다. 펄코드 }@"
정의.
-s /접두사 접미사/
--단순=/접두사 접미사/
접두사 그리고 접미사 이전과 이후 스페셜 "@" 대신에 각각. 그만큼
첫 번째 문자는 구분 기호이므로 슬래시일 필요는 없습니다. 이 값은 Perl입니다.
정규식. "(...)"와 같은 그룹화를 도입해서는 안 되지만 "(?:...)"는 괜찮습니다.
-m /접두사/접미사/afterprefix/[aftersuffix/]
--여러줄=/접두사/접미사/afterprefix/[aftersuffix/]
접두사, 접미사 그리고 접두어 뒤 이전과 이후 스페셜 그리고 끝에
"@@" 대신 각각 차단합니다. 만약에 접미사 매크로 이름도 제공됩니다.
그 전에 반복해야합니다. 첫 번째 문자는 구분 기호이므로 반드시 그럴 필요는 없습니다.
슬래시. 예를 들어, 원하는 경우 "--definition"을 추가해야 하는 XML 형식입니다.
귀하가 정의하지 않은 다른 태그를 유지합니다.
--정의됨 --simple=|<|/>| --여러 줄=|<|>| |
아니면 처리 지침을 사용하는 것이 더 좋습니다." "는 다음과 같은 목적으로 사용됩니다.
--정의됨 --simple='|<\?|\?>|'
또는 이를 "&entity;"와 결합하려는 경우 간단한 매크로의 구문
대체(주석이 아닌 숫자 엔터티 "☺" 유지):
--정의됨 --simple='_(?:&(?!#)|<\?)_(?:;|\?>)_'
&만지다 [옵션 ...] 파일 이름 ...
각 파일의 수정 및 액세스 타임스탬프를 지금으로 업데이트합니다. 파일의 경우
존재하지 않으면 생성됩니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -v, --verbose"
&제거 [옵션 ...] [파일 이름 ...]
이전에 &install로 설치한 파일을 제거합니다. 그만큼 파일 이름s는 작성된 로그 파일입니다.
&설치로. 아무것도 지정되지 않거나 "--inpipe" 옵션이 없으면 기본 로그 파일을 읽습니다.
&설치.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -i,
--inpipe=shellcommand, -I, --infail, -v, --verbose"
&유니크 [옵션 ...] 파일 이름 ...
연속된 등호선 중 하나만 제외하고 모두 폐기합니다.
"표준 옵션": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=파일 이름, -O, --outfail, -r,
--record-size=숫자, -s, --separator=문자열, -S, --synclines, -v, --verbose"
-c 펄코드
--비교=펄코드
이 펄코드 $a 및 $b에서 이전 및 현재 줄을 가져와서 반환합니다.
두 줄이 동일하다고 간주되면 참입니다.
&uniq --compare='lc( $$a ) eq lc $$b' $(입력) -o $(출력)
에뮬레이션 가능 명령
다양한 기능이 내장되어 있지 않지만 다른 명령을 사용하여 수행할 수 있습니다.
awk &sed를 사용하세요.
을 chgrp
chown하지
이 명령은 대부분 이식성이 없습니다! 그들은 조용히 아무것도 하지 않거나 실패할 것이다.
시스템에 따라. 일반적으로 루트만이 이러한 작업을 수행할 수 있습니다.
이유는 &install 명령을 통해서만 사용할 수 있습니다.
cpp 전처리(&preprocess) 또는 템플릿(&template)을 사용하세요.
데이터
이들 중 하나는 부분적으로 동일한 작업을 수행합니다.
&expr 현지 시간
&expr gmtime
그릇된
인수가 없거나 0인 &expr을 사용하세요.
머리
꼬리
&grep 또는 "&cut --lines"를 사용하여 동일한 결과를 얻을 수 있습니다.
&grep 1..10 파일 # 처음 XNUMX줄
&grep 10..eof file # XNUMX번째 이후의 모든 줄
&cut --lines -10..-1 파일 # 마지막 XNUMX줄
&grep의 1..10은 Perl의 행 번호 플립플롭 연산자입니다.
1에서 시작합니다. 0에서 시작하지 마십시오. 그렇지 않으면 플립플롭이 결코 참이 되지 않습니다.
fmt Perl이 관련 기능을 제공하기 때문에 여기서 언급됩니다. 그러나 나는 가지고 있었다
makefile에서 "format" 선언을 사용하는 데 문제가 있습니다. 작동하는 것은 무엇입니까?
기본 "formline" 기능. 예를 들어 이름과 이름으로 구성된 csv 파일을 변환하려면
가격을 표 형식으로 표시:
하위 csv2txt {
formline "\@<<<<<<<<<<<<< ^###########.##\n", 분할 ',';
$_ = $^A;
$^A = '';
}
%.txt: %.csv
&sed &csv2txt $(입력) -o $(출력)
m4 전처리 또는 템플릿을 사용합니다.
rmdir
&rm을 사용하세요.
tr &sed를 사용하세요.
onworks.net 서비스를 사용하여 온라인으로 makepp_buildins를 사용하세요.