=== cat_simple ===
hello
world
foo
bar
baz
=== cat_concat ===
hello
world
foo
bar
baz
1
2
3
=== cat_n ===
     1	hello
     2	world
     3	foo
     4	bar
     5	baz
=== head_default ===
hello
world
foo
bar
baz
=== head_n1 ===
hello
=== head_n2 ===
hello
world
=== head_c5 ===
hello
\ No newline at end of output
=== tail_default ===
hello
world
foo
bar
baz
=== tail_n1 ===
baz
=== tail_n2 ===
bar
baz
=== wc ===
 5  5 24 /data/a.txt
=== wc_l ===
5 /data/a.txt
=== wc_w ===
5 /data/a.txt
=== wc_c ===
24 /data/a.txt
=== grep_world ===
world
=== grep_n ===
4:bar
=== grep_v ===
hello
world
bar
baz
=== grep_i ===
Hello World
HELLO world
hello WORLD
=== grep_c ===
1
=== grep_E_alt ===
foo
bar
=== rg_basic ===
world
=== rg_i ===
Hello World
HELLO world
hello WORLD
=== jq_dot ===
{
  "name": "alice",
  "age": 30
}
=== jq_name ===
"alice"
=== jq_age ===
30
=== jq_raw ===
alice
=== jq_array_iter ===
"alice"
"bob"
=== jq_jsonl_id ===
1
2
3
=== jq_jsonl_chain ===
1
2
3
=== jq_jsonl_chain_raw ===
hello
world
=== jq_no_filter_piped ===
{
  "name": "alice",
  "age": 30
}
=== sort ===
bar
baz
foo
hello
world
=== sort_r ===
world
hello
foo
baz
bar
=== sort_n ===
2
4
5
10
30
=== uniq ===
a
b
c
=== uniq_c ===
      2 a
      2 b
      1 c
=== uniq_d ===
a
b
=== nl ===
     1	hello
     2	world
     3	foo
     4	bar
     5	baz
=== rev ===
olleh
dlrow
oof
rab
zab
=== tac ===
baz
bar
foo
world
hello
=== cut_f1 ===
name
alice
bob
=== cut_f2 ===
age
30
25
=== cut_c2_4 ===
ell
orl
oo
ar
az
=== cut_tab ===
a
b
c
=== paste ===
hello	1
world	2
foo	3
bar	
baz	
=== comm ===
apple
		banana
cherry
	date
	elder
=== tr_upper ===
HELLO
WORLD
FOO
BAR
BAZ
=== tr_delete ===
hll
wrld
f
br
bz
=== sed_sub ===
hello
UNIVERSE
foo
bar
baz
=== sed_global ===
Hello World
HELLO world
HI WORLD
=== awk_first_col ===
name
alice
bob
=== awk_nr ===
world
=== awk_sum ===
51
=== md5 ===
191c53e00627438f88824862472a3f59  /data/a.txt
=== md5_multi ===
191c53e00627438f88824862472a3f59  /data/a.txt
c0710d6b4f15dfa88f600b0e6b624077  /data/b.txt
=== sha256sum ===
1a88a6398be8b75991c1286e996ef9de20edc80b50dc704fd17b7e956c9a38ed  /data/a.txt
=== base64 ===
aGVsbG8Kd29ybGQKZm9vCmJhcgpiYXoK
=== xxd ===
00000000: 6865 6c6c 6f0a 776f                      hello.wo
=== xxd_p ===
68656c6c6f0a776f
=== basename ===
a.txt
=== basename_suffix ===
a
=== basename_trailing_slash ===
sub
=== basename_root ===
/
=== basename_relative ===
a.txt
=== dirname ===
/data
=== dirname_trailing_slash ===
/data
=== dirname_multi ===
/data
/data/sub
=== dirname_relative ===
.
=== dirname_root ===
/
=== realpath ===
/data/a.txt
=== find_name ===
/data/a.txt
/data/anchors.txt
/data/b.txt
/data/c.txt
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
=== find_type_f ===
/data/a.txt
/data/abc.csv
/data/anchors.txt
/data/b.txt
/data/binary.bin
/data/c.txt
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.diff
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== ls ===
a.txt
abc.csv
anchors.txt
b.txt
binary.bin
c.txt
chat.jsonl
csv.csv
data.jsonl
disptree
dup.txt
empty.txt
fields.txt
guard
mixed.txt
multi.txt
no_nl.txt
numbers.txt
one_byte.txt
oooo.txt
patterns.txt
patterns2.txt
poem.diff
poem.txt
prefix_dup.txt
repeats.txt
sections.txt
sorted_a.txt
sorted_b.txt
sorted_c.txt
spaced.txt
sub
tabbed.txt
user.json
users.json
=== ls_1 ===
a.txt
abc.csv
anchors.txt
b.txt
binary.bin
c.txt
chat.jsonl
csv.csv
data.jsonl
disptree
dup.txt
empty.txt
fields.txt
guard
mixed.txt
multi.txt
no_nl.txt
numbers.txt
one_byte.txt
oooo.txt
patterns.txt
patterns2.txt
poem.diff
poem.txt
prefix_dup.txt
repeats.txt
sections.txt
sorted_a.txt
sorted_b.txt
sorted_c.txt
spaced.txt
sub
tabbed.txt
user.json
users.json
=== ls_file ===
/data/a.txt
=== ls_glob ===
/data/a.txt
/data/anchors.txt
/data/b.txt
/data/c.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/tabbed.txt
=== expand ===
a       1
b       2
c       3
=== fold ===
hel
lo
wor
ld
foo
bar
baz
=== strings ===
hello
=== nl_ba ===
     1	hello
     2	world
     3	foo
     4	bar
     5	baz
=== fmt_w20 ===
hello world foo bar
baz
=== unexpand ===
a	1
b	2
c	3
=== column_t ===
name   age
alice  30
bob    25
=== look ===
hello
=== join ===
banana
=== grep_A1 ===
world
foo
=== grep_B1 ===
world
foo
=== grep_o ===
ll
=== grep_l ===
/data/mixed.txt
/data/a.txt
=== file_text ===
/data/a.txt: text
=== file_json ===
/data/user.json: json
=== file_b ===
text
=== stat_size ===
24
=== stat_name ===
/data/a.txt
=== gzip_gunzip_pipe ===
hello
world
foo
bar
baz
=== gzip_zcat_pipe ===
hello
world
foo
bar
baz
=== base64_roundtrip ===
hello
world
foo
bar
baz
=== xxd_roundtrip ===
hello
world
foo
bar
baz
=== find_mindepth ===
/data/a.txt
/data/abc.csv
/data/anchors.txt
/data/b.txt
/data/binary.bin
/data/c.txt
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.diff
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== find_maxdepth ===
/data/a.txt
/data/abc.csv
/data/anchors.txt
/data/b.txt
/data/binary.bin
/data/c.txt
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.diff
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== find_multi_name ===
/data/a.txt
/data/anchors.txt
/data/b.txt
/data/c.txt
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== wc_multi ===
 5  5 24 /data/a.txt
 3  3  6 /data/b.txt
 8  8 30 total
