Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

agnos.is Forums

  1. Home
  2. Linux
  3. correct way to `echo | sudo tee`

correct way to `echo | sudo tee`

Scheduled Pinned Locked Moved Linux
17 Posts 9 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • agility0971@lemmy.worldA This user is from outside of this forum
    agility0971@lemmy.worldA This user is from outside of this forum
    [email protected]
    wrote on last edited by
    #1

    Can someone explain why this would make the command wait forever? What is tee waiting for?

    echo "test" | sudo tee newfile
    

    What would be a scriptable workaround for such cases?

    J B bleistift2@sopuli.xyzB negativelookbehind@lemmy.worldN hallettj@leminal.spaceH 5 Replies Last reply
    1
    0
    • System shared this topic on
    • agility0971@lemmy.worldA [email protected]

      Can someone explain why this would make the command wait forever? What is tee waiting for?

      echo "test" | sudo tee newfile
      

      What would be a scriptable workaround for such cases?

      J This user is from outside of this forum
      J This user is from outside of this forum
      [email protected]
      wrote on last edited by
      #2

      Are you saying it waits forever, or you read somewhere it will wait forever and you want clarification?

      agility0971@lemmy.worldA 1 Reply Last reply
      0
      • agility0971@lemmy.worldA [email protected]

        Can someone explain why this would make the command wait forever? What is tee waiting for?

        echo "test" | sudo tee newfile
        

        What would be a scriptable workaround for such cases?

        B This user is from outside of this forum
        B This user is from outside of this forum
        [email protected]
        wrote on last edited by
        #3

        Why does newfile need sudo to be created?

        You need it to be owned by root?

        agility0971@lemmy.worldA 1 Reply Last reply
        0
        • agility0971@lemmy.worldA [email protected]

          Can someone explain why this would make the command wait forever? What is tee waiting for?

          echo "test" | sudo tee newfile
          

          What would be a scriptable workaround for such cases?

          bleistift2@sopuli.xyzB This user is from outside of this forum
          bleistift2@sopuli.xyzB This user is from outside of this forum
          [email protected]
          wrote on last edited by
          #4

          Can’t reproduce.

          16:22:48:~/tmp$ echo foo | sudo tee newfile
          [sudo] Passwort für bleistift2:         
          foo
          
          16:23:02:~/tmp$ ls -l newfile
          -rw-r--r-- 1 root root 4 Feb 23 16:22 newfile
          
          agility0971@lemmy.worldA 1 Reply Last reply
          0
          • agility0971@lemmy.worldA [email protected]

            Can someone explain why this would make the command wait forever? What is tee waiting for?

            echo "test" | sudo tee newfile
            

            What would be a scriptable workaround for such cases?

            negativelookbehind@lemmy.worldN This user is from outside of this forum
            negativelookbehind@lemmy.worldN This user is from outside of this forum
            [email protected]
            wrote on last edited by
            #5

            Maybe it's silently prompting you for your password?

            1 Reply Last reply
            0
            • B [email protected]

              Why does newfile need sudo to be created?

              You need it to be owned by root?

              agility0971@lemmy.worldA This user is from outside of this forum
              agility0971@lemmy.worldA This user is from outside of this forum
              [email protected]
              wrote on last edited by
              #6

              yeah indeed.
              I'm setting up a container with these instructions for ROS2.
              There you'll have to add a repository to the apt sources list.

              E 1 Reply Last reply
              0
              • bleistift2@sopuli.xyzB [email protected]

                Can’t reproduce.

                16:22:48:~/tmp$ echo foo | sudo tee newfile
                [sudo] Passwort für bleistift2:         
                foo
                
                16:23:02:~/tmp$ ls -l newfile
                -rw-r--r-- 1 root root 4 Feb 23 16:22 newfile
                
                agility0971@lemmy.worldA This user is from outside of this forum
                agility0971@lemmy.worldA This user is from outside of this forum
                [email protected]
                wrote on last edited by
                #7

                I just switched over to bash and it worked lol. It just didn't return for me in zsh...

                bleistift2@sopuli.xyzB mynameisrichard@lemmy.mlM 2xsaiko@discuss.tchncs.de2 3 Replies Last reply
                0
                • J [email protected]

                  Are you saying it waits forever, or you read somewhere it will wait forever and you want clarification?

                  agility0971@lemmy.worldA This user is from outside of this forum
                  agility0971@lemmy.worldA This user is from outside of this forum
                  [email protected]
                  wrote on last edited by
                  #8

                  what I was saying was that echo "text" | sudo tee newfile would hang and never return and needs to be interrupted. I just noticed this does not happen in bash but I was testing in zsh.

                  Guessing that file doesn't exist already is the problem, and you don't even need to use tee in this example.

                  you've missed the point here I'm afraid. But I'll blame it on my for not explaining properly what I was intending to do.

                  J 1 Reply Last reply
                  0
                  • agility0971@lemmy.worldA [email protected]

                    I just switched over to bash and it worked lol. It just didn't return for me in zsh...

                    bleistift2@sopuli.xyzB This user is from outside of this forum
                    bleistift2@sopuli.xyzB This user is from outside of this forum
                    [email protected]
                    wrote on last edited by
                    #9

                    My initial guess was that sudo would eat up the echo’d foo as the password. Maybe sudo works differently when invoked via zsh?

                    agility0971@lemmy.worldA 1 Reply Last reply
                    0
                    • agility0971@lemmy.worldA [email protected]

                      I just switched over to bash and it worked lol. It just didn't return for me in zsh...

                      mynameisrichard@lemmy.mlM This user is from outside of this forum
                      mynameisrichard@lemmy.mlM This user is from outside of this forum
                      [email protected]
                      wrote on last edited by
                      #10

                      It works here in zsh, did you mistype the closing quote?

                      1 Reply Last reply
                      0
                      • bleistift2@sopuli.xyzB [email protected]

                        My initial guess was that sudo would eat up the echo’d foo as the password. Maybe sudo works differently when invoked via zsh?

                        agility0971@lemmy.worldA This user is from outside of this forum
                        agility0971@lemmy.worldA This user is from outside of this forum
                        [email protected]
                        wrote on last edited by
                        #11

                        sudo does not prompt for password in my container. It just elevates the privileges straight away. Yeah, it's hard to tell. Or test for that matter.

                        1 Reply Last reply
                        0
                        • agility0971@lemmy.worldA [email protected]

                          what I was saying was that echo "text" | sudo tee newfile would hang and never return and needs to be interrupted. I just noticed this does not happen in bash but I was testing in zsh.

                          Guessing that file doesn't exist already is the problem, and you don't even need to use tee in this example.

                          you've missed the point here I'm afraid. But I'll blame it on my for not explaining properly what I was intending to do.

                          J This user is from outside of this forum
                          J This user is from outside of this forum
                          [email protected]
                          wrote on last edited by
                          #12

                          ZSH is bash-compliant, but will not always behave like bash in all situations.

                          Add sh -c before echo and see if that works

                          agility0971@lemmy.worldA 1 Reply Last reply
                          0
                          • J [email protected]

                            ZSH is bash-compliant, but will not always behave like bash in all situations.

                            Add sh -c before echo and see if that works

                            agility0971@lemmy.worldA This user is from outside of this forum
                            agility0971@lemmy.worldA This user is from outside of this forum
                            [email protected]
                            wrote on last edited by
                            #13

                            yep. that did it. I had to wrap the entire thing in quotes though

                            sh -c "echo 'test' | sudo tee newfile"
                            
                            1 Reply Last reply
                            0
                            • agility0971@lemmy.worldA [email protected]

                              yeah indeed.
                              I'm setting up a container with these instructions for ROS2.
                              There you'll have to add a repository to the apt sources list.

                              E This user is from outside of this forum
                              E This user is from outside of this forum
                              [email protected]
                              wrote on last edited by
                              #14

                              ROS

                              Fly you fools!

                              1 Reply Last reply
                              0
                              • agility0971@lemmy.worldA [email protected]

                                Can someone explain why this would make the command wait forever? What is tee waiting for?

                                echo "test" | sudo tee newfile
                                

                                What would be a scriptable workaround for such cases?

                                hallettj@leminal.spaceH This user is from outside of this forum
                                hallettj@leminal.spaceH This user is from outside of this forum
                                [email protected]
                                wrote on last edited by
                                #15

                                I'm gonna take a couple of stabs in the dark.

                                According to this Stack Overflow answer using tee can prevent the prompt from drawing which makes it appear that a script has not terminated. The answerer's workaround is to put a very short sleep command after the tee command.

                                If this is what happened to you maybe the reason the script works in bash but not in zsh is because you have different prompts configured in those two shells.

                                Another idea is to replace tee with sponge from moreutils. The difference is that sponge waits for the end of stdin before it starts writing which can avoid problems in some situations.

                                agility0971@lemmy.worldA 1 Reply Last reply
                                0
                                • agility0971@lemmy.worldA [email protected]

                                  I just switched over to bash and it worked lol. It just didn't return for me in zsh...

                                  2xsaiko@discuss.tchncs.de2 This user is from outside of this forum
                                  2xsaiko@discuss.tchncs.de2 This user is from outside of this forum
                                  [email protected]
                                  wrote on last edited by
                                  #16

                                  I use zsh and it works fine for me fwiw. Same with zsh --no-rcs (which doesn't load zshrc). Maybe you have some weird setting enabled?

                                  1 Reply Last reply
                                  0
                                  • hallettj@leminal.spaceH [email protected]

                                    I'm gonna take a couple of stabs in the dark.

                                    According to this Stack Overflow answer using tee can prevent the prompt from drawing which makes it appear that a script has not terminated. The answerer's workaround is to put a very short sleep command after the tee command.

                                    If this is what happened to you maybe the reason the script works in bash but not in zsh is because you have different prompts configured in those two shells.

                                    Another idea is to replace tee with sponge from moreutils. The difference is that sponge waits for the end of stdin before it starts writing which can avoid problems in some situations.

                                    agility0971@lemmy.worldA This user is from outside of this forum
                                    agility0971@lemmy.worldA This user is from outside of this forum
                                    [email protected]
                                    wrote on last edited by
                                    #17

                                    Nice one, didn't know about moreutils. I indeed used p10k on top of zsh. New zsh instance without sourcing anything zsh --no-rcs managed to write to file without issues. Thanks

                                    1 Reply Last reply
                                    0
                                    • System shared this topic on
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    • Login

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • World
                                    • Users
                                    • Groups