(command.CommandList children: [ (command.ShFunction name: usage body: (command.BraceGroup children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:18) fd: -1 here_begin: {(EOF)} here_end_span_id: 39 stdin_parts: [ (' Usage: ') ($ Id.VSub_Number '$0') (' [DOS flags] directory or directories\n') (' Where:\n') (' /D sort by columns\n') (' /H show help for this shell script\n') (' /N show long listing format with filenames on right\n') (' /OD sort by oldest to newest\n') (' /O-D sort by newest to oldest\n') (' /P pause after each screenful of information\n') (' /Q show owner of the file\n') (' /S recursive listing\n') (' /W use wide listing format\n') ] ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:22) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:41) arg_word: {(1)} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:postcmd) op: assign_op.Equal rhs: {(DQ )} spids: [55] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags) op: assign_op.Equal rhs: {(DQ )} spids: [59] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:64) cond: [(C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')})] body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_Number '$1')} arms: [ (case_arm pat_list: [{(/D)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$flags') (' -x'))} spids: [90] ) ] ) ] spids: [86 88 96 -1] ) (case_arm pat_list: [{(/H)}] action: [(C {(usage)})] spids: [99 101 105 -1] ) (case_arm pat_list: [{(/) (Id.Lit_LBracket '[') (NQW) (Id.Lit_RBracket ']')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$flags') (' -l'))} spids: [115] ) ] ) ] spids: [108 113 121 -1] ) (case_arm pat_list: [{(/OD)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$flags') (' -rt'))} spids: [128] ) ] ) ] spids: [124 126 134 -1] ) (case_arm pat_list: [{(/O-D)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$flags') (' -t'))} spids: [141] ) ] ) ] spids: [137 139 147 -1] ) (case_arm pat_list: [{(/P)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:postcmd) op: assign_op.Equal rhs: {(DQ (more))} spids: [154] ) ] ) ] spids: [150 152 159 -1] ) (case_arm pat_list: [{(/S)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$flags') (' -s'))} spids: [166] ) ] ) ] spids: [162 164 172 -1] ) (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[175 177 -1 187]) ] ) (C {(shift)}) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ ($ Id.VSub_DollarName '$postcmd'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:216) ) ] action: [ (command.Pipeline children: [ (C {(ls)} {($ Id.VSub_DollarName '$flags')} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$postcmd')}) ] negated: F ) ] spids: [202 218] ) ] else_action: [(C {(ls)} {($ Id.VSub_DollarName '$flags')} {(DQ ($ Id.VSub_At '$@'))})] ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:248) arg_word:{(0)}) ] )