=== wc_l_multi ===
5 /data/a.txt
3 /data/b.txt
8 total
=== cat_multi3 ===
hello
world
foo
bar
baz
1
2
3
a
a
b
b
c
=== md5_multi3 ===
191c53e00627438f88824862472a3f59  /data/a.txt
c0710d6b4f15dfa88f600b0e6b624077  /data/b.txt
aa824302994c716187326457c48e125e  /data/dup.txt
=== du_multi ===
24	/data/a.txt
6	/data/b.txt
=== file_multi ===
/data/a.txt: text
/data/user.json: json
=== grep_pipe_wc ===
1
=== sort_uniq ===
a
b
c
=== cat_pipe_head ===
hello
world
=== cat_pipe_sort_pipe_uniq ===
      2 a
      2 b
      1 c
=== find_pipe_wc ===
30
=== jq_pipe_wc ===
3
=== cat_tr_sort ===
BAR
BAZ
FOO
HELLO
WORLD
=== cat_tr_wc ===
17
=== head_pipe_tail ===
foo
=== sort_head ===
bar
baz
=== sort_tail ===
hello
world
=== jq_sort ===
1
2
3
=== find_sort_head ===
/data/a.txt
/data/anchors.txt
=== cat_empty ===

=== wc_empty ===
0 0 0 /data/empty.txt
=== head_empty ===

=== md5_empty ===
d41d8cd98f00b204e9800998ecf8427e  /data/empty.txt
=== sha256_empty ===
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /data/empty.txt
=== cat_no_nl ===
no trailing newline
\ No newline at end of output
=== wc_no_nl ===
 0  3 19 /data/no_nl.txt
=== md5_one_byte ===
9dd4e461268c8034f5c8564e155c67a6  /data/one_byte.txt
=== wc_one_byte ===
0 1 1 /data/one_byte.txt
=== sort_u ===
a
b
c
=== sort_k_t ===
bob,25
alice,30
name,age
=== sort_f ===
HELLO world
Hello World
hello WORLD
=== sort_n_r ===
30
10
5
4
2
=== grep_w ===
world
=== grep_count_no_match ===
0
=== grep_n_v_combo ===
1:hello
2:world
4:bar
5:baz
=== rg_c ===
1
=== find_d ===
/data
/data/disptree
/data/disptree/d
/data/guard
/data/guard/sub
/data/sub
/data/sub/deep
=== find_iname ===
/data/a.txt
/data/anchors.txt
/data/b.txt
/data/c.txt
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
=== find_size_gt ===
/data/a.txt
/data/abc.csv
/data/anchors.txt
/data/binary.bin
/data/c.txt
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/disptree/x.txt
/data/fields.txt
/data/mixed.txt
/data/no_nl.txt
/data/numbers.txt
/data/poem.diff
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/nested.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== find_recurse ===
/data/a.txt
/data/anchors.txt
/data/b.txt
/data/c.txt
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
=== find_path_pattern ===
/data/guard/sub
/data/guard/sub/s.txt
/data/sub
/data/sub/deep
/data/sub/deep/deeper.txt
/data/sub/nested.txt
=== wc_m ===
24 /data/a.txt
=== wc_L ===
5 /data/a.txt
=== comm_12 ===
banana
=== comm_23 ===
apple
cherry
=== comm_13 ===
date
elder
=== tail_c ===

baz
=== sha256sum_multi ===
1a88a6398be8b75991c1286e996ef9de20edc80b50dc704fd17b7e956c9a38ed  /data/a.txt
14c5e74c4b96ccef41cd94db73a9ec3348038ac094feca4fd897cecffa07cdae  /data/b.txt
=== ls_sub ===
deep
nested.txt
=== cat_nested ===
nested
content
=== find_depth2 ===
/data/sub/deep/deeper.txt
/data/sub/nested.txt
=== pipe_grep_sort_uniq_wc ===
2
=== pipe_cat_cut_sort ===
age
25
30
=== pipe_jq_grep ===
2
=== pipe_find_grep_wc ===
2
=== pipe_cat_tr_sort_uniq ===
      2 A
      2 B
      1 C
=== pipe_head_pipe_tail2 ===
4
5
=== pipe_tail_head ===
hello
=== md5_stdin ===
b1946ac92492d2347c6235b4d2611184  -
=== sha256_stdin ===
5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03  -
=== base64_stdin ===
aGVsbG8K
=== wc_stdin ===
      1       3       6
=== awk_nf ===
3
3
3
=== awk_nr_total ===
5
=== awk_last_col ===
engineer
designer
manager
=== awk_if ===
alice 30 engineer
carol 40 manager
=== awk_begin_end ===
start
1
2
3
done
=== awk_fs_comma ===
age
30
25
=== awk_ofs ===
name age
alice 30
bob 25
=== awk_range ===
world
foo
bar
=== awk_v_repeat ===
va1 vb2
=== awk_v_equals ===
eq=val
=== awk_f_program ===
engineer alice
designer bob
manager carol
=== awk_default_fs ===
1 leading
1 trailing
1 both
=== awk_multifile ===
1 hello
2 world
3 foo
4 bar
5 baz
6 1
7 2
8 3
=== awk_f_repeat ===
51
=== sed_d_first ===
world
foo
bar
baz
=== sed_d_last ===
hello
world
foo
bar
=== sed_range_p ===
world
foo
=== sed_print_only ===
world
=== sed_replace_n ===
hello
world
foO
bar
baz
=== sed_delete_pattern ===
hello
world
bar
baz
=== sed_append ===
hello
world
INSERTED
foo
bar
baz
=== sed_anchor_sub ===
#TS
ls
#TS
foo bar
=== sed_anchor_sub_E ===
#TS
ls
#TS
foo bar
=== sed_anchor_sub_g ===
#TS
ls
#TS
foo bar
=== sed_anchor_addr_del ===
ls
foo bar
=== sed_anchor_sub_file ===
#TS
ls
#TS
foo bar
=== sed_firstmatch_file ===
Oo
Oo
Oo
=== sed_count_nth ===
oOoo
oOoo
=== sed_count_nth_g ===
oOOO
oOOO
=== sed_sub_p ===
Oooo
Oooo
=== sed_y ===
hippo
=== sed_c_addr ===
hello
CHANGED
foo
bar
baz
=== sed_c_range ===
hello
MID
baz
=== sed_bre_group ===
[foo]
=== sed_bre_plus ===
Xb
=== sed_bre_alt ===
PET
=== sed_ere_group ===
[foo]
=== sed_ere_plus ===
Xb
=== sed_r_alias ===
Xb
=== sed_multi_e ===
c
=== sed_e_file ===
hello
EARTH
foo
bar
baz
=== sed_f_file ===
hello
EARTH
foo
bar
baz
=== sed_f_multi ===
hello
EARTH
FOO
bar
baz
=== sed_ef_combined ===
hello
EARTH
FOO
bar
baz
=== sed_f_stdin ===
hello
EARTH
foo
bar
baz
=== sed_amp ===
hello
[world]
foo
bar
baz
=== sed_amp_literal ===
hello
[&]
foo
bar
baz
=== sed_sub_i ===
HI World
HI world
HI WORLD
=== sed_delim_pipe ===
hellO
wOrld
fOO
bar
baz
=== sed_d_range ===
hello
bar
baz
=== sed_n_2p ===
world
=== sed_n_lastp ===
baz
=== sed_insert ===
hello
INSERTED
world
foo
bar
baz
=== sed_change_all ===
X
X
X
X
X
=== sed_change_regex ===
hello
CHANGED
foo
bar
baz
=== sed_quit ===
hello
world
=== sed_double_space ===
hello

