ホームディレクトリのコンテンツを取得できず、ファイルをコピーできません。

ホームディレクトリのコンテンツを取得できず、ファイルをコピーできません。

istioctlPATH変数に自動的に追加されるので、いつでも使用できるようにDebianのホームディレクトリにコマンド()をコピーしようとしています。

私は試しました(「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フォルダbinにこのような理由とファイルが含まれていない理由は理解できません。

また試してくださいroot

root@ComputerName:~# cp ~/link1/istio-1.12.2/bin/istioctl /home/TestUser/bin

同じ。

答え1

cpコマンドはターゲットの場所にディレクトリを作成し、ソースファイルをそのディレクトリに配置すると誤って考えます。これはうまくいきません。ソースファイルをターゲットディレクトリに配置するには、そのディレクトリがすでに存在している必要があります。それ以外の場合は、cpターゲットのみが作成されます。文書その名前の。

man cpこの動作は(および他の場所で)説明されています。cpのPOSIX規格:

cp [-Pfip] source_file target_file

cp [-Pfip] source_file... target

最初の要約形式は 2 つのオペランドで表され、どちらもディレクトリタイプの既存のファイルではありません。 cpユーティリティは、source_fileの内容をtarget_fileで指定された宛先パスにコピーする必要があります。

2 番目の要約形式は、-R オプションが指定されておらず、最初の要約形式が適用されない 2 つ以上のオペランドで表されます。 source_file がディレクトリ・タイプのファイルである場合、宛先が存在しない場合、または宛先がディレクトリ名を指定しない場合、エラーが発生します。 cp ユーティリティーは、各 source_file の内容を宛先に関連付けられた名前の宛先パスにコピーし、宛先が終了していない場合は、単一文字と source_file の最後のコンポーネントにコピーする必要があります。

デフォルトでcp source-file destination-fileまたはが必要ですcp source-file pre-existing-directory

欲しいものを達成するために、mkdir ~/binまたはmkdir ~/cmdそれから cp ~/link1/istio-1.12.2/bin/istioctl ~/bin。 PATHに$ HOMEディレクトリを追加したようです。これは正当ですが、あまり一般的ではありません。 PATHに~/binディレクトリを追加する方が一般的です。~/cmd追加したことを確認してくださいそれ成功するには、ディレクトリをPATHに追加してください。

関連情報