Zsh: =() substitution with executable permission

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












0














I need to give an executable file to this command:



aria2c “some-url” —on-download-complete =(echo “!#/usr/bin/env bash
touch success”)


Is this possible? If not, can I implement some helper functions to make something similar possible?










share|improve this question


























    0














    I need to give an executable file to this command:



    aria2c “some-url” —on-download-complete =(echo “!#/usr/bin/env bash
    touch success”)


    Is this possible? If not, can I implement some helper functions to make something similar possible?










    share|improve this question
























      0












      0








      0







      I need to give an executable file to this command:



      aria2c “some-url” —on-download-complete =(echo “!#/usr/bin/env bash
      touch success”)


      Is this possible? If not, can I implement some helper functions to make something similar possible?










      share|improve this question













      I need to give an executable file to this command:



      aria2c “some-url” —on-download-complete =(echo “!#/usr/bin/env bash
      touch success”)


      Is this possible? If not, can I implement some helper functions to make something similar possible?







      linux shell-script scripting filesystems zsh






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 16 at 19:37









      HappyFace

      31811




      31811




















          1 Answer
          1






          active

          oldest

          votes


















          1














          The temporary file is not executable,



          % stat -f '%Sp' =(echo echo echo) 
          -rw-------


          so will need to be marked as such somehow



          #!/usr/bin/env zsh

          TMPPREFIX=/because/tmp/is/mounted/noexec/on/my/system/tmp/zsh

          fakearia () $1

          ()
          chmod +x $1
          fakearia $1
          =(<<EOF
          #!/bin/sh
          echo echo
          EOF
          )


          here via an anonymous function which also helps better scope the temporary file and allows for any number of commands to happen on the filename.






          share|improve this answer




















          • I tested this with <(), too, but sadly that didn’t work.
            – HappyFace
            Dec 16 at 23:20










          • @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
            – Stéphane Chazelas
            Dec 23 at 1:03










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "106"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489366%2fzsh-substitution-with-executable-permission%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          The temporary file is not executable,



          % stat -f '%Sp' =(echo echo echo) 
          -rw-------


          so will need to be marked as such somehow



          #!/usr/bin/env zsh

          TMPPREFIX=/because/tmp/is/mounted/noexec/on/my/system/tmp/zsh

          fakearia () $1

          ()
          chmod +x $1
          fakearia $1
          =(<<EOF
          #!/bin/sh
          echo echo
          EOF
          )


          here via an anonymous function which also helps better scope the temporary file and allows for any number of commands to happen on the filename.






          share|improve this answer




















          • I tested this with <(), too, but sadly that didn’t work.
            – HappyFace
            Dec 16 at 23:20










          • @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
            – Stéphane Chazelas
            Dec 23 at 1:03















          1














          The temporary file is not executable,



          % stat -f '%Sp' =(echo echo echo) 
          -rw-------


          so will need to be marked as such somehow



          #!/usr/bin/env zsh

          TMPPREFIX=/because/tmp/is/mounted/noexec/on/my/system/tmp/zsh

          fakearia () $1

          ()
          chmod +x $1
          fakearia $1
          =(<<EOF
          #!/bin/sh
          echo echo
          EOF
          )


          here via an anonymous function which also helps better scope the temporary file and allows for any number of commands to happen on the filename.






          share|improve this answer




















          • I tested this with <(), too, but sadly that didn’t work.
            – HappyFace
            Dec 16 at 23:20










          • @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
            – Stéphane Chazelas
            Dec 23 at 1:03













          1












          1








          1






          The temporary file is not executable,



          % stat -f '%Sp' =(echo echo echo) 
          -rw-------


          so will need to be marked as such somehow



          #!/usr/bin/env zsh

          TMPPREFIX=/because/tmp/is/mounted/noexec/on/my/system/tmp/zsh

          fakearia () $1

          ()
          chmod +x $1
          fakearia $1
          =(<<EOF
          #!/bin/sh
          echo echo
          EOF
          )


          here via an anonymous function which also helps better scope the temporary file and allows for any number of commands to happen on the filename.






          share|improve this answer












          The temporary file is not executable,



          % stat -f '%Sp' =(echo echo echo) 
          -rw-------


          so will need to be marked as such somehow



          #!/usr/bin/env zsh

          TMPPREFIX=/because/tmp/is/mounted/noexec/on/my/system/tmp/zsh

          fakearia () $1

          ()
          chmod +x $1
          fakearia $1
          =(<<EOF
          #!/bin/sh
          echo echo
          EOF
          )


          here via an anonymous function which also helps better scope the temporary file and allows for any number of commands to happen on the filename.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Dec 16 at 23:02









          thrig

          24.2k22956




          24.2k22956











          • I tested this with <(), too, but sadly that didn’t work.
            – HappyFace
            Dec 16 at 23:20










          • @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
            – Stéphane Chazelas
            Dec 23 at 1:03
















          • I tested this with <(), too, but sadly that didn’t work.
            – HappyFace
            Dec 16 at 23:20










          • @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
            – Stéphane Chazelas
            Dec 23 at 1:03















          I tested this with <(), too, but sadly that didn’t work.
          – HappyFace
          Dec 16 at 23:20




          I tested this with <(), too, but sadly that didn’t work.
          – HappyFace
          Dec 16 at 23:20












          @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
          – Stéphane Chazelas
          Dec 23 at 1:03




          @HappyFace With <(), you get a /dev/fd/n special file while fd n is open on the reading end of a pipe (/dev/fd/n being a special /proc/self/fd/n symlink to some sort of virtual named pipe on Linux, and an actual device file on other OSes, so even if you could change the permission of those files that would still not make it real executables).
          – Stéphane Chazelas
          Dec 23 at 1:03

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Unix & Linux Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489366%2fzsh-substitution-with-executable-permission%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown






          Popular posts from this blog

          How to check contact read email or not when send email to Individual?

          Displaying single band from multi-band raster using QGIS

          How many registers does an x86_64 CPU actually have?