world

foo

bar

baz

=== sed_n_join ===
hello world
foo bar
baz
=== sed_block ===
hello
X
foo
bar
baz
=== sed_semicolon ===
hell0
w0rld
f0o
bAr
bAz
=== sed_backref_E ===
1section
body1
2section
body2
3section
body3
=== sed_neg_line ===
world
=== sed_neg_regex ===
world
=== sed_neg_lastp ===
hello
world
foo
bar
=== sed_neg_range ===
hello
world
foo
Xar
Xaz
=== sed_join_all ===
hello,world,foo,bar,baz
=== sed_hold_accum ===

hello
world
foo
bar
baz
=== sed_escaped_delim ===
c
=== sed_no_final_nl ===
NO trailing newline
\ No newline at end of output
=== case_multi_arm ===
one
two
=== case_multi_arm_default ===
fall
through
=== tr_squeeze ===
abc
=== tr_complement ===
hello
world
foo
bar
baz
=== tr_delete_digits ===
abcdef
=== tr_to_newlines ===
a
b
c
=== cut_c1 ===
h
w
f
b
b
=== cut_c_range_open ===
llo
rld
o
r
z
=== cut_d_space ===
30
25
40
=== cut_f1_3 ===
name,age
alice,30
bob,25
=== sort_t_comma ===
a,1
b,2
c,3
d,4
e,5
=== sort_k2n ===
bob 25 designer
alice 30 engineer
carol 40 manager
=== sort_M ===
Jan
Feb
Mar
=== sort_b ===
  both  
  leading
trailing  
=== uniq_u ===
c
=== uniq_repeats ===
x
y
z
=== uniq_c_repeats ===
      3 x
      2 y
      1 z
=== uniq_f ===
1 apple
3 banana
=== uniq_s ===
1 apple
3 banana
=== uniq_w ===
1 apple
2 apple
3 banana
=== uniq_w0 ===
1 apple
=== uniq_f_c ===
      2 1 apple
      1 3 banana
=== grep_F ===

=== grep_m1 ===
hello
=== grep_h ===
hello WORLD
hello
=== grep_only_match_multi ===
o
o
o
o
=== grep_recursive_dir ===

=== grep_empty_pattern ===
1
2
3
=== grep_e_flag ===
world
=== grep_e_n ===
4:bar
=== grep_e_multi_file ===
/data/mixed.txt:hello WORLD
/data/a.txt:hello
=== grep_e_multi_pattern ===
world
bar
=== grep_e_multi_pattern_n ===
1:hello
5:baz
=== grep_e_multi_pattern_F ===
foo
=== grep_f_file ===
world
bar
=== grep_e_f_union ===
hello
world
bar
=== grep_f_multi ===
world
bar
baz
=== grep_cluster_ne ===
2:world
=== du_max_depth_eq ===
20	/data/sub
=== grep_unknown_long_flag ===
grep: unrecognized option '--bogus'
Try 'grep --help' for more information.
code=2
=== grep_unknown_short_flag ===
grep: invalid option -- 'Y'
Try 'grep --help' for more information.
code=2
=== cat_unknown_long_flag ===
cat: unrecognized option '--bogus'
Try 'cat --help' for more information.
code=1
=== grep_missing_flag_value ===
grep: option requires an argument -- 'm'
Try 'grep --help' for more information.
code=2
=== du_missing_flag_value ===
du: option '--max-depth' requires an argument
Try 'du --help' for more information.
code=1
=== grep_color_auto ===
world
=== grep_color_bare ===
world
=== grep_line_buffered ===
world
=== ls_color ===
deep
nested.txt
=== head_numeric_shorthand ===
hello
world
=== tail_numeric_shorthand ===
bar
baz
=== grep_cluster_attached ===
2:world
=== grep_cluster_count ===
Hello World
=== rg_f_multi ===
world
bar
baz
=== zgrep_e_multi_pipe ===
world
baz
=== rg_e_flag ===
world
=== rg_e_multi ===
world
bar
=== rg_f_file ===
world
bar
=== zgrep_f_pipe ===
world
bar
=== paste_s ===
1	2	3
=== paste_d_comma ===
hello,1
world,2
foo,3
bar,
baz,
=== file_empty ===
/data/empty.txt: text
=== file_binary ===
/data/binary.bin: binary
=== find_empty ===
/data/empty.txt
=== find_not_name ===
/data
/data/abc.csv
/data/binary.bin
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/disptree
/data/disptree/d
/data/guard
/data/guard/sub
/data/poem.diff
/data/sub
/data/sub/deep
/data/user.json
/data/users.json
=== find_name_start ===
/data
=== find_maxdepth_zero ===
/data
=== find_mindepth_zero ===
/data
/data/disptree
/data/disptree/d
/data/guard
/data/guard/sub
/data/sub
/data/sub/deep
=== find_size_lt ===
/data
/data/disptree
/data/disptree/d
/data/empty.txt
/data/guard
/data/guard/sub
/data/one_byte.txt
/data/patterns2.txt
/data/sub
/data/sub/deep
=== find_depth ===
/data/a.txt
/data/abc.csv
/data/anchors.txt
/data/b.txt
/data/binary.bin
/data/c.txt
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard/g.txt
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.diff
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== find_mtime ===
/data
/data/a.txt
/data/abc.csv
/data/anchors.txt
/data/b.txt
/data/binary.bin
/data/c.txt
/data/chat.jsonl
/data/csv.csv
/data/data.jsonl
/data/disptree
/data/disptree/d
/data/disptree/d/y.txt
/data/disptree/x.txt
/data/dup.txt
/data/empty.txt
/data/fields.txt
/data/guard
/data/guard/g.txt
/data/guard/sub
/data/guard/sub/s.txt
/data/mixed.txt
/data/multi.txt
/data/no_nl.txt
/data/numbers.txt
/data/one_byte.txt
/data/oooo.txt
/data/patterns.txt
/data/patterns2.txt
/data/poem.diff
/data/poem.txt
/data/prefix_dup.txt
/data/repeats.txt
/data/sections.txt
/data/sorted_a.txt
/data/sorted_b.txt
/data/sorted_c.txt
/data/spaced.txt
/data/sub
/data/sub/deep
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data/tabbed.txt
/data/user.json
/data/users.json
=== find_size_gt_dirs ===
/data/fs/sub/big.bin
=== find_size_lt_dirs ===
/data/fs
/data/fs/small.bin
/data/fs/sub
=== find_size_gt_boundary ===
/data/fs/sub/big.bin
=== find_size_lt_boundary ===
/data/fs
/data/fs/small.bin
/data/fs/sub
=== find_size_eq_boundary ===
/data/fs/four.bin
=== find_size_round_k ===
/data/fs
/data/fs/sub
=== find_path_glob ===
/data/fs/sub
/data/fs/sub/big.bin
=== find_path_exact ===
/data/fs/sub
=== find_path_or_name ===
/data/fs/small.bin
/data/fs/sub
/data/fs/sub/big.bin
=== xxd_c4 ===
00000000: 6865 6c6c  hell
00000004: 6f0a 776f  o.wo
00000008: 726c 640a  rld.
=== xxd_g1 ===
00000000: 68 65 6c 6c 6f 0a 77 6f                          hello.wo
=== xxd_u ===
00000000: 6865 6C6C 6F0A 776F                      hello.wo
=== diff_same ===

