Đó là điểm đánh dấu cho thông tin phiên bản SCCS mà chương trình what
tìm kiếm. Nó sẽ báo cáo những gì theo sau một trong một số điểm đánh dấu kết thúc: null byte, newline, double quote "
, lớn hơn >
và dấu gạch chéo ngược \
.
Điều gì là SCCS? Nó là viết tắt của Source Code Control System, và được phát triển bởi Marc J Rochkind tại AT & T (Bell Labs) cho Unix. Nó là VCS dựa trên Unix được sử dụng rộng rãi (hệ thống điều khiển phiên bản), và được chuẩn hóa trong POSIX với các lệnh admin
, delta
, get
, prs
, rmdel
, unget
và what
. Phiên bản cổ điển (AT & T) bao gồm các lệnh cdc
, comb
, help
(có, nó đã làm trống tên đó; đôi khi nó được gọi là sccshelp
những ngày này), sact
, sccsdiff
và val
. Một số hệ thống cung cấp một chương trình sccs
rằng, như cvs
hoặc git
, lấy tên lệnh làm đối số đầu tiên của nó. SCCS là nguồn đóng. Cộng đồng mã nguồn mở sử dụng RCS đầu tiên và sau đó CVS thay vào đó, và sau đó đã có một phong phú lựa chọn thay thế khác, chẳng hạn như Git, Subversion, Mercurial, Fossil, Bazaar ... Bạn có thể tìm thấy ít nhất hai phiên bản mã nguồn mở của SCCS: Schily-SCCS và CSSC (việc thực hiện lại GNU của SCCS), cả hai đều tương thích với SCCS. SCCS là một VCS tập trung, giống như RCS và nhiều hệ thống khác, trái ngược với VCS phân phối (DVCS) như Git. Dự kiến sẽ là phiên bản chính của các tệp được SCCS quản lý được lưu trữ ở đâu đó.
Vì lý do tại sao @(#)
thay vì INFO
hoặc các ký hiệu khác, lý do chính xác là tránh mọi sự trộn lẫn hợp lý với văn bản thông thường. Rất có thể bạn sẽ không có lý do gì để viết chuỗi ký tự đó ngoài dấu SCCS.
Tôi sử dụng nó trước RCS $Id$
chuỗi (có thể được theo dõi riêng bởi ident
từ gói RCS). Vì vậy, ví dụ, sản lượng chương trình rmk
tôi:
$ what rmk
rmk:
RMK Version 25.92 (2017-10-09)
*** SCCS enabled ***
*** RCS enabled ***
$Id: getopt.h,v 2015.3 2015/09/29 07:13:26 jleffler Exp $
$Id: stderr.h,v 10.12 2017/04/08 03:43:34 jleffler Exp $
$Id: sastrings.h,v 2.16 2015/07/05 06:52:05 jleffler Exp $
$Id: list.h,v 9.6 2016/03/06 18:09:00 jleffler Exp $
$Id: emalloc.h,v 5.10 2015/02/17 04:50:35 jleffler Exp $
$Id: debug.h,v 3.13 2016/01/17 15:47:27 jleffler Exp $
$Id: kludge.h,v 1.16 2016/01/17 15:48:53 jleffler Exp $
$Id: config.h,v 9.14 2016/09/05 05:37:55 jleffler Exp $
$Id: make.h,v 9.20 2017/03/28 21:03:36 jleffler Exp $
$Id: main.c,v 9.20 2016/08/30 22:38:57 jleffler Exp $
$Id: basename.c,v 2.4 2008/02/11 08:44:50 jleffler Exp $
$Id: check.c,v 9.6 2016/03/06 07:36:35 jleffler Exp $
$Id: cleanup.c,v 9.6 2016/08/30 22:38:57 jleffler Exp $
*** DEBUGGING ENABLED ***
$Id: debug.c,v 3.12 2016/07/13 00:00:35 jleffler Exp $
$Id: emalloc.c,v 5.13 2016/01/17 16:05:58 jleffler Exp $
$Id: errhelp.c,v 8.5 2009/03/02 19:13:51 jleffler Exp $
$Id: estrdup.c,v 5.7 2015/06/02 03:05:40 jleffler Exp $
$Id: getopt.c,v 2015.2 2015/09/29 07:13:58 jleffler Exp $
$Id: input.c,v 9.24 2017/10/09 20:34:18 jleffler Exp $
$Id: list.c,v 9.4 2015/07/16 00:13:23 jleffler Exp $
$Id: macro.c,v 9.15 2016/08/30 22:38:57 jleffler Exp $
$Id: make.c,v 9.12 2017/03/28 21:03:36 jleffler Exp $
$Id: names.c,v 9.12 2016/08/30 22:38:57 jleffler Exp $
$Id: rcs.c,v 9.9 2016/08/30 22:38:57 jleffler Exp $
$Id: rcsfile.c,v 9.9 2016/08/30 22:38:57 jleffler Exp $
$Id: rules.c,v 9.9 2016/03/06 03:58:52 jleffler Exp $
$Id: sastrings.c,v 2.22 2015/07/05 06:52:05 jleffler Exp $
$Id: sccs.c,v 9.11 2016/08/30 22:38:57 jleffler Exp $
$Id: sccsfile.c,v 9.8 2016/08/30 22:38:57 jleffler Exp $
$Id: stderr.c,v 10.19 2017/07/10 04:54:26 jleffler Exp $
$Id: touch.c,v 9.7 2016/03/06 17:31:17 jleffler Exp $
$Id: vstrcpy.c,v 1.13 2008/02/11 08:44:50 jleffler Exp $
$Id: archive.c,v 9.11 2017/06/04 04:44:17 jleffler Exp $
$Id: clnpath.c,v 2.19 2017/03/26 06:32:49 jleffler Exp $
$Id: dirname.c,v 2.6 2012/02/06 01:55:16 jleffler Exp $
$Id: tokenise.c,v 2.2 2017/03/26 06:33:37 jleffler Exp $
$
Nó cho phép tôi để xem phiên bản của các tập tin được sử dụng để xây dựng các chương trình, cộng với một số thông tin auxilliary được đánh dấu với thẻ @(#)
. Chạy trên một trong những file nguồn, (stderr.c
), tôi nhận được:
$ what stderr.c
stderr.c:
File: $RCSfile: stderr.c,v $
Version: $Revision: 10.19 $
Last changed: $Date: 2017/07/10 04:54:26 $
Purpose: Error reporting routines
Author: J Leffler
Copyright: (C) JLSS 1988-2017
Product: :PRODUCT:
$Id: stderr.c,v 10.19 2017/07/10 04:54:26 jleffler Exp $
$
Tiêu đề của tập tin trông giống như:
/*
@(#)File: $RCSfile: stderr.c,v $
@(#)Version: $Revision: 10.19 $
@(#)Last changed: $Date: 2017/07/10 04:54:26 $
@(#)Purpose: Error reporting routines
@(#)Author: J Leffler
@(#)Copyright: (C) JLSS 1988-2017
@(#)Product: :PRODUCT:
*/
Các chuỗi khác được báo cáo bởi what
xuất hiện tiếp tục xuống các tập tin.Một trong những dòng trống phát sinh từ:
#if defined(USE_STDERR_FILEDESC)
extern const char jlss_id_stderr_c_with_filedesc[];
const char jlss_id_stderr_c_with_filedesc[] =
"@(#)" __FILE__ " configured with USE_STDERR_FILEDESC";
#endif /* USE_STDERR_FILEDESC */
Các marker có được theo sau bởi một dấu nháy kép, vì vậy phần còn lại của dòng được không được báo cáo — nó trông giống như một dòng trống ở đầu ra. Dòng được liệt kê cuối cùng là dòng được nhúng trong tệp đối tượng và do đó trong các chương trình sử dụng tệp đối tượng, chẳng hạn như rmk
.