無法獲取主目錄的內容,也無法在那裡複製文件
我正在嘗試
istioctl
在 Debian 上的主目錄中複製命令 (),以便我始終可以使用它,因為它將自動添加到我的 PATH 變數中。我試過(“link1”是指向包含 istioctl 的硬碟的符號連結):
TestUser@ComputerName:~$ cp ~/link1/istio-1.12.2/bin/istioctl ~/cmd
和
TestUser@ComputerName:~$ cp ~/link1/istio-1.12.2/bin/istioctl ~/bin
~
在此之前兩個目錄都不存在。至少ll
並ls
沒有向他們展示。但這就是我得到的:
TestUser@ComputerName:~$ ll ~ total 171856 -rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:47 bin -rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:50 cmd lrwxrwxrwx 1 TestUser users 38 Jan 13 18:16 link1 -> /some/path1 lrwxrwxrwx 1 TestUser users 39 Jan 13 18:10 link2 -> /some/path2 lrwxrwxrwx 1 TestUser users 38 Jan 13 18:17 link3 -> /some/path3 lrwxrwxrwx 1 TestUser users 38 Jan 13 18:15 link4 -> /some/path4 lrwxrwxrwx 1 TestUser users 38 Jan 13 18:15 link5 -> /some/path5 TestUser@ComputerName:~$ TestUser@ComputerName:~$ ll ~/bin -rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:47 /home/TestUser/bin TestUser@ComputerName:~$ TestUser@ComputerName:~$ ll ~/cmd -rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:50 /home/TestUser/cmd
我不明白為什麼
cmd
andbin
文件夾會以這種方式執行,以及為什麼它們不包含該文件。也試過
root
:root@ComputerName:~# cp ~/link1/istio-1.12.2/bin/istioctl /home/TestUser/bin
一樣。
您錯誤地認為該
cp
命令會在目標位置創建一個目錄,然後將源文件放在該目錄中。它不是那樣工作的——要將源文件放入目標目錄,該目錄必須已經存在;否則,cp
將簡單地創建該名稱的目標文件。這種行為在cp 的 POSIX 標準中
man cp
描述(在其他地方):
cp [-Pfip] source_file target_file
cp [-Pfip] source_file... target
第一種概要形式由兩個操作數表示,它們都不是目錄類型的現有文件。cp 實用程序應將 source_file … 的內容複製到由 target_file 命名的目標路徑。
第二種概要形式由兩個或多個操作數表示,其中未指定 -R 選項並且第一種概要形式不適用。如果任何 source_file 是目錄類型的文件,如果 target 不存在,或者如果 target 沒有命名目錄,這將是一個錯誤。cp 實用程序應將每個 source_file … 的內容複製到由 target 連接命名的目標路徑,如果 target 不以 a 結尾,則為單個字元,以及 source_file 的最後一個組件。
本質上,您需要
cp source-file destination-file
orcp source-file pre-existing-directory
。實現你想要的*,
mkdir ~/bin
或者mkdir ~/cmd
然後。聽起來您可能已將 $HOME 目錄添加到 PATH 中。這是合法的,但不太常見。更常見的是將or目錄添加到您的 PATH 中。確保您已將該*目錄添加到 PATH 以確保成功。cp ~/link1/istio-1.12.2/bin/istioctl ~/bin``~/bin``~/cmd