=== diff_differ ===
1,5c1,3
< hello
< world
< foo
< bar
< baz
---
> 1
> 2
> 3
=== diff_u ===
--- /data/sorted_a.txt
+++ /data/sorted_b.txt
@@ -1,3 +1,3 @@
-apple
 banana
-cherry
+date
+elder
=== diff_recursive ===
diff -r /data/dr/x/a.txt /data/dr/y/a.txt
1c1
< aaa
---
> AAA
Only in /data/dr/x: leftonly.txt
Only in /data/dr/y: rightonly.txt
diff -r /data/dr/x/sub/d.txt /data/dr/y/sub/d.txt
1c1
< deep1
---
> deep2
=== cmp_same ===

=== cmp_differ ===
/data/a.txt /data/b.txt differ: char 1, line 1
=== du_file ===
24	/data/a.txt
=== du_dir ===
894	/data
=== du_h ===
24B	/data/a.txt
=== tree ===
├── deep
│   └── deeper.txt
└── nested.txt
=== iconv_id ===
hello
world
foo
bar
baz
=== cat_E ===
hello$
world$
foo$
bar$
baz$
=== cat_T ===
a^I1
b^I2
c^I3
=== cat_A ===
a^I1$
b^I2$
c^I3$
=== nl_d_pipe ===
     1	hello
     2	world
     3	foo
     4	bar
     5	baz
=== nl_w3 ===
  1	hello
  2	world
  3	foo
  4	bar
  5	baz
=== column_n ===
alice  30  engineer
bob    25  designer
carol  40  manager
=== join_t ===
a,1,1
b,2,2
c,3,3
d,4,4
e,5,5
=== join_o ===
apple
cherry
=== fmt_w10 ===
alpha beta
gamma
delta
=== fold_s ===
hello
world
foo
bar
baz
=== fold_file ===
hel
lo
wor
ld
foo
bar
baz
=== fold_multi ===
hell
o
worl
d
foo
bar
baz
1
2
3
=== fold_default ===
alpha
beta
gamma
delta
=== fold_s_spaces ===
Hello 
World
HELLO 
world
hello 
WORLD
=== expand_t4 ===
a   1
b   2
c   3
=== unexpand_all ===
    hi
=== tac_nested ===
content
nested
=== rev_b ===
1
2
3
=== ls_a ===
deep
nested.txt
=== ls_R ===
/data/sub:
deep
nested.txt

/data/sub/deep:
deeper.txt
=== ls_sub_deep ===
deeper.txt
=== zgrep_pipe ===
world
=== zgrep_e_pipe ===
world
=== gzip_c_pipe ===
1
2
3
=== jq_keys ===
[
  "age",
  "name"
]
=== jq_length ===
1
=== jq_select ===
{
  "name": "alice",
  "age": 30
}
=== jq_jsonl_select ===
{
  "id": 2
}
{
  "id": 3
}
=== pipe_awk_sort ===
25
30
40
=== pipe_grep_cut ===
alice
bob
=== pipe_sed_wc ===
3
=== pipe_find_xargs_cat ===
/data/sub/deep/deeper.txt
=== pipe_tr_sort_uniq_c ===
      1 C
      2 A
      2 B
