(command.CommandList children: [ (command.ShFunction name: umount_all_dir body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_udir) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [93] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_umntdirs) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<mount>}) (C {<sort>} {<-r>}) (C {<grep>} {(DQ <'on '> ($ Id.VSub_DollarName '$_udir'))}) (C {<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<3>}) ] negated: F ) ) } spids: [99] ) ] ) (command.ForEach iter_name: _ud iter_words: [{($ Id.VSub_DollarName '$_umntdirs')}] do_arg_iter: F body: (command.DoGroup children:[(C {<umount>} {<-f>} {(${ Id.VSub_Name _ud)})]) ) ] ) ) (command.Sentence child: (command.ShFunction name: start_gmirror_sync body: (BraceGroup children: [ (C {<cd>} {(${ Id.VSub_Name MIRRORCFGDIR)}) (command.ForEach iter_name: DISK iter_words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<ls>} {(${ Id.VSub_Name MIRRORCFGDIR)}) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MIRRORDISK) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name DISK)}) (C {<cut>} {<-d>} {(SQ <':'>)} {<-f>} {<1>}) ] negated: F ) ) ) } spids: [201] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MIRRORBAL) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name DISK)}) (C {<cut>} {<-d>} {(SQ <':'>)} {<-f>} {<2>}) ] negated: F ) ) ) } spids: [229] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MIRRORNAME) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name DISK)}) (C {<cut>} {<-d>} {(SQ <':'>)} {<-f>} {<3>}) ] negated: F ) ) ) } spids: [257] ) ] ) (C {<rc_nohalt>} {(DQ <'gmirror forget '> (${ Id.VSub_Name MIRRORNAME))}) (C {<rc_halt>} { (DQ <'gmirror insert '> (${ Id.VSub_Name MIRRORNAME) <' '> (${ Id.VSub_Name MIRRORDISK) ) } ) ] ) ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: unmount_all_filesystems body: (BraceGroup children: [ (C {<cp>} {(${ Id.VSub_Name LOGOUT)} {(${ Id.VSub_Name FSMNT) <'/root/pc-sysinstall.log'>} ) (C {<cd>} {<'/'>}) (C {<zfs_cleanup_unmount>}) (command.ForEach iter_name: PART iter_words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<ls>} {(${ Id.VSub_Name PARTDIR)}) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTDEV) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$PART')}) (C {<sed>} {(SQ <'s|-|/|g'>)}) ] negated: F ) ) } spids: [391] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTFS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)} ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<1>}) ] negated: F ) ) ) } spids: [410] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTMNT) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)} ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<2>}) ] negated: F ) ) ) } spids: [442] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTENC) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)} ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<3>}) ] negated: F ) ) ) } spids: [474] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTLABEL) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)} ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<4>}) ] negated: F ) ) ) } spids: [506] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PARTENC))} {<Id.Lit_Equals '='>} {(DQ <ON>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXT) op: assign_op.Equal rhs: {(DQ <.eli>)} spids: [561] ) ] ) ] spids: [539 558] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXT) op: assign_op.Equal rhs: {(DQ )} spids: [570] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.Lit_Equals '='>} {(DQ <SWAP>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<rc_nohalt>} {(DQ <'swapoff '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT))} ) ] spids: [579 598] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$PARTMNT'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<-a>} {(DQ (${ Id.VSub_Name PARTMNT))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<-a>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ZFS>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<rc_halt>} { (DQ <'umount -f '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ <'/dev/label/'> (${ Id.VSub_Name PARTLABEL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Case to_match: {(${ Id.VSub_Name PARTFS)} arms: [ (case_arm pat_list: [{<UFS>}] action: [ (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)} ) ] spids: [721 722 739 -1] ) (case_arm pat_list: [{<UFS> <Id.Lit_Other '+'> <S>}] action: [ (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)} ) ] spids: [742 745 762 -1] ) (case_arm pat_list: [{<UFS> <Id.Lit_Other '+'> <SUJ>}] action: [ (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)} ) ] spids: [765 768 785 -1] ) (case_arm pat_list: [{<UFS> <Id.Lit_Other '+'> <J>}] action: [ (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) <.journal> } ) ] spids: [788 791 809 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] spids: [812 813 815 -1] ) ] ) ] spids: [691 709] ) ] ) ] spids: [622 670] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$PARTMNT'))} {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<-a>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ZFS>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ <'/dev/label/'> (${ Id.VSub_Name PARTLABEL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Case to_match: {(${ Id.VSub_Name PARTFS)} arms: [ (case_arm pat_list: [{<UFS>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOTRELABEL) op: assign_op.Equal rhs: { (DQ <'glabel label '> (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) ) } spids: [901] ) ] ) ] spids: [898 899 916 -1] ) (case_arm pat_list: [{<UFS> <Id.Lit_Other '+'> <S>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOTRELABEL) op: assign_op.Equal rhs: { (DQ <'glabel label '> (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) ) } spids: [924] ) ] ) ] spids: [919 922 939 -1] ) (case_arm pat_list: [{<UFS> <Id.Lit_Other '+'> <SUJ>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOTRELABEL) op: assign_op.Equal rhs: { (DQ <'glabel label '> (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) ) } spids: [947] ) ] ) ] spids: [942 945 962 -1] ) (case_arm pat_list: [{<UFS> <Id.Lit_Other '+'> <J>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOTRELABEL) op: assign_op.Equal rhs: { (DQ <'glabel label '> (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) <.journal> ) } spids: [970] ) ] ) ] spids: [965 968 986 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] spids: [989 990 992 -1] ) ] ) ] spids: [868 886] ) ] ) ] spids: [833 865] ) ] ) ] ) ) (C {<rc_nohalt>} {(DQ <'umount -f '> (${ Id.VSub_Name FSMNT))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ (${ Id.VSub_Name FOUNDZFSROOT))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<rc_halt>} {(DQ <'zfs set mountpoint=legacy '> (${ Id.VSub_Name FOUNDZFSROOT))} ) ] spids: [1032 1049] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ (${ Id.VSub_Name ROOTRELABEL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {(${ Id.VSub_Name ROOTRELABEL)})] spids: [1070 1087] ) ] ) (command.Simple words: [{<rc_nohalt>} {(DQ <'umount -f '> (${ Id.VSub_Name CDMNT))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<ls>} {(${ Id.VSub_Name MIRRORCFGDIR) <'/'> <Id.Lit_Star '*'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<start_gmirror_sync>})] spids: [1139 1152] ) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: unmount_all_filesystems_failure body: (BraceGroup children: [ (C {<cd>} {<'/'>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMODE))} {<Id.Lit_Equals '='>} {(DQ <fresh>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name PARTDIR))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ForEach iter_name: PART iter_words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<ls>} {(${ Id.VSub_Name PARTDIR)}) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTDEV) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$PART')}) (C {<sed>} {(SQ <'s|-|/|g'>)}) ] negated: F ) ) } spids: [1258] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTFS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART) } ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<1>}) ] negated: F ) ) ) } spids: [1277] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTMNT) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART) } ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<2>}) ] negated: F ) ) ) } spids: [1309] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PARTENC) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART) } ) (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<3>}) ] negated: F ) ) ) } spids: [1341] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.Lit_Equals '='>} {(DQ <SWAP>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PARTENC))} {<Id.Lit_Equals '='>} {(DQ <ON>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [ {<swapoff>} {(${ Id.VSub_Name PARTDEV) <.eli>} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [1396 1415] ) ] else_action: [ (command.Simple words: [{<swapoff>} {(${ Id.VSub_Name PARTDEV)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) ] spids: [1374 1393] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$PARTMNT'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<-a>} {(DQ (${ Id.VSub_Name PARTMNT))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<-a>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ZFS>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<umount>} {<-f>} {(${ Id.VSub_Name PARTDEV)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [ {<umount>} {<-f>} {(${ Id.VSub_Name FSMNT) (${ Id.VSub_Name PARTMNT) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [1459 1507] ) ] ) ] ) ) (command.Simple words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [1220 1235] ) ] ) ] spids: [1189 1208] ) ] else_action: [ (command.Simple words: [{<chroot>} {(${ Id.VSub_Name FSMNT)} {<'/sbin/umount'>} {<-a>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT) <'/usr'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT) <'/dev'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<sh>} {(${ Id.VSub_Name TMPDIR) <'/.upgrade-unmount'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) (command.Simple words: [{<umount>} {(${ Id.VSub_Name CDMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) ) terminator: <Id.Op_Semi _> ) ] )