mirror of
https://github.com/tstack/lnav.git
synced 2024-09-11 13:05:51 +03:00
[doc.sections] fixes for man pages
This commit is contained in:
parent
e17363ea66
commit
243593835b
@ -45,7 +45,7 @@ static const lnav::pcre2pp::code&
|
|||||||
ansi_regex()
|
ansi_regex()
|
||||||
{
|
{
|
||||||
static const auto retval = lnav::pcre2pp::code::from_const(
|
static const auto retval = lnav::pcre2pp::code::from_const(
|
||||||
R"(\x1b\[([\d=;\?]*)([a-zA-Z])|\x1b\](\d+);(.*?)(?:\x07|\x1b\\)|(?:\X\x08\X)+)");
|
R"(\x1b\[([\d=;\?]*)([a-zA-Z])|\x1b\](\d+);(.*?)(?:\x07|\x1b\\)|(?:\X\x08\X)+|(\x16+))");
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
@ -370,7 +370,7 @@ scrub_ansi_string(std::string& str, string_attrs_t* sa)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (md[1] || md[3]) {
|
if (md[1] || md[3] || md[5]) {
|
||||||
str.erase(str.begin() + sf.sf_begin, str.begin() + sf.sf_end);
|
str.erase(str.begin() + sf.sf_begin, str.begin() + sf.sf_end);
|
||||||
if (sa != nullptr) {
|
if (sa != nullptr) {
|
||||||
shift_string_attrs(*sa, sf.sf_begin, -sf.length());
|
shift_string_attrs(*sa, sf.sf_begin, -sf.length());
|
||||||
|
@ -203,6 +203,9 @@ static struct {
|
|||||||
{
|
{
|
||||||
"gbg",
|
"gbg",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"zwsp",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* DNT_NAMES[DNT_MAX - DNT_KEY] = {
|
const char* DNT_NAMES[DNT_MAX - DNT_KEY] = {
|
||||||
|
@ -100,8 +100,9 @@ enum data_token_t {
|
|||||||
DT_CSI,
|
DT_CSI,
|
||||||
|
|
||||||
DT_GARBAGE,
|
DT_GARBAGE,
|
||||||
|
DT_ZERO_WIDTH_SPACE,
|
||||||
|
|
||||||
DT_TERMINAL_MAX = DT_GARBAGE + 1,
|
DT_TERMINAL_MAX = DT_ZERO_WIDTH_SPACE + 1,
|
||||||
|
|
||||||
DNT_KEY = 50,
|
DNT_KEY = 50,
|
||||||
DNT_PAIR,
|
DNT_PAIR,
|
||||||
|
47300
src/data_scanner_re.cc
47300
src/data_scanner_re.cc
File diff suppressed because it is too large
Load Diff
@ -120,6 +120,7 @@ nonstd::optional<data_scanner::tokenize_result> data_scanner::tokenize2(text_for
|
|||||||
NUM = [0-9];
|
NUM = [0-9];
|
||||||
ALPHANUM = [a-zA-Z0-9_];
|
ALPHANUM = [a-zA-Z0-9_];
|
||||||
EOF = "\x00";
|
EOF = "\x00";
|
||||||
|
SYN = "\x16";
|
||||||
IPV4SEG = ("25"[0-5]|("2"[0-4]|"1"{0,1}[0-9]){0,1}[0-9]);
|
IPV4SEG = ("25"[0-5]|("2"[0-4]|"1"{0,1}[0-9]){0,1}[0-9]);
|
||||||
IPV4ADDR = (IPV4SEG"."){3,3}IPV4SEG;
|
IPV4ADDR = (IPV4SEG"."){3,3}IPV4SEG;
|
||||||
IPV6SEG = [0-9a-fA-F]{1,4};
|
IPV6SEG = [0-9a-fA-F]{1,4};
|
||||||
@ -140,7 +141,11 @@ nonstd::optional<data_scanner::tokenize_result> data_scanner::tokenize2(text_for
|
|||||||
|
|
||||||
EOF { return nonstd::nullopt; }
|
EOF { return nonstd::nullopt; }
|
||||||
|
|
||||||
("f"|"u"|"r")?'"'('\\'.|[^\x00\x1b"\\]|'""')*'"' {
|
SYN+ {
|
||||||
|
RET(DT_ZERO_WIDTH_SPACE);
|
||||||
|
}
|
||||||
|
|
||||||
|
("f"|"u"|"r")?'"'('\\'.|[^\x00\x16\x1b"\\]|'""')*'"' {
|
||||||
CAPTURE(DT_QUOTED_STRING);
|
CAPTURE(DT_QUOTED_STRING);
|
||||||
switch (this->ds_input[cap_inner.c_begin]) {
|
switch (this->ds_input[cap_inner.c_begin]) {
|
||||||
case 'f':
|
case 'f':
|
||||||
@ -153,7 +158,7 @@ nonstd::optional<data_scanner::tokenize_result> data_scanner::tokenize2(text_for
|
|||||||
cap_inner.c_end -= 1;
|
cap_inner.c_end -= 1;
|
||||||
return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()};
|
return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()};
|
||||||
}
|
}
|
||||||
("f"|"u"|"r")?'"""'[^\x00\x1b]*'"""' {
|
("f"|"u"|"r")?'"""'[^\x00\x16\x1b]*'"""' {
|
||||||
CAPTURE(DT_QUOTED_STRING);
|
CAPTURE(DT_QUOTED_STRING);
|
||||||
switch (this->ds_input[cap_inner.c_begin]) {
|
switch (this->ds_input[cap_inner.c_begin]) {
|
||||||
case 'f':
|
case 'f':
|
||||||
@ -175,7 +180,7 @@ nonstd::optional<data_scanner::tokenize_result> data_scanner::tokenize2(text_for
|
|||||||
[a-qstv-zA-QSTV-Z]"'" {
|
[a-qstv-zA-QSTV-Z]"'" {
|
||||||
CAPTURE(DT_WORD);
|
CAPTURE(DT_WORD);
|
||||||
}
|
}
|
||||||
("f"|"u"|"r")?"'"('\\'.|"''"|[^\x00\x1b'\\])*"'"/[^sS] {
|
("f"|"u"|"r")?"'"('\\'.|"''"|[^\x00\x16\x1b'\\])*"'"/[^sS] {
|
||||||
CAPTURE(DT_QUOTED_STRING);
|
CAPTURE(DT_QUOTED_STRING);
|
||||||
if (tf == text_format_t::TF_RUST) {
|
if (tf == text_format_t::TF_RUST) {
|
||||||
auto sf = this->to_string_fragment(cap_all);
|
auto sf = this->to_string_fragment(cap_all);
|
||||||
@ -196,7 +201,7 @@ nonstd::optional<data_scanner::tokenize_result> data_scanner::tokenize2(text_for
|
|||||||
cap_inner.c_end -= 1;
|
cap_inner.c_end -= 1;
|
||||||
return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()};
|
return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()};
|
||||||
}
|
}
|
||||||
[a-zA-Z0-9]+":/""/"?[^\x00\x1b\r\n\t '"[\](){}]+[/a-zA-Z0-9\-=&?%] { RET(DT_URL); }
|
[a-zA-Z0-9]+":/""/"?[^\x00\x16\x1b\r\n\t '"[\](){}]+[/a-zA-Z0-9\-=&?%] { RET(DT_URL); }
|
||||||
("/"|"./"|"../"|[A-Z]":\\"|"\\\\")("Program Files"(" (x86)")?)?[a-zA-Z0-9_\.\-\~/\\!@#$%^&*()]* { RET(DT_PATH); }
|
("/"|"./"|"../"|[A-Z]":\\"|"\\\\")("Program Files"(" (x86)")?)?[a-zA-Z0-9_\.\-\~/\\!@#$%^&*()]* { RET(DT_PATH); }
|
||||||
(SPACE|NUM)NUM":"NUM{2}/[^:] { RET(DT_TIME); }
|
(SPACE|NUM)NUM":"NUM{2}/[^:] { RET(DT_TIME); }
|
||||||
(SPACE|NUM)NUM?":"NUM{2}":"NUM{2}("."NUM{3,6})?/[^:] { RET(DT_TIME); }
|
(SPACE|NUM)NUM?":"NUM{2}":"NUM{2}("."NUM{3,6})?/[^:] { RET(DT_TIME); }
|
||||||
@ -292,7 +297,7 @@ nonstd::optional<data_scanner::tokenize_result> data_scanner::tokenize2(text_for
|
|||||||
|
|
||||||
("re-")?[a-zA-Z][a-z']+/([\r\n\t \(\)!\*:;'\"\?,]|[\.\!,\?]SPACE|EOF) { RET(DT_WORD); }
|
("re-")?[a-zA-Z][a-z']+/([\r\n\t \(\)!\*:;'\"\?,]|[\.\!,\?]SPACE|EOF) { RET(DT_WORD); }
|
||||||
|
|
||||||
[^\x00\x1b"; \t\r\n:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\.\\][^\x00\x1b"; \t\r\n:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\\]*("::"[^\x00\x1b"; \r\n\t:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\\]+)* {
|
[^\x00\x16\x1b"; \t\r\n:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\.\\][^\x00\x16\x1b"; \t\r\n:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\\]*("::"[^\x00\x16\x1b"; \r\n\t:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\\]+)* {
|
||||||
RET(DT_SYMBOL);
|
RET(DT_SYMBOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,7 +265,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto dt = tokenize_res->tr_token;
|
auto dt = tokenize_res->tr_token;
|
||||||
element el(tokenize_res->tr_token, tokenize_res->tr_capture);
|
|
||||||
|
element el(dt, tokenize_res->tr_capture);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
log_debug("tok %s %s",
|
log_debug("tok %s %s",
|
||||||
@ -410,6 +411,8 @@ public:
|
|||||||
this->sw_at_start = false;
|
this->sw_at_start = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DT_ZERO_WIDTH_SPACE:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (dt == DT_GARBAGE) {
|
if (dt == DT_GARBAGE) {
|
||||||
garbage_count += 1;
|
garbage_count += 1;
|
||||||
|
@ -260,6 +260,13 @@ public:
|
|||||||
|
|
||||||
void enable_cache();
|
void enable_cache();
|
||||||
|
|
||||||
|
file_size_t get_piper_header_size() const
|
||||||
|
{
|
||||||
|
return this->lb_piper_header_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_piper() const { return this->lb_piper_header_size > 0; }
|
||||||
|
|
||||||
static void cleanup_cache();
|
static void cleanup_cache();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -333,7 +340,7 @@ private:
|
|||||||
safe_gz_indexed lb_gz_file; /*< File reader for gzipped files. */
|
safe_gz_indexed lb_gz_file; /*< File reader for gzipped files. */
|
||||||
bool lb_bz_file{false}; /*< Flag set for bzip2 compressed files. */
|
bool lb_bz_file{false}; /*< Flag set for bzip2 compressed files. */
|
||||||
bool lb_line_metadata{false};
|
bool lb_line_metadata{false};
|
||||||
size_t lb_piper_header_size{0};
|
file_size_t lb_piper_header_size{0};
|
||||||
|
|
||||||
auto_buffer lb_buffer{auto_buffer::alloc(DEFAULT_LINE_BUFFER_SIZE)};
|
auto_buffer lb_buffer{auto_buffer::alloc(DEFAULT_LINE_BUFFER_SIZE)};
|
||||||
nonstd::optional<auto_buffer> lb_alt_buffer;
|
nonstd::optional<auto_buffer> lb_alt_buffer;
|
||||||
|
@ -954,10 +954,22 @@ logfile::read_file()
|
|||||||
return Err(std::string("file is too large to read"));
|
return Err(std::string("file is too large to read"));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto retval
|
auto retval = std::string();
|
||||||
= TRY(this->lf_line_buffer.read_range({0, this->lf_stat.st_size}));
|
retval.reserve(this->lf_stat.st_size);
|
||||||
|
|
||||||
return Ok(to_string(retval));
|
retval.append(this->lf_line_buffer.get_piper_header_size(), '\x16');
|
||||||
|
for (auto iter = this->begin(); iter != this->end(); ++iter) {
|
||||||
|
auto fr = this->get_file_range(iter);
|
||||||
|
auto sbr = TRY(this->lf_line_buffer.read_range(fr));
|
||||||
|
|
||||||
|
if (this->lf_line_buffer.is_piper()) {
|
||||||
|
retval.append(22, '\x16');
|
||||||
|
}
|
||||||
|
retval.append(sbr.get_data(), sbr.length());
|
||||||
|
retval.push_back('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(std::move(retval));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -54,7 +54,7 @@ write_timestamp(int fd, log_level_t level, off_t woff)
|
|||||||
gettimeofday(&tv, nullptr);
|
gettimeofday(&tv, nullptr);
|
||||||
auto fmt_res = fmt::format_to_n(time_str,
|
auto fmt_res = fmt::format_to_n(time_str,
|
||||||
sizeof(time_str),
|
sizeof(time_str),
|
||||||
FMT_STRING("{}.{}:{};"),
|
FMT_STRING("{: 12}.{:06}:{};"),
|
||||||
tv.tv_sec,
|
tv.tv_sec,
|
||||||
tv.tv_usec,
|
tv.tv_usec,
|
||||||
level_names[level][0]);
|
level_names[level][0]);
|
||||||
|
@ -213,6 +213,9 @@ textfile_sub_source::text_attrs_for_line(textview_curses& tc,
|
|||||||
(int) (indent + 1),
|
(int) (indent + 1),
|
||||||
line_range::unit::codepoint,
|
line_range::unit::codepoint,
|
||||||
};
|
};
|
||||||
|
if (this->tas_display_time_offset) {
|
||||||
|
guide_lr.shift(0, 13);
|
||||||
|
}
|
||||||
value_out.emplace_back(
|
value_out.emplace_back(
|
||||||
guide_lr,
|
guide_lr,
|
||||||
VC_BLOCK_ELEM.value(block_elem_t{
|
VC_BLOCK_ELEM.value(block_elem_t{
|
||||||
|
@ -1166,8 +1166,12 @@ EXPECTED_FILES = \
|
|||||||
$(srcdir)/%reldir%/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out \
|
$(srcdir)/%reldir%/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err \
|
$(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out \
|
$(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out \
|
||||||
|
$(srcdir)/%reldir%/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.err \
|
||||||
|
$(srcdir)/%reldir%/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.out \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err \
|
$(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out \
|
$(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out \
|
||||||
|
$(srcdir)/%reldir%/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.err \
|
||||||
|
$(srcdir)/%reldir%/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.out \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.err \
|
$(srcdir)/%reldir%/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.err \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out \
|
$(srcdir)/%reldir%/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err \
|
$(srcdir)/%reldir%/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err \
|
||||||
@ -1184,4 +1188,6 @@ EXPECTED_FILES = \
|
|||||||
$(srcdir)/%reldir%/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out \
|
$(srcdir)/%reldir%/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err \
|
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err \
|
||||||
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out \
|
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out \
|
||||||
|
$(srcdir)/%reldir%/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.err \
|
||||||
|
$(srcdir)/%reldir%/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.out \
|
||||||
$()
|
$()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[1m[35mⓘ info[0m: the following piper captures were found in:
|
[1m[35mⓘ info[0m: the following piper captures were found in:
|
||||||
[1mpiper-tmp/lnav-user-{uid}-work/piper[0m
|
[1mpiper-tmp/lnav-user-{uid}-work/piper[0m
|
||||||
[36m =[0m [36mnote[0m: The captures currently consume [1m31B[0m of disk space. File sizes include associated metadata.
|
[36m =[0m [36mnote[0m: The captures currently consume [1m33B[0m of disk space. File sizes include associated metadata.
|
||||||
[36m =[0m [36mhelp[0m: You can reopen a capture by passing the piper URL to lnav
|
[36m =[0m [36mhelp[0m: You can reopen a capture by passing the piper URL to lnav
|
||||||
|
@ -1 +1 @@
|
|||||||
[33m just now[0m [1mpiper://p-e25e2eb68547f31e42da0818b4d0084f-000[0m [1m 31.0 B[0m “[32m[0] echo hi[0m”
|
[33m just now[0m [1mpiper://p-e25e2eb68547f31e42da0818b4d0084f-000[0m [1m 33.0 B[0m “[32m[0] echo hi[0m”
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"top_meta": {
|
||||||
|
"file": "{test_dir}/man_echo.txt",
|
||||||
|
"breadcrumbs": [
|
||||||
|
{
|
||||||
|
"display_value": "man_echo.txt",
|
||||||
|
"search_placeholder": "",
|
||||||
|
"possibilities": [
|
||||||
|
{
|
||||||
|
"display_value": "man_echo.txt"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "⋯",
|
||||||
|
"search_placeholder": "",
|
||||||
|
"possibilities": [
|
||||||
|
{
|
||||||
|
"display_value": "DESCRIPTION"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "EXIT STATUS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "NAME"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "SEE ALSO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "STANDARDS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "SYNOPSIS"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,43 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"top_meta": {
|
||||||
|
"file": "stdin",
|
||||||
|
"anchor": "#description",
|
||||||
|
"breadcrumbs": [
|
||||||
|
{
|
||||||
|
"display_value": "stdin",
|
||||||
|
"search_placeholder": "",
|
||||||
|
"possibilities": [
|
||||||
|
{
|
||||||
|
"display_value": "stdin"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "DESCRIPTION",
|
||||||
|
"search_placeholder": "",
|
||||||
|
"possibilities": [
|
||||||
|
{
|
||||||
|
"display_value": "DESCRIPTION"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "EXIT STATUS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "NAME"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "SEE ALSO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "STANDARDS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"display_value": "SYNOPSIS"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,38 @@
|
|||||||
|
ECHO(1) General Commands Manual ECHO(1)
|
||||||
|
|
||||||
|
[1mNAME[0m
|
||||||
|
[1mecho[0m – write arguments to the standard output
|
||||||
|
|
||||||
|
[1mSYNOPSIS[0m
|
||||||
|
[1mecho[0m [[1m-n[0m] [[4mstring[0m [4m...[0m]
|
||||||
|
|
||||||
|
[1mDESCRIPTION[0m
|
||||||
|
The [1mecho[0m utility writes any specified operands, separated by single blank
|
||||||
|
(‘ ’) characters and followed by a newline (‘\n’) character, to the
|
||||||
|
standard output.
|
||||||
|
|
||||||
|
The following option is available:
|
||||||
|
|
||||||
|
[1m-n[0m Do not print the trailing newline character. This may also be
|
||||||
|
achieved by appending ‘\c’ to the end of the string, as is done by
|
||||||
|
iBCS2 compatible systems. Note that this option as well as the
|
||||||
|
effect of ‘\c’ are implementation-defined in IEEE Std 1003.1-2001
|
||||||
|
(“POSIX.1”) as amended by Cor. 1-2002. Applications aiming for
|
||||||
|
maximum portability are strongly encouraged to use printf(1) to
|
||||||
|
suppress the newline character.
|
||||||
|
|
||||||
|
Some shells may provide a builtin [1mecho[0m command which is similar or
|
||||||
|
identical to this utility. Most notably, the builtin [1mecho[0m in sh(1) does
|
||||||
|
not accept the [1m-n[0m option. Consult the builtin(1) manual page.
|
||||||
|
|
||||||
|
[1mEXIT[0m [1mSTATUS[0m
|
||||||
|
The [1mecho[0m utility exits 0 on success, and >0 if an error occurs.
|
||||||
|
|
||||||
|
[1mSEE[0m [1mALSO[0m
|
||||||
|
builtin(1), csh(1), printf(1), sh(1)
|
||||||
|
|
||||||
|
[1mSTANDARDS[0m
|
||||||
|
The [1mecho[0m utility conforms to IEEE Std 1003.1-2001 (“POSIX.1”) as amended
|
||||||
|
by Cor. 1-2002.
|
||||||
|
|
||||||
|
macOS 13.5 April 12, 2003 macOS 13.5
|
38
test/man_echo.txt
Normal file
38
test/man_echo.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
ECHO(1) General Commands Manual ECHO(1)
|
||||||
|
|
||||||
|
NNAAMMEE
|
||||||
|
eecchhoo – write arguments to the standard output
|
||||||
|
|
||||||
|
SSYYNNOOPPSSIISS
|
||||||
|
eecchhoo [--nn] [_s_t_r_i_n_g _._._.]
|
||||||
|
|
||||||
|
DDEESSCCRRIIPPTTIIOONN
|
||||||
|
The eecchhoo utility writes any specified operands, separated by single blank
|
||||||
|
(‘ ’) characters and followed by a newline (‘\n’) character, to the
|
||||||
|
standard output.
|
||||||
|
|
||||||
|
The following option is available:
|
||||||
|
|
||||||
|
--nn Do not print the trailing newline character. This may also be
|
||||||
|
achieved by appending ‘\c’ to the end of the string, as is done by
|
||||||
|
iBCS2 compatible systems. Note that this option as well as the
|
||||||
|
effect of ‘\c’ are implementation-defined in IEEE Std 1003.1-2001
|
||||||
|
(“POSIX.1”) as amended by Cor. 1-2002. Applications aiming for
|
||||||
|
maximum portability are strongly encouraged to use printf(1) to
|
||||||
|
suppress the newline character.
|
||||||
|
|
||||||
|
Some shells may provide a builtin eecchhoo command which is similar or
|
||||||
|
identical to this utility. Most notably, the builtin eecchhoo in sh(1) does
|
||||||
|
not accept the --nn option. Consult the builtin(1) manual page.
|
||||||
|
|
||||||
|
EEXXIITT SSTTAATTUUSS
|
||||||
|
The eecchhoo utility exits 0 on success, and >0 if an error occurs.
|
||||||
|
|
||||||
|
SSEEEE AALLSSOO
|
||||||
|
builtin(1), csh(1), printf(1), sh(1)
|
||||||
|
|
||||||
|
SSTTAANNDDAARRDDSS
|
||||||
|
The eecchhoo utility conforms to IEEE Std 1003.1-2001 (“POSIX.1”) as amended
|
||||||
|
by Cor. 1-2002.
|
||||||
|
|
||||||
|
macOS 13.5 April 12, 2003 macOS 13.5
|
@ -40,3 +40,17 @@ run_cap_test ${lnav_test} -n \
|
|||||||
|
|
||||||
run_cap_test ${lnav_test} -n \
|
run_cap_test ${lnav_test} -n \
|
||||||
${test_dir}/pyfile_0.py
|
${test_dir}/pyfile_0.py
|
||||||
|
|
||||||
|
run_cap_test ${lnav_test} -n \
|
||||||
|
${test_dir}/man_echo.txt
|
||||||
|
|
||||||
|
run_cap_test ${lnav_test} -n \
|
||||||
|
-c ";SELECT top_meta FROM lnav_views WHERE name = 'text'" \
|
||||||
|
-c ':write-json-to -' \
|
||||||
|
${test_dir}/man_echo.txt
|
||||||
|
|
||||||
|
run_cap_test ${lnav_test} -n \
|
||||||
|
-c ':goto 8' \
|
||||||
|
-c ";SELECT top_meta FROM lnav_views WHERE name = 'text'" \
|
||||||
|
-c ':write-json-to -' \
|
||||||
|
< ${test_dir}/man_echo.txt
|
||||||
|
Loading…
Reference in New Issue
Block a user