(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num) op: assign_op.Equal rhs: {(DQ (20))} spids: [60] ) ] ) (command.ShFunction name: usage body: (command.BraceGroup children: [ (command.Simple words: [ {(echo)} { (DQ ('Usage: ') (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:77) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_Number '$0')})] ) ) (' [-nr] [-na] [-n#] [-s] [-r] [path...]') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:87) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:93) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (' -nr do not recurse'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:103) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (' -na ignore files starting with .'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:113) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [ {(echo)} { (DQ (' -n# list the newest # files (') ($ Id.VSub_DollarName '$num') (' by default)') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:125) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (' -r reverse to show oldest files'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:135) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:139) arg_word: {(1)} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num) op: assign_op.Equal rhs: {(DQ (-n) ($ Id.VSub_DollarName '$num'))} spids: [146] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dotfiles) op: assign_op.Equal rhs: {(DQ (yes))} spids: [152] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:recurse) op: assign_op.Equal rhs: {(DQ (yes))} spids: [157] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:reverse) op: assign_op.Equal rhs: {(DQ )} spids: [162] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:166) cond: [(C {(Id.Lit_Other ':')})] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(--)}] action: [ (command.Sentence child: (C {(shift)}) terminator: (Token id:Id.Op_Semi val:';' span_id:186) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:188) ) ] spids: [182 183 190 -1] ) (case_arm pat_list: [{(-na)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dotfiles) op: assign_op.Equal rhs: {(DQ (no))} spids: [196] ) ] ) ] spids: [193 194 201 -1] ) (case_arm pat_list: [{(-nr)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:recurse) op: assign_op.Equal rhs: {(DQ (no))} spids: [207] ) ] ) ] spids: [204 205 212 -1] ) (case_arm pat_list: [ {(-n) (Id.Lit_LBracket '[') (0-9) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [222] ) ] ) ] spids: [215 220 225 -1] ) (case_arm pat_list: [{(-r)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:reverse) op: assign_op.Equal rhs: {(DQ (r))} spids: [231] ) ] ) ] spids: [228 229 236 -1] ) (case_arm pat_list: [{(--help)}] action: [(C {(usage)})] spids: [239 240 244 -1] ) (case_arm pat_list: [{(--version)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(echo)} {(DQ (1.1))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:258) ) ] ) ] spids: [247 248 260 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:266) ) ] spids: [263 264 268 -1] ) ] ) (C {(shift)}) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$dotfiles'))} {(Id.Lit_Equals '=')} {(DQ (no))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ignore_hidden) op: assign_op.Equal rhs: {(DQ ("-name '.*' -o"))} spids: [294] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$recurse'))} {(Id.Lit_Equals '=')} {(DQ (no))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dont_recurse) op: assign_op.Equal rhs: {(DQ ('-maxdepth 1'))} spids: [315] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:331) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:path_format) op: assign_op.Equal rhs: {(DQ ('%p'))} spids: [336] ) ] ) ] spids: [320 333] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:path_format) op: assign_op.Equal rhs: {(DQ ('%P'))} spids: [344] ) ] ) (C {(Id.KW_Set set)} {(--)} {(DQ (./))}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ignore_metadata) op: assign_op.Equal rhs: { (DQ (Id.Lit_Other '\\') ('( -type d -a ') (Id.Lit_Other '\\') ("( -name '.git' -o -name '.svn' -o -name 'CVS' ") (Id.Lit_Other '\\') (') ') (Id.Lit_Other '\\') (') -prune -o') ) } spids: [361] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:print_format) op: assign_op.Equal rhs: { (DQ (Id.Lit_Other '\\') ("( -type f -printf '%T@") (Id.Lit_Other '\\') (t) ($ Id.VSub_DollarName '$path_format') (Id.Lit_Other '\\') ("n' ") (Id.Lit_Other '\\') (')') ) } spids: [373] ) ] ) (command.Pipeline children: [ (C {(eval)} {(find)} {(SQ (Token id:Id.Lit_Chars val:'"$@"' span_id:391))} {($ Id.VSub_DollarName '$dont_recurse')} {($ Id.VSub_DollarName '$ignore_metadata')} {($ Id.VSub_DollarName '$ignore_hidden')} {($ Id.VSub_DollarName '$print_format')} ) (C {(sort)} {(-k1) (Id.Lit_Comma ',') (1) (${ Id.VSub_Name reverse) (n)}) (C {(tail)} {($ Id.VSub_DollarName '$num')}) (C {(cut)} {(-f2-)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-p)} {(/proc/self/fd/1)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:439) ) ] action: [ (command.Pipeline children: [ (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'\\n' span_id:447))} {(SQ (Token id:Id.Lit_Chars val:'\\0' span_id:451))} ) (C {(xargs)} {(-r0)} {(ls)} {(-lUd)} {(--color) (Id.Lit_Equals '=') (auto)} {(--)}) ] negated: F ) ] spids: [428 441] ) ] else_action: [(C {(cat)})] ) ] negated: F ) ] )