(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{<less>} {<-K>} {<-Ff>} {<'/dev/null'>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CTRL_C_EXITS) op: assign_op.Equal rhs: {(DQ <-K>)} spids: [100] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RED) op: assign_op.Equal rhs: {<1>} spids: [106] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GREEN) op: assign_op.Equal rhs: {<2>} spids: [110] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLUE) op: assign_op.Equal rhs: {<4>} spids: [114] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BRIGHT) op: assign_op.Equal rhs: {(SQ <'1;'>)} spids: [118] ) ] ) ] ) (command.ShFunction name: tputc body: (BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bright) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [131] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:colour) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [135] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$bright'))} {<Id.Lit_RBracket ']'>} ) (C {<tput>} {<bold>}) ] ) (C {<tput>} {<setaf>} {($ Id.VSub_DollarName '$colour')}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEL) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<tputc>} {($ Id.VSub_DollarName '$BRIGHT')} {($ Id.VSub_DollarName '$RED')}) ) ) } spids: [163] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ADD) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<tputc>} {($ Id.VSub_DollarName '$BRIGHT')} {($ Id.VSub_DollarName '$GREEN')}) ) ) } spids: [176] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHG) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<tputc>} {($ Id.VSub_DollarName '$BRIGHT')} {($ Id.VSub_DollarName '$BLUE')}) ) ) } spids: [189] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FIL) op: assign_op.Equal rhs: {(DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<tput>} {<smso>})))} spids: [202] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RST) op: assign_op.Equal rhs: {(DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<tput>} {<sgr0>})))} spids: [216] ) ] ) (command.Pipeline children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} {<-eq>} {(DQ <2>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<diff>} {<-Naru>} {(DQ ($ Id.VSub_At '$@'))})] spids: [228 245] ) ] else_action: [(C {<cat>} {(DQ ($ Id.VSub_At '$@'))})] ) (C {<sed>} { (DQ <'\n'> <'s/^'> <Id.Lit_BadBackslash '\\'> <'*'> <Id.Lit_BadBackslash '\\'> <'{3'> <Id.Lit_BadBackslash '\\'> <'}.*'> <Id.Lit_BadBackslash '\\'> <'*'> <Id.Lit_BadBackslash '\\'> <'{4'> <Id.Lit_BadBackslash '\\'> <'}/'> ($ Id.VSub_DollarName '$CHG') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^-'> <Id.Lit_BadBackslash '\\'> <'{3'> <Id.Lit_BadBackslash '\\'> <'}.*-'> <Id.Lit_BadBackslash '\\'> <'{4'> <Id.Lit_BadBackslash '\\'> <'}/'> ($ Id.VSub_DollarName '$CHG') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^@.*/'> ($ Id.VSub_DollarName '$CHG') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^[0-9].*/'> ($ Id.VSub_DollarName '$CHG') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^!.*/'> ($ Id.VSub_DollarName '$CHG') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <'\n'> <' s/^-.*/'> ($ Id.VSub_DollarName '$DEL') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^<.*/'> ($ Id.VSub_DollarName '$DEL') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <'\n'> <' s/^'> <Id.Lit_BadBackslash '\\'> <'*.*/'> ($ Id.VSub_DollarName '$ADD') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^'> <Id.Lit_BadBackslash '\\'> <'+.*/'> ($ Id.VSub_DollarName '$ADD') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^>.*/'> ($ Id.VSub_DollarName '$ADD') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <'\n'> <' s/^Only in.*/'> ($ Id.VSub_DollarName '$FIL') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^Index: .*/'> ($ Id.VSub_DollarName '$FIL') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> <' s/^diff .*/'> ($ Id.VSub_DollarName '$FIL') <'&'> ($ Id.VSub_DollarName '$RST') <'/;t\n'> ) } ) (C { (braced_var_sub token: <Id.VSub_Name PAGER> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<'less -QRS '> ($ Id.VSub_DollarName '$CTRL_C_EXITS')} ) ) } ) ] negated: F ) ] )