echo "text" > file 發生 Permission denied
若想寫一份內容簡單的文件,尤其是只有1行內容時,常會選用簡單的指令格式 echo "text" > file 例如在test.txt中寫「abc」,常會選用簡單的指令 echo "abc" > text.txt 要創一個空檔案,也可以用 echo "" > empty_file echo "text" > file 這種格式,真是建立輕量文字檔的好工具。 但若使用者沒有寫檔案的資料夾權限時,會顯示「Permission denied」的錯誤訊息,告知權限不足,這時,若使用者為superdoer,直覺上,在前面加上「sudo」就好了。 sudo echo "text" > file 輸入後仍然顯示「Permission denied」,為什麼呢? 因為這種格式實際上有2個指令「echo」和「 > (寫入)」,擁有sudo權限的,只有接在sudo後面的echo指令,寫入的指令並未獲得。 要解決這樣的窘境,要利用 sh -c command 將shell執行指令完全寫出來,再加上sudo sudo sh -c "echo text > file" 簡單了解系統中的sh是什麼? $ whereis sh sh: /bin/sh /bin/sh.distrib /usr/share/man/man1/sh.1.gz $ ls -l /bin/sh lrwxrwxrwx 1 root root 4 Jun 19 2020 /bin/sh -> dash 發現sh預設為dash的連結,若習慣用bash的朋友們,是不是也習慣在shell腳本第一行寫上 #!/bin/bash ? 不想用dash,除了將sh更改為bash的連結,也可以直接將sh改用/bin/bash取代 sudo /bin/bash -c "echo text > file" 當然,/bin/已經被系統預設路徑所包函,所以可以省略/bin/ sudo bash -c "echo text > file" 查看系統預設路...