(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <2>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Subshell child: (C {<echo>} { (DQ <'\n'> <'Usage: '> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {($ Id.VSub_Number '$0')}) ) <' <size> <path>\n'> <'\n'> <'Truncate the <path> to exactly <size> bytes.\n'> <'\n'> <'If <path> doesn\'t exist it is created.\n'> <'\n'> <'<size> is a number which may be optionally followed\n'> <'by the following multiplicative suffixes:\n'> <' b 512\n'> <' KB 1000\n'> <' K 1024\n'> <' MB 1000*1000\n'> <' M 1024*1024\n'> <'and so on for G, T, P, E, Z, Y\n'> <'\n'> <'If the file previously was larger than this size, the extra data is\n'> <'lost. If the file previously was shorter, it is extended\n'> <'and the extended part reads as zero bytes. Note in both cases\n'> <'no data is written (if the filesystem supports holes in files).\n'> <'\n'> <'E.G.: truncate 2TB ext3.test\n'> ) } ) redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [39 57] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:size) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [112] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [115] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:error) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<dd>} {<Id.Lit_VarLike 'bs='> <1>} {<Id.Lit_VarLike 'seek='> ($ Id.VSub_DollarName '$size')} {<Id.Lit_VarLike 'if='> <'/dev/null'>} {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$file'))} ] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) ) } spids: [121] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ret) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [145] ) ] ) (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$error'))}) (command.Simple words: [{<grep>} {<-v>} {(DQ <'^0'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] negated: F ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_DollarName '$ret')}) ] )