Hi Yanni, Thanks for this. Actually I discovered the equivalent by using shellCommand: instead of command:.
What an excellent utility! Cheers, Stewart On Tue, Jun 7, 2022 at 3:12 AM Yanni Chiu <yannix...@gmail.com> wrote: > The equivalent of running in a Terminal is to run it in a shell. Try the > following code: > > OSSUnixSubprocess new > command: '/bin/bash'; > arguments: #('-c' 'ls /'); > redirectStdout; > runAndWaitOnExitDo: [ :process :outString | > outString inspect > ]. > > OSSUnixSubprocess new > command: '/bin/bash'; > arguments: #('-c' 'ls / | grep bin'); > redirectStdout; > runAndWaitOnExitDo: [ :process :outString | > outString inspect > ]. > > You’ll need to be careful to properly shell escape the shell command > arguments if they are not hard coded (especially things like file names > from users). HTH. —Yanni > > On Mon, Jun 6, 2022 at 7:51 AM <vin...@gmail.com> wrote: > >> Hi >> >> I tried something similar on (X)ubuntu using this: >> >> OSSUnixSubprocess new >> >> command: '/bin/ls'; >> >> arguments: #('-la' '/tmp/' '|' '/usr/bin/grep unix'); >> >> redirectStdout; >> >> runAndWaitOnExitDo: [ :process :outString | >> >> outString inspect >> >> ] >> >> >> and looking at the output in xtrerm I got a message like this: >> >> /bin/ls: cannot access '|': No such file or directory >> >> /bin/ls: cannot access '/usr/bin/grep unix': No such file or directory. >> >> >> So I think it regards anything after the first item in the arguments as a >> file or directory. >> >> This means you will have to write a bash script instead. So I wrote a >> script called my_grep: >> >> #!/bin/bash >> >> cd $1 >> >> ls -la | grep unix >> >> and called it with: >> >> OSSUnixSubprocess new >> >> command: '/tmp/my_grep'; >> >> arguments: #('/tmp'); >> >> redirectStdout; >> >> runAndWaitOnExitDo: [ :process :outString | >> >> outString inspect >> >> ] >> >> and it worked. >> >> >> Vince >> >> >>