fdisk -l
перечислит
Использование:
fdisk [options] -l <disk> list partition table(s)
fdisk -s <partition> give partition size(s) in blocks
fdisk [options] <disk> change partition table
По умолчанию, cp
тесты, если его последним аргументом является существующий каталог. Если это происходит, cp
создает ссылку в том каталоге, с базовым именем источника. Таким образом, учитывая команду
cp foo/bar wibble
если wibble
существующий каталог затем cp
копирует источник в wibble/bar
. Если wibble
не существует затем cp
связывает источник с wibble
.
Если Вы хотите быть уверенными, что копия всегда wibble
, затем можно указать --no-target-directory
(псевдоним -T
) опция. Тот путь, если cp
успешно выполняется, можно быть уверены, что копию называют wibble
. Если wibble
уже существовал как каталог, затем cp
перестанет работать.
В табличной форме:
The target is … Without -T With -T
existing directory copy in the directory error
existing file (not dir) overwrite overwrite
does not exist create create
Единственная разница - это с -T
, в случае, если цель является существующим каталогом, команда возвращает ошибку. Это полезно, когда Вы ожидаете, что каталог не будет существовать: Вы получаете сообщение об ошибке вместо чего-то непредсказанный случай.
То же относится mv
и ln
. Если цель является существующим каталогом, с -T
, они сигнализируют об ошибке вместо того, чтобы тихо делать что-то другое.
С cp
, существует другой случай. Если Вы делаете рекурсивная копия и источник являются каталогом, то cp -T
копирует содержание источника в место назначения, вместо того, чтобы копировать сам источник. Таким образом, данный
$ tree source destination
source
└── foo
destination
└── bar
затем
$ cp -rv source destination
`source' -> `destination/source'
`source/foo' -> `destination/source/foo'
тогда как
% cp -rvT source destination
`source/foo' -> `destination/foo'
Как насчет следующего?
$ cp -rvT Dir_1 Dir_2
‘Dir_1/File_3.txt’ -> ‘Dir_2/File_3.txt’
‘Dir_1/File_1.txt’ -> ‘Dir_2/File_1.txt’
‘Dir_1/File_2.txt’ -> ‘Dir_2/File_2.txt’
$ cp -rv Dir_1 Dir_2
‘Dir_1’ -> ‘Dir_2/Dir_1’
‘Dir_1/File_3.txt’ -> ‘Dir_2/Dir_1/File_3.txt’
‘Dir_1/File_1.txt’ -> ‘Dir_2/Dir_1/File_1.txt’
‘Dir_1/File_2.txt’ -> ‘Dir_2/Dir_1/File_2.txt’
По сути, это - просто другой способ записать cp Dir_1/* Dir_2/
. Однако это действительно ловит скрытые файлы в корне Dir_1, который был бы пропущен простым cp *
.
$ touch Dir_1/.Hidden_File_{1,2,3}.txt
$ cp -rv Dir_1/* Dir_2
cp: No match.
$ cp -rvT Dir_1 Dir_2
‘Dir_1/.Hidden_File_2.txt’ -> ‘Dir_2/.Hidden_File_2.txt’
‘Dir_1/.Hidden_File_3.txt’ -> ‘Dir_2/.Hidden_File_3.txt’
‘Dir_1/.Hidden_File_1.txt’ -> ‘Dir_2/.Hidden_File_1.txt’
--no-target-directory
опция: пока я использую - рекурсивный, все соглашается [с coreutils 8.12
под GNU/Linux]. Основное различие, кажется, это с --no-target-directory
содержание, но не сам каталог копируется [исследование, все еще происходящее]
– erch
13.10.2013, 19:24
Вы использовали бы --no-target-directory
если Вы не хотите исходный каталог, скопированный под существующим целевым каталогом, Вы хотите исходный каталог, скопированный на целевой каталог.
Вот пример копии каталога с и без --no-target-directory
:
$ mkdir a
$ touch a/b a/c
$ find
.
./a
./a/c
./a/b
$ cp -r a b # b does not exist; becomes copy of a
$ find
.
./b
./b/b
./b/c
./a
./a/c
./a/b
$ rm -r b
$ mkdir b
$ cp -r a b # b already exists; a is copied *underneath* it
$ find
.
./b
./b/a
./b/a/b
./b/a/c
./a
./a/c
./a/b
$ rm -r b
$ mkdir b
$ cp -r --no-target-directory a b # b already exists; becomes copy of a
$ find
.
./b
./b/b
./b/c
./a
./a/c
./a/b
Можно достигнуть чего-то вроде того же эффекта путем добавления суффикса исходного имени (имен) каталога точку наклонной черты /.
как в: cp -r a/. b
который копирует исходный каталог a
на b
и не внизу b
.
Ни один из вышеупомянутых методов не совпадает с высказыванием, "копируют только содержание исходного каталога существующему месту назначения" с тех пор, если Вы попросите сохранять время и полномочия, то существующий целевой каталог получит время и полномочия исходного каталога. Пример (отредактированный для удаления ненужной информации):
$ find . -ls
drwx------ Oct 13 13:31 ./b # note date and permissions
drwxr-xr-x Jan 1 2013 ./a # note date and permissions
-rw-r--r-- Oct 13 13:23 ./a/c
-rw-r--r-- Oct 13 13:23 ./a/b
$ cp -rp --no-target-directory a b # preserve mode and timestamps
$ find . -ls
drwxr-xr-x Jan 1 2013 ./b # note copied date and permissions
-rw-r--r-- Oct 13 13:23 ./b/b
-rw-r--r-- Oct 13 13:23 ./b/c
drwxr-xr-x Jan 1 2013 ./a
-rw-r--r-- Oct 13 13:23 ./a/c
-rw-r--r-- Oct 13 13:23 ./a/b
Копия только для содержания не передала бы режим или метки времени исходного каталога к целевому каталогу.