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
>>
>>
>>

Reply via email to