在linux使用 echo 並配合命令重定向是實現向檔案中寫入資訊的快捷方式。
比如要向 test.asc 檔案中隨便寫入點內容,可以:
$ echo 「資訊」 > test.asc
$ echo "資訊" >> test.asc
下面,如果將 test.asc 許可權設定為只有 root 使用者才有許可權進行寫操作:
$ sudo chown root.root test.asc
然後,我們使用 sudo 並配合 echo 命令再次向修改許可權之後的 test.asc 檔案中寫入資訊:
$ sudo echo "又一行資訊" >> test.asc
-bash: test.asc: permission denied
這時,可以看到 bash 拒絕這麼做,說是許可權不夠**。這是因為重定向符號 「>」 和 「>>」 也是 bash 的命令。我們使用 sudo 只是讓 echo 命令具有了 root 許可權,但是沒有讓 「>」 和 「>>」 命令也具有 root 許可權,所以 bash 會認為這兩個命令都沒有像 test.asc 檔案寫入資訊的許可權。**
解決這一問題的途徑有兩種。第一種是利用 「sh -c」 命令,它可以讓 bash 將乙個字串作為完整的命令來執行,這樣就可以將 sudo 的影響範圍擴充套件到整條命令。具體用法如下:
$ sudo sh -c 'echo "又一行資訊" >> test.asc'
另一種方法是利用管道和 tee 命令,該命令可以從標準輸入中讀入資訊並將其寫入標準輸出或檔案中,具體用法如下:
$ echo "第三條資訊" | sudo tee -a test.asc
注意,tee 命令的 「-a」 選項的作用等同於 「>>」 命令,如果去除該選項,那麼 tee 命令的作用就等同於 「>」 命令 sh c的必要性
在linux使用 echo 並配合命令重定向是實現向檔案中寫入資訊的快捷方式。比如要向 test.asc 檔案中隨便寫入點內容,可以 echo 資訊 test.asc 或者 echo 資訊 test.asc 下面,如果將 test.asc 許可權設定為只有 root 使用者才有許可權進行寫操作 su...
this的必要性
先看下面一段 lesson8 necessary of this class person show name public void showinfo class demo 8 1 this屬於乙個物件,代表的是物件,其實就是乙個物件的引用,只能在類定義的方法中使用。那麼它代表那個物件呢?答 哪個...
it 的必要性
for std vector iterator itlocal m vecsoftwareer.begin itlocal m vecsoftwareer.end else it 如上所示,c 98中map erase並沒有返回值為iterator的原型函式。那麼問題來了it map.erase i...