(command.CommandList children: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:num) op:Equal rhs:{(DQ (20))})] ) (command.ShFunction name: usage body: (command.BraceGroup children: [ (command.Simple words: [ {(echo)} { (DQ ('Usage: ') (command_sub left_token: <Left_Backtick '`'> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_Number '$0')})] ) ) (' [-nr] [-na] [-n#] [-s] [-r] [path...]') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Simple words: [{(echo)}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Simple words: [{(echo)} {(DQ (' -nr do not recurse'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Simple words: [{(echo)} {(DQ (' -na ignore files starting with .'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Simple words: [ {(echo)} { (DQ (' -n# list the newest # files (') ($ VSub_DollarName '$num') (' by default)') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Simple words: [{(echo)} {(DQ (' -r reverse to show oldest files'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num) op: Equal rhs: {(DQ (-n) ($ VSub_DollarName '$num'))} ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:dotfiles) op:Equal rhs:{(DQ (yes))})] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:recurse) op:Equal rhs:{(DQ (yes))})] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:reverse) op:Equal rhs:{(DQ )})] ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(Lit_Other ':')})] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(--)}] action: [ (command.Sentence child: (C {(shift)}) terminator: <Op_Semi ';'> ) (command.ControlFlow token:<ControlFlow_Break break>) ] ) (case_arm pat_list: [{(-na)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dotfiles) op: Equal rhs: {(DQ (no))} ) ] ) ] ) (case_arm pat_list: [{(-nr)}] action: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:recurse) op:Equal rhs:{(DQ (no))})] ) ] ) (case_arm pat_list: [{(-n) (Lit_LBracket '[') (0-9) (Lit_RBracket ']') (Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) ] ) (case_arm pat_list: [{(-r)}] action: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:reverse) op:Equal rhs:{(DQ (r))})] ) ] ) (case_arm pat_list:[{(--help)}] action:[(C {(usage)})]) (case_arm pat_list: [{(--version)}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(echo)} {(DQ (1.1))}) (command.ControlFlow token:<ControlFlow_Exit exit>) ] ) ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [(command.ControlFlow token:<ControlFlow_Break break>)] ) ] ) (C {(shift)}) ] ) ) (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_LBracket '[')} {(DQ ($ VSub_DollarName '$dotfiles'))} {(Lit_Equals '=')} {(DQ (no))} {(Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ignore_hidden) op: Equal rhs: {(DQ ("-name '.*' -o"))} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_LBracket '[')} {(DQ ($ VSub_DollarName '$recurse'))} {(Lit_Equals '=')} {(DQ (no))} {(Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dont_recurse) op: Equal rhs: {(DQ ('-maxdepth 1'))} ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_RBracket ']')}) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:path_format) op:Equal rhs:{(DQ ('%p'))})] ) ] ) ] else_action: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:path_format) op:Equal rhs:{(DQ ('%P'))})] ) (C {(KW_Set set)} {(--)} {(DQ (./))}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ignore_metadata) op: Equal rhs: { (DQ (Lit_Other '\\') ('( -type d -a ') (Lit_Other '\\') ("( -name '.git' -o -name '.svn' -o -name 'CVS' ") (Lit_Other '\\') (') ') (Lit_Other '\\') (') -prune -o') ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:print_format) op: Equal rhs: { (DQ (Lit_Other '\\') ("( -type f -printf '%T@") (Lit_Other '\\') (t) ($ VSub_DollarName '$path_format') (Lit_Other '\\') ("n' ") (Lit_Other '\\') (')') ) } ) ] ) (command.Pipeline children: [ (C {(eval)} {(find)} {(SQ <'"$@"'>)} {($ VSub_DollarName '$dont_recurse')} {($ VSub_DollarName '$ignore_metadata')} {($ VSub_DollarName '$ignore_hidden')} {($ VSub_DollarName '$print_format')} ) (C {(sort)} {(-k1) (Lit_Comma ',') (1) (${ VSub_Name reverse) (n)}) (C {(tail)} {($ VSub_DollarName '$num')}) (C {(cut)} {(-f2-)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(KW_Bang '!')} {(-p)} {(/proc/self/fd/1)} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (C {(tr)} {(SQ <'\\n'>)} {(SQ <'\\0'>)}) (C {(xargs)} {(-r0)} {(ls)} {(-lUd)} {(--color) (Lit_Equals '=') (auto)} {(--)}) ] negated: F ) ] ) ] else_action: [(C {(cat)})] ) ] negated: F ) ] )