По умолчанию вы можете переключать "состояние масштабирования" панели, нажимая Префикс и z (по умолчанию префикс Ctrl + B ).
Это заставит текущую панель (например, панель командной строки) занять все окно. Снова нажмите Префикс и z , чтобы «уменьшить масштаб» панели.
Существует фундаментальное различие между этими двумя формами аргументации. И очень важно понимать, что происходит.
С помощью ../foldersource/.
аргумент передается команде без изменений, будь то cp
или rm
или что-то еще. От команды зависит, имеет ли эта конечная точка особую или уникальную семантику, отличную от стандартного соглашения Unix о простом указании на каталог, в котором она находится; и в rm
, и в cp
это, по-видимому, рассматривается как частный случай.
С помощью ../foldersource/*
аргумент сначала раскрывается оболочкой , прежде чем команда вообще будет выполнена и переданы какие-либо аргументы. Таким образом, rm
никогда не видит ../foldersource/*
; он видит расширенную версию ../foldersource/file1.ext../foldersource/file2.ext../foldersource/childfolder1
и так далее. Это важно, поскольку операционные системы ограничивают количество аргументов, которые можно передать команде, обычно всего несколько сотен.
Когда вы копируете с помощью cp -a source/* target/
, вы копируете большинство файлов и каталогов из source
в target
. В частности, исключаемые элементы, вероятно, будут файлами, начинающимися с точки(.
)на верхнем уровне source
.
Рассмотрим эти файлы (или каталоги )вsource
apple # will be copied
banana/ # will be copied, as will all its contents
.cherry # will not be copied
При копировании с помощью cp -a source/. target/
вы копируете все содержимое source
, включая все элементы, начинающиеся с точки (.
)–target
Рассмотрим эти файлы (или каталоги )вsource
apple # will be copied
banana/ # will be copied, as will all its contents
.cherry # will be copied
Если вы используете bash
, zsh
, вы можете использовать параметрdotglob
, чтобы изменить значение *
, чтобы оно также включало файлы и каталоги, начинающиеся с точки (yash
. имеет опцию dotglob
; однако затем он включает .
и ..
в расширения глобуса, что ограничивает его использование. См. также FIGNORE='@(.|..)'
в ksh93
).
Интересно, что cp -a source/. target/
гарантируется никогда создание компонента target/source
. (С другой стороны,cp -a source target/
выполнит одно из двух действий в зависимости от того, существует ли уже target
. Подробности см. в Как рекурсивно скопировать папку идемпотентным способом с помощью cp .)
Когда вы удаляете с помощью rm -rf source/*
, вы удаляете файлы и каталоги в source
, которые не начинаются с точки(.
). С учетом уже упомянутой настройки dotglob
. Он не удалит сам каталог source
.
При попытке удалить с помощью rm -rf source/.
произойдет сбой -, поскольку другие уже объяснили -, поскольку POSIX запрещает удаление пути, последним компонентом которого является .
или ..
. Ближайшим эквивалентом является rm -rf source
, который удалит каталог source
и все его содержимое независимо от того, начинаются ли они с точки (.
).