
-p
命令中有選項mkdir
可以根據需要建立父目錄
wolf@linux:~$ tree
.
0 directories, 0 files
wolf@linux:~$
wolf@linux:~$ mkdir dir1/dir2/dir3
mkdir: cannot create directory ‘dir1/dir2/dir3’: No such file or directory
wolf@linux:~$
wolf@linux:~$ tree
.
0 directories, 0 files
wolf@linux:~$
wolf@linux:~$ mkdir -p dir1/dir2/dir3
wolf@linux:~$
wolf@linux:~$ tree
.
└── dir1
└── dir2
└── dir3
3 directories, 0 files
wolf@linux:~$
vi
或touch
指令中是否有類似的功能?
在這種情況下,我想使用或authorized_keys
在不存在的目錄中建立檔案。.ssh
vi
touch
authorized_keys 是一個文件,而不是一個目錄。因此,mkdir -p .ssh/authorized_keys
命令在這裡不適用,因為authorized_keys將被建立為目錄,而不是檔案。
wolf@linux:~$ ls .ssh
ls: cannot access '.ssh': No such file or directory
wolf@linux:~$
mkdir .ssh
沒有or可以做到這一點嗎mkdir -p .ssh
?
wolf@linux:~$ touch .ssh/authorized_keys
touch: cannot touch '.ssh/authorized_keys': No such file or directory
wolf@linux:~$
答案1
要建立~/.ssh
目錄,最好是讓其ssh
自行創建,然後您就知道它將以正確的權限建立。
ssh localhost
(或:!ssh localhost
從內部vi
)
並接受 localhost 的金鑰,將導致在其中ssh
建立.ssh
目錄和known_hosts
檔案。
若要在 中建立目錄vi
,您也可以執行以下操作:
:!mkdir -m a=,u=rwx .ssh
在 中vim
,你可以做
:!mkdir -pm a=,u=rwx %:h
或使用自己的mkdir()
:
:call mkdir(expand("%:h"),"p",0700)
%
目前編輯的檔案在哪裡,:h
就像 csh/zsh 中一樣傳回目錄名稱(頭)。如果您發現自己經常需要它,您可以將其映射到按鍵或按鍵組合或自訂功能,儘管您需要找到一種方法來指定權限(此處a=,u=rwx
/0700
所以只有所有者對其具有讀+寫+搜尋權限) 。
關於mkdir+touch,請參見:Zsh:如何用一個指令建立一個目錄並在其中建立文件?
答案2
AFAIK,您不能強制使用vi
或來建立目錄touch
。
您仍然需要使用 來建立它mkdir
,或使用-p
flag 來使用它。
-p, --parents no error if existing, make parent directories as needed
如果有辦法用vi
或來做到這一點touch
,請隨時更新答案。