我使用我的用戶名登入ravbholua
:
ravbholua@ravbholua-Aspire-5315:~$ echo $LOGNAME ravbholua
我建立的文件名稱為a1
:
ravbholua@ravbholua-Aspire-5315:~$ echo>a1
ravbholua@ravbholua-Aspire-5315:~$ ll a1
-rw-rw-r-- 1 ravbholua ravbholua 1 Oct 8 09:57 a1
正如所料,上述文件的ravbholua
所有者是我 ()。
echo
接下來我使用 sudo 和命令創建 a2 :
ravbholua@ravbholua-Aspire-5315:~$ sudo echo>a2
ravbholua@ravbholua-Aspire-5315:~$ ll a2
-rw-rw-r-- 1 ravbholua ravbholua 1 Oct 8 09:57 a2
所有者只是我,即ravbholua
。
現在我再次使用 sudo 創建 a3 但使用vim
命令:
ravbholua@ravbholua-Aspire-5315:~$ sudo vim a3
ravbholua@ravbholua-Aspire-5315:~$ ll a3
-rw-r--r-- 1 root root 10 Oct 8 09:57 a3
哦!怎麼現在主人變了。這不是我,而是root。為什麼和 會有這樣的echo
變化vim
!令人驚訝的是改變指令創建的文件的所有者如何更改。
答案1
第二個範例echo
在 下運行sudo
,但是重定向發生在原始外殼下。
sudo bash -c "echo > a4"
答案2
sudo
只是一個命令。
所以對於你的第一個例子:
sudo echo>a2
sudo
是命令。雖然重定向與迴聲相抵觸,但這並不意味著任何事情。
例如:
echo cat /etc/passwd > /tmp/foo
您不會在/tmp/foo 中取得/etc/passwd 的內容。你就會有cat /etc/passwd
。 sudo 也不例外。 echo 部分只是 sudo 的參數。 sudo 確實使用它來執行操作,但 shell 不知道這一點。
這是 sudo 訪問與 root 訪問非常不同的方式之一。
sudo vim a3
對於您使用sudovim a3
作為 root運行的範例。而vim以root身分運行,因此檔案歸root所有。