=== md5_stdin_multi ===
191c53e00627438f88824862472a3f59  -
=== sha256_stdin_multi ===
1a88a6398be8b75991c1286e996ef9de20edc80b50dc704fd17b7e956c9a38ed  -
=== wc_stdin_l ===
5
=== sort_stdin ===
a
a
b
b
c
=== rev_stdin ===
olleh
=== base64_stdin_d ===
hello
\ No newline at end of output
=== var_command_name ===
hi
=== var_command_mount ===
hello
world
foo
bar
baz
=== quoted_command_name ===
hello
world
foo
bar
baz
=== xargs_initial_args ===
a b c
=== xargs_wc_initial_args ===
5 /data/a.txt
=== xargs_literal_input ===
$(echo pwned)
=== xargs_quote_char_input ===
don't
=== timeout_basic ===
hello
=== timeout_quoted_arg ===
a  b
=== glob_unmatched_echo ===
/data/*.nope
=== glob_test_f ===
yes
=== glob_function_args ===
/data/sorted_a.txt 3
=== glob_matched_echo ===
/data/sorted_a.txt /data/sorted_b.txt /data/sorted_c.txt
=== glob_pattern_dup_word ===
l1.txt:x *.txt y
=== redirect_bare_prep ===

=== redirect_bare_target ===
hi
=== source_prep ===

=== source_relative ===
sourced-ok
sourced-ok
=== relative_operand_prep ===

=== relative_operand_extensionless ===
one
two
2 sub/README
one
=== redirect_relative_write ===

=== redirect_relative_append ===
one
two
=== redirect_stdin_relative ===
2
=== relword_prep ===

=== test_relative_paths ===
yes-f
yes-d
no-f
=== glob_relative_display ===
sub/a.txt sub/b.txt
*.nope
=== glob_relative_for ===
sub/a.txt
sub/b.txt
=== glob_relative_func ===
sub/a.txt 2
=== redirect_after_cd ===
hi
=== redirect_list_last_only ===
one
two
=== redirect_chain ===
a
b
2
=== redirect_group ===
g1
g2
=== relspell_prep ===

=== relspell_walk_grep ===
sub/a.txt:hello
sub/b.txt:hello
=== relspell_walk_find ===
sub/a.txt
sub/b.txt
=== relspell_error_cat ===
cat: sub/missing.txt: No such file or directory
=== relspell_error_grep ===
grep: sub/missing.txt: No such file or directory
=== relspell_glob_dot ===
./sub/a.txt ./sub/b.txt
=== relspell_du_slash ===
12	sub/
=== relspell_labels ===
1 sub/a.txt
==> sub/a.txt <==
hello
=== midglob_prep ===

=== midglob_echo ===
sea/x.txt sub/x.txt
=== midglob_cat ===
yo
hi
=== midglob_absolute ===
yo
hi
=== midglob_zero_literal ===
n*/x.txt
=== glob_zero_mount_error ===
cat: *.nope: No such file or directory
=== glob_pushdown_labels ===
1 sea/x.txt
1 sub/x.txt
2 total
sub/x.txt
=== glob_ls_operand ===
sub/x.txt
=== xargs_n1 ===
a
b
c
=== xargs_n2 ===
a b
c d
e
=== xargs_invalid_opt ===
xargs: invalid option -- 'q'
code=1
=== xargs_n0 ===
xargs: value 0 for -n option should be >= 1
code=1
=== xargs_delim ===
a b c
=== xargs_empty_r ===
code=0
=== xargs_empty_default ===
hi
=== timeout_kill ===
code=124
=== timeout_ok ===
fast
=== timeout_bad_duration ===
timeout: invalid time interval 'xx'
code=125
=== timeout_unsupported ===
timeout: unsupported option -- '-s'
code=125
=== echo_trailing_dash_n ===
hi -n
=== echo_cluster ===
ab	cd
=== echo_unknown_cluster ===
-nq hi
=== shift_non_numeric ===
shift: x: numeric argument required
code=1
=== shift_too_many ===
shift: too many arguments
code=1
=== return_non_numeric ===
return: x: numeric argument required
code=2
=== read_r_flag ===
code=0
=== read_invalid_opt ===
read: -q: invalid option
code=2
=== arith_cmd_true ===
code=0
=== arith_cmd_false ===
code=1
=== arith_incr ===
code=1 i=1
code=0 i=2
=== arith_assign_comma ===
5 3
=== arith_c_semantics ===
-3 -1 1024 16 8
=== arith_while ===
n=3
=== arith_if ===
yes
=== arith_divzero ===
bash: ((: 1 / 0: division by 0
code=1
=== arith_short_circuit ===
q=unset
=== arity_uniq ===
uniq: extra operand '/data/mixed.txt'
Try 'uniq --help' for more information.
code=1
=== arity_tr ===
tr: extra operand '/data/a.txt'
Try 'tr --help' for more information.
code=1
=== arity_diff ===
diff: extra operand '/data/mixed.txt'
diff: Try 'diff --help' for more information.
code=2
=== arity_seq ===
seq: extra operand '4'
Try 'seq --help' for more information.
code=1
=== arity_mktemp ===
mktemp: too many templates
Try 'mktemp --help' for more information.
code=1
=== arity_relative ===
uniq: extra operand 'extra.txt'
Try 'uniq --help' for more information.
code=1
=== cp_multi_into_dir ===

=== cp_multi_verify_a ===
hello
world
foo
bar
baz
=== cp_multi_verify_b ===
1
2
3
=== mv_multi_into_dir ===

=== mv_multi_verify_a ===
hello
world
foo
bar
baz
=== mv_multi_verify_b ===
1
2
3
=== rg_multi_setup_d1 ===

=== rg_multi_setup_d2 ===

=== rg_multi_seed1 ===

=== rg_multi_seed2 ===

=== rg_multi_dir ===
/data/rgm/d1/f1.txt:hello
/data/rgm/d2/f2.txt:Hello World
/data/rgm/d2/f2.txt:HELLO world
/data/rgm/d2/f2.txt:hello WORLD
=== rg_l_multi_file ===
/data/rgm/d1/f1.txt
/data/rgm/d2/f2.txt
=== rg_col_seed_parquet ===

=== rg_columnar_skip ===
/data/rgm/d1/f1.txt:world
=== arch_gzip_roundtrip ===
gz-data
g.txt
=== arch_tar_create_verbose ===
data/arch/g.txt
=== arch_tar_list ===
data/arch/g.txt
=== arch_tar_extract_strip ===
gz-data
=== arch_tar_exclude ===
data/arch/g.txt
=== arch_zip_unzip ===
gz-data
=== arch_split_roundtrip ===
gz-data
=== arch_csplit ===
hello
world
=== arch_iconv_file ===
gz-data
=== arch_mktemp ===
1
=== echo_empty_squote ===
a  b
=== echo_empty_dquote ===
a  b
=== root_create ===
atroot
=== root_create_cat ===
atroot
=== root_create_mkdir ===
/data/rootdir
=== root_create_basename ===
at_root.txt
=== root_create_dirname ===
/data
=== cwd_pwd_root ===
/
=== cwd_cd_mount_pwd ===
/data
=== cwd_cd_subdir_pwd ===
/data/sub
=== cwd_cd_dotdot_pwd ===
/data
=== cwd_rel_cat ===
hello
world
foo
bar
baz
=== cwd_rel_dot_cat ===
hello
world
foo
bar
baz
=== cwd_rel_subdir_cat ===
nested
content
=== cwd_rel_dotdot_cat ===
hello
world
foo
bar
baz
=== cwd_rel_csplit ===
nested
content
=== cwd_echo_pwd ===
/data/sub
=== cwd_echo_home_unset ===
[]
=== cwd_cd_oldpwd ===
/data
=== cwd_cd_dash ===
/data
=== cwd_cd_dash_pwd ===
/data
=== cwd_home_cd_tilde ===
/data
=== cwd_home_echo ===
/data
=== cwd_tilde_cat ===
hello
world
foo
bar
baz
=== cwd_tilde_subdir_cat ===
nested
content
=== cwd_cd_double_slash ===
/data
=== cwd_cd_phys_flag ===
/data/sub
=== cwd_cd_log_flag ===
/data
=== cwd_cd_dashdash ===
/data
=== cwd_cd_cdpath ===
/data/sub
/data/sub
=== subshell_var_isolated ===
1
=== subshell_var_inherit ===
7
=== subshell_export_isolated ===
[]
=== subshell_func_redef ===
A
=== subshell_func_no_leak ===
gone
=== subshell_positional_isolated ===
3
=== subshell_positional_inherit ===
a b
=== subshell_cd_no_leak ===
/
=== subshell_nested_cd ===
/data
=== disp_wc_rel ===
5 a.txt
=== disp_wc_multi ===
5 a.txt
3 b.txt
8 total
=== disp_wc_dotslash ===
5 ./a.txt
=== disp_wc_dotdot ===
5 ../a.txt
=== disp_grep_multi ===
a.txt:world
=== disp_md5_rel ===
191c53e00627438f88824862472a3f59  a.txt
=== disp_stat_name ===
a.txt
=== disp_find_subdir ===
sub/nested.txt
=== disp_head_multi ===
==> a.txt <==
hello

==> b.txt <==
1
=== disp_grep_files ===
a.txt
=== disp_grep_r ===
disptree/x.txt:nested
=== disp_rg_r ===
disptree/x.txt:nested
=== disp_ls_recursive ===
disptree:
d
x.txt

disptree/d:
y.txt
=== disp_find_root ===
disptree
disptree/d
disptree/d/y.txt
disptree/x.txt
=== history_last_two ===
499  (cd /data && ls -R disptree)
500  (cd /data && find disptree)
=== bash_history_tail ===
(cd /data && ls -R disptree)
(cd /data && find disptree)
history 2
=== history_find_view ===
/.bash_history
=== history_find_no_dir ===

=== bash_history_after_find ===
find /.bash_history -type d
=== bash_history_format ===
#TS
find /.bash_history -type d
#TS
grep -v '^#' /.bash_history | tail -n 1
=== arch_gzip_interleaved_ls ===
h.txt.gz
two
h.txt
=== patch_apply ===
roses are red
violets are dark
sugar is sweet
=== patch_n_noop ===
roses are red
violets are dark
sugar is sweet
=== patch_reverse ===
roses are red
violets are blue
sugar is sweet
=== cwd_cd_too_many ===
exit=1
cd: too many arguments
=== cwd_cd_bad_opt ===
exit=2
cd: -x: invalid option
cd: usage: cd [-L|[-P [-e]] [-@]] [dir]
=== cwd_cd_home_unset ===
exit=1
cd: HOME not set
=== cwd_cd_quoted_tilde ===
exit=1
cd: /data/~: No such file or directory
=== sed_count_zero ===
exit=1
=== jq_no_filter_no_input ===
exit=0
=== jq_dot_no_input ===
exit=0
=== tac_no_input ===
exit=0
=== xxd_no_input ===
exit=0
=== column_no_input ===
exit=0
=== strings_no_input ===
exit=0
=== tsort_no_input ===
exit=0
=== base64_no_input ===
exit=0
=== split_no_input ===
exit=0
=== iconv_no_input ===
exit=0
=== bc_no_input ===
exit=0
=== tr_no_input ===
exit=0
=== awk_no_input ===
exit=0
=== sha256sum_no_input ===
exit=0
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  -
=== patch_no_input ===
exit=0
=== look_no_input ===
exit=1
=== zgrep_no_input ===
exit=1
=== gunzip_no_input ===
exit=1
=== zcat_no_input ===
exit=1
=== gzip_d_no_input ===
exit=1
=== csplit_no_input ===
exit=0
=== gzip_no_input_roundtrip ===
exit=0
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  -
=== lazy_exit_grep_match ===
exit=0
hello
=== lazy_exit_grep_no_match ===
exit=1
=== grep_f_empty_no_match ===
exit=1
=== grep_c_match_exit ===
exit=0
1
=== grep_c_no_match_exit ===
exit=1
0
=== grep_c_stdin_no_match_exit ===
exit=1
0
=== grep_c_multi_no_match_exit ===
exit=1
/data/a.txt:0
/data/b.txt:0
=== zgrep_c_match_exit ===
exit=0
1
=== zgrep_c_no_match_exit ===
exit=1
0
=== grep_usage_exit ===
exit=2
=== rg_usage_exit ===
exit=2
=== zgrep_usage_exit ===
exit=2
=== awk_usage_exit ===
exit=2
=== awk_f_missing_exit ===
exit=2
=== grep_usage_no_input ===
exit=2
=== rg_usage_no_input ===
exit=2
=== grep_usage_stdin_only ===
exit=2
=== cp_reject_multi_nondir ===
exit=1
=== inv_ls_warm ===
exit=0
deep
nested.txt
=== inv_touch ===
exit=0
=== inv_rm ===
exit=0
=== inv_gone ===
exit=1
=== poison_concat ===
exit=0
apple
banana
cherry
banana
date
elder
=== poison_first_intact ===
exit=0
apple
banana
cherry
=== poison_second_intact ===
exit=0
banana
date
elder
=== pipe_concat_head_first ===
exit=0
apple
banana
=== pipe_concat_head_span ===
exit=0
apple
banana
cherry
banana
=== pipe_after_first ===
exit=0
apple
banana
cherry
=== pipe_after_second ===
exit=0
banana
date
elder
=== lnzip_ls_warm ===
exit=0
deep
nested.txt
=== ln_create ===
exit=0
=== zip_create ===
exit=0
  adding: data/sub/nested.txt
=== lnzip_ls_after ===
exit=0
arch.zip
deep
nested.txt
link.txt
=== ln_read_back ===
exit=0
/data/sub/nested.txt
=== nl_pin_du ===
exit=0
14
=== nl_pin_stat ===
exit=0
12
=== nl_pin_file ===
exit=0
18
=== nl_pin_tree ===
exit=0
126
=== nl_pin_ls ===
exit=0
34
=== nl_pin_wc ===
exit=0
14
=== nl_pin_md5 ===
exit=0
46
=== nl_pin_cmp ===
exit=0
47
=== grep_dir_operand ===
exit=1
=== grep_dir_among_files ===
exit=0
/data/a.txt:hello
=== guard_cp_same_file ===
exit=1
=== guard_mv_same_file ===
exit=1
=== guard_mv_same_file_intact ===
exit=0
guard
=== guard_mv_into_dir_where_file_lives ===
exit=1
=== guard_cp_dir_into_itself ===
exit=1
=== guard_mv_dir_into_own_subtree ===
exit=1
=== guard_cp_missing_source_continues ===
exit=1
=== guard_state_after ===
exit=0
/data/guard/g.txt
/data/guard/sub/g.txt
/data/guard/sub/s.txt
=== sleep_invalid ===
exit=1
=== sleep_no_operand ===
exit=1
=== sleep_negative ===
exit=1
=== sleep_infinity ===
exit=1
=== sym_setup ===
exit=0
=== sym_ln ===
exit=0
=== sym_cat_follow ===
exit=0
alpha
=== sym_grep_follow ===
exit=0
alpha
=== sym_write_through ===
exit=0
beta
=== sym_ls_f ===
exit=0
t.txt
l.txt@
=== sym_ls_long_arrow ===
exit=0
l	-	-	l.txt -> /data/symd/t.txt
=== sym_dirlink_read ===
exit=0
beta
=== sym_mv_rename ===
exit=0
/data/symd/t.txt
=== sym_cp_follow ===
exit=0
beta
=== sym_rm_link ===
exit=1
=== sym_dangle_cat ===
exit=1
cat: /data/symd/dangle: No such file or directory
=== sym_eloop_cat ===
exit=1
cat: /data/lp1: Too many levels of symbolic links
=== sym_cleanup ===
exit=0
=== nf_cat ===
exit=1
cat: /data/missing.txt: No such file or directory
=== nf_head ===
exit=1
head: /data/missing.txt: No such file or directory
=== nf_tail ===
exit=1
tail: /data/missing.txt: No such file or directory
=== nf_wc ===
exit=1
wc: /data/missing.txt: No such file or directory
=== nf_stat ===
exit=1
stat: /data/missing.txt: No such file or directory
=== nf_grep ===
exit=1
grep: /data/missing.txt: No such file or directory
=== nf_cat_nested ===
exit=1
cat: /data/sub/missing.txt: No such file or directory
=== nf_cat_pipe ===
exit=0
cat: /data/missing.txt: No such file or directory
=== nf_cat_rel ===
exit=1
cat: missing.txt: No such file or directory
=== nf_cat_rel_subdir ===
exit=1
cat: sub/missing.txt: No such file or directory
=== nf_grep_r_rel ===
exit=1
grep: missing: No such file or directory
=== unknown_command ===
exit=127
nosuchcmd: command not found
=== glob_ln_multi_source ===
exit=1
ln: target '/data/lnk_multi' is not a directory
=== pr_seed ===
exit=0
=== pr_cut_multi ===
exit=0
1
2
3
4
=== pr_tac_multi ===
exit=0
2
1
4
3
=== pr_nl_multi ===
exit=0
     1	1
     2	2
     3	3
     4	4
=== pr_strings_multi ===
exit=0
hello
worlds
=== pr_zcat_multi ===
exit=0
z
y
=== pr_cat ===
exit=1
1
2
cat: /data/pr/missing.txt: No such file or directory
=== pr_head ===
exit=1
==> /data/pr/one.txt <==
1
head: /data/pr/missing.txt: No such file or directory
=== pr_tail ===
exit=1
==> /data/pr/one.txt <==
2
tail: /data/pr/missing.txt: No such file or directory
=== pr_wc ===
exit=1
2 /data/pr/one.txt
2 total
wc: /data/pr/missing.txt: No such file or directory
=== pr_nl ===
exit=1
     1	1
     2	2
nl: /data/pr/missing.txt: No such file or directory
=== pr_md5 ===
exit=1
6ddb4095eb719e2a9f0a3f95677d24e0  /data/pr/one.txt
md5: /data/pr/missing.txt: No such file or directory
=== pr_sha256sum ===
exit=1
a6e2b7a040683432de03a18fd8a1939a2fdf82585b364bfc874bdd4095c4cae1  /data/pr/one.txt
sha256sum: /data/pr/missing.txt: No such file or directory
=== pr_strings ===
exit=1
hello
strings: /data/pr/missing.txt: No such file or directory
=== pr_tac ===
exit=1
2
1
tac: /data/pr/missing.txt: No such file or directory
=== pr_rev ===
exit=1
1
2
rev: /data/pr/missing.txt: No such file or directory
=== pr_cut ===
exit=1
1
2
cut: /data/pr/missing.txt: No such file or directory
=== pr_expand ===
exit=1
1
2
expand: /data/pr/missing.txt: No such file or directory
=== pr_unexpand ===
exit=1
1
2
unexpand: /data/pr/missing.txt: No such file or directory
=== pr_fold ===
exit=1
1
2
fold: /data/pr/missing.txt: No such file or directory
=== pr_fmt ===
exit=1
1 2
fmt: /data/pr/missing.txt: No such file or directory
=== pr_zcat ===
exit=1
z
zcat: /data/pr/missing.gz: No such file or directory
=== pr_sed ===
exit=1
X
2
sed: /data/pr/missing.txt: No such file or directory
=== pr_sort ===
exit=1
sort: /data/pr/missing.txt: No such file or directory
=== pr_missing_first ===
exit=1
1
2
cat: /data/pr/missing.txt: No such file or directory
=== pr_all_missing_wc ===
exit=1
0 total
wc: /data/pr/m1.txt: No such file or directory
wc: /data/pr/m2.txt: No such file or directory
=== pr_cat_dir ===
exit=1
1
2
cat: /data/pr: Is a directory
=== pr_head_dir ===
exit=1
head: /data/pr: Is a directory
=== pr_wc_dir ===
exit=1
2 2 4 /data/pr/one.txt
2 2 4 total
wc: /data/pr: Is a directory
=== pr_tac_dir ===
exit=1
tac: /data/pr: Is a directory
=== pr_cleanup ===
exit=0
=== find_bad_maxdepth ===
exit=1
find: invalid argument 'abc' to '-maxdepth'
=== find_bad_mindepth ===
exit=1
find: invalid argument 'xx' to '-mindepth'
=== find_bad_size ===
exit=1
find: invalid argument 'abc' to '-size'
=== find_empty_size ===
exit=1
find: invalid argument '' to '-size'
=== find_bad_mtime ===
exit=1
find: invalid argument 'abc' to '-mtime'
=== find_unknown_predicate ===
exit=1
find: unknown predicate '-regex'
=== find_bogus_predicate ===
exit=1
find: unknown predicate '-boguspredicate'
=== sleep_zero ===
sleep_zero ok
=== sleep_fraction ===
sleep_fraction ok
=== sleep_one ===
sleep_one ok
=== xm_seed ===
cross
=== xm_ls ===
xm.txt
=== xm_cat_concat ===
hello
world
foo
bar
baz
cross
=== xm_cp_over ===
hello
world
foo
bar
baz
=== xm_cp_back ===
cross
=== xm_mv_over ===
cross
xm.txt
xm_copy.txt
xm_moved.txt
=== xm_grep_multi ===
/data/a.txt:0
/data2/xm.txt:1
=== xm_unknown_flag_errors ===
grep: unrecognized option '--bogus'
Try 'grep --help' for more information.
code=2
=== xm_wc_multi ===
5 /data/a.txt
1 /data2/xm.txt
6 total
=== xm_du_multi ===
6	/data/b.txt
6	/data2/xm.txt
=== xm_du_multi_total ===
6	/data/b.txt
6	/data2/xm.txt
12	total
=== xm_md5_multi ===
c0710d6b4f15dfa88f600b0e6b624077  /data/b.txt
8aef595260cf440c67da223d5a9b3e74  /data2/xm.txt
=== xm_file_multi ===
/data/a.txt: text
/data2/xm.txt: text
=== xm_find ===
/data2/xm.txt
/data2/xm_copy.txt
/data2/xm_moved.txt
=== xm_pipe ===
CROSS
=== xm_ln_over ===
hello
world
foo
bar
baz
=== xm_ln_readlink ===
/data/a.txt
=== xm_ln_back ===
cross
=== xm_link_grep ===
1
=== xm_cd_across ===
cross
b.txt
=== xm_sort_stream ===
10
2
30
4
5
cross
=== xm_cat_n ===
     1	1
     2	2
     3	3
     4	cross
=== xm_cat_glob ===
apple
banana
cherry
banana
date
elder
apple
cherry
elder
fig
cross
=== xm_nl ===
     1	1
     2	2
     3	3
     4	cross
=== xm_cut ===
h
w
f
b
b
c
=== xm_sed_stream ===
heLlo
worLd
foo
bar
baz
cross
=== xm_rev ===
1
2
3
ssorc
=== xm_awk ===
hello
world
foo
bar
baz
cross
=== xm_awk_nr ===
6
=== xm_paste ===
1	cross
2	
3	
=== xm_paste_d ===
1,cross
2,
3,
=== xm_comm ===
a
		b
		c
	d
=== xm_comm_12 ===
b
c
=== xm_join ===
1 alpha one
=== xm_join_a ===
1 alpha one
2 beta
=== xm_tac ===
3
2
1
cross
=== xm_grep_names ===
/data/a.txt:1:hello
/data/a.txt:2:world
/data/a.txt:3:foo
/data2/xm.txt:1:cross
=== xm_grep_h ===
hello
world
foo
cross
=== xm_head ===
==> /data/a.txt <==
hello
world

==> /data2/xm.txt <==
cross
=== xm_tail ===
==> /data/a.txt <==
baz

==> /data2/xm.txt <==
cross
=== xm_tail_q ===
baz
cross
=== xm_wc_full ===
 3  3  6 /data/b.txt
 1  1  6 /data2/xm.txt
 4  4 12 total
=== xm_wc_glob ===
 3 /data/sorted_a.txt
 3 /data/sorted_b.txt
 4 /data/sorted_c.txt
 1 /data2/xm.txt
11 total
=== xm_sha256 ===
14c5e74c4b96ccef41cd94db73a9ec3348038ac094feca4fd897cecffa07cdae  /data/b.txt
987921fe3926a34efd850ba3eed9ba30b12253def14c6ed02b51c1638f972cc4  /data2/xm.txt
=== xm_strings ===
hello
cross
=== xm_ls_files ===
/data/b.txt
/data2/xm.txt
=== xm_find_roots ===
/data/sub/deep/a.txt
/data/sub/deep/b.txt
/data/sub/deep/deeper.txt
/data/sub/nested.txt
/data2/xm.txt
/data2/xm_copy.txt
/data2/xm_moved.txt
=== xm_touch_rm ===
/data/xt.txt
/data2/xt.txt
xm.txt
xm_copy.txt
xm_moved.txt
xm_link.txt
=== xm_mkdir_multi ===
xd
xm.txt
xm_copy.txt
xm_moved.txt
xm_link.txt
=== xm_tee_multi ===
dual
dual
dual
=== xm_sed_inplace ===
aBc
aBc
=== xm_rg_count ===
/data/a.txt:3
/data2/xm.txt:1
=== xm_head_q ===
hello
cross
=== xm_ls_multi ===
arch.zip
deep
nested.txt
link.txt
xm.txt
xm_copy.txt
xm_moved.txt
xm_link.txt
=== xm_grep_nomatch ===
exit=1
=== xm_diff_differ ===
exit=1
2c2
< old
---
> new
=== xm_cmp_differ ===
exit=1
/data/xdiff.txt /data2/xdiff.txt differ: char 6, line 2
=== xm_cmp_equal ===
exit=0
=== xm_refuse_uniq ===
exit=1
uniq: paths span multiple mounts (/data/, /data2/), cross-mount not supported
=== prov_cat ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_cat_multi ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_wc ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_sort ===
net=12 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_md5 ===
net=6 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_grep ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_grep_multi ===
net=60 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_rg ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_head ===
net=0-24 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_head_c ===
net=5 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_tail ===
net=0-24 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_ls ===
net=0 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_find ===
net=0 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_du ===
net=0 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_stat ===
net=0 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_jq_object ===
net=29 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_jq_jsonl ===
net=27 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_missing ===
net=0 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_sed ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_sed_inplace ===
net=24 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_write ===
net=0 write=0 cache=0 ops=0 hits=0 precision=unknown
=== prov_pipe ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_pipe_floor ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_and ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_seq ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_or ===
net=6-24 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_for ===
net=72 write=0 cache=0 ops=3 hits=0 precision=exact
=== prov_while ===
net=24 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_file_cmd ===
net=0-24 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_iconv ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_cp ===
net=0-24 write=0-24 cache=0 ops=1 hits=0 precision=range
=== prov_gzip ===
net=6 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_rm ===
net=0 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_rm_r ===
net=0 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_mkdir ===
net=0 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_mv ===
net=0 write=0 cache=0 ops=0 hits=0 precision=unknown
=== prov_seq ===
net=0 write=0 cache=0 ops=0 hits=0 precision=exact
=== prov_date ===
net=0 write=0 cache=0 ops=0 hits=0 precision=exact
=== prov_pipe3 ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_and_or ===
net=12-30 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_or_and ===
net=18-36 write=0 cache=0 ops=2 hits=0 precision=range
=== prov_if_else ===
net=6-24 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_if_cond_read ===
net=24-30 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_case ===
net=6-24 write=0 cache=0 ops=1 hits=0 precision=range
=== prov_subshell ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_brace_group ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_negate ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_redirect_out ===
net=24 write=0-24 cache=0 ops=1 hits=0 precision=range
=== prov_or_unknown_branch ===
net=0-24 write=0 cache=0 ops=0 hits=0 precision=unknown
=== prov_for_pipe ===
net=48 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_for_nested ===
net=24 write=0 cache=0 ops=4 hits=0 precision=exact
=== prov_cmdsub ===
net=0 write=0 cache=0 ops=0 hits=0 precision=unknown
=== prov_deep_mix ===
net=60 write=0 cache=0 ops=4 hits=0 precision=exact
=== prov_env_prefix ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_func_call ===
net=12 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_func_recursive ===
net=0 write=0 cache=0 ops=0 hits=0 precision=unknown
=== prov_eval ===
net=0 write=0 cache=0 ops=0 hits=0 precision=unknown
=== prov_select ===
net=24 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_until ===
net=24 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_redirect_in ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_redirect_devnull ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_symlink ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_symlink_grep ===
net=6 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_xmount_concat ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_xmount_grep ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_xmount_pipe ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_xmount_md5 ===
net=30 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_xmount_du ===
net=0 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_glob ===
net=24 write=0 cache=0 ops=1 hits=0 precision=exact
=== prov_glob_unmatched ===
net=0 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_grep_r ===
net=60 write=0 cache=0 ops=2 hits=0 precision=exact
=== prov_pathless ===
net=0 write=0 cache=0 ops=0 hits=0 precision=exact
=== prov_heredoc ===
net=0 write=0 cache=0 ops=0 hits=0 precision=exact
=== prov_for_cmdsub ===
net=24 write=0 cache=0 ops=1 hits=0 precision=unknown
=== prov_redirect_cmdsub ===
net=24 write=0 cache=0 ops=1 hits=0 precision=unknown
