linux--sh -c
背景
在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
利用 “sh -c” 命令解決這一問題,它可以讓 bash 將一個字串作為完整的命令來執行,這樣就可以將 sudo 的影響範圍擴充套件到整條命令。具體用法如下:
$ sudo sh -c ‘echo “又一行資訊” >> test.asc’
相關文章
- (轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)C++C#Java
- 聊聊我理解的ANSI C、ISO C、GNU C、POSIX C
- C/C++工具C++
- C 與 C++C++
- 字串(C/C++)字串C++
- C/C++ 面試C++面試
- c/c++ c語言字元與字串C++C語言字元字串
- [ASM C/C++] C語言陣列ASMC++C語言陣列
- c/c++面試整理C++面試
- 從C到C++C++
- c/c++ 面試題C++面試題
- C/C++自學之路C++
- C/C++複習C++
- C++呼叫C介面C++
- c/c++面試題C++面試題
- 加固 C/C++ 程式C++
- c/c++巨集指令C++
- C/C++-技巧-巨集C++
- 【C++】C++14C++
- c/c++ 學習C++
- 如何在C#中模擬C++的聯合(Union)?[C#, C++] How To Simulate C++ Union In C#?C#C++
- 【C/C++】 C++暫存器優化C++優化
- POSIX C和ANSI C、GNU C以及ISO C有什麼區別?
- (原創) C語言初學者建議的書籍 (C/C++) (C)C語言C++
- 【C/C++】C和C++11之enum列舉的使用細節C++
- [ASM C/C++] C語言的main 函式ASMC++C語言AI函式
- Visual Studio中的C,C++,C#C++C#
- 【C/C++】4.C++的記憶體管理C++記憶體
- C/C++const用法C++
- C和C++區別C++
- C/C++解決方案C++
- Mac 執行 C/C++MacC++
- C++,C#,PythonC++C#Python
- C/C++ Development LibraryC++dev
- C連線oracle(PROC*C)Oracle
- C#呼叫C++DLLC#C++
- C++::My Effective C++C++
- C/C++ debug(一)C++