1 (04.09.2012 13:14:04 отредактировано forroboform)

Нужно скопировать содержимое папки, без самой этой папки в другую папку.
В /var/www/ лежат: index.html и .htaccess

Вроде как все понятно: cp -rp /var/www/* ~/www/test4.ru/
В итоге в ~/www/test4.ru/ оказывается вся папка www.

Пробовал с другими ключами и комбинациями -> то копируется сама папка www с содержимым.
То копируется файл index.html  ..... а файл .htaccess теряется ...

Как из папки скопировать только содержимое в другую папку?

2

 Консоль:

lupo@gentoo-laptop ~ % mkdir -p /tmp/www /tmp/test4.ru
lupo@gentoo-laptop ~ % touch /tmp/www/index.html
lupo@gentoo-laptop ~ % touch /tmp/www/.htaccess
lupo@gentoo-laptop ~ % ls -al /tmp/www
итого 0
drwxr-xr-x  2 lupo lupo  80 Сен  4 11:16 ./
drwxrwxrwt 10 root root 360 Сен  4 11:16 ../
-rw-r--r--  1 lupo lupo   0 Сен  4 11:16 .htaccess
-rw-r--r--  1 lupo lupo   0 Сен  4 11:16 index.html
lupo@gentoo-laptop ~ % cp /tmp/www/* /tmp/test4.ru
lupo@gentoo-laptop ~ % ls -al /tmp/test4.ru
итого 0
drwxr-xr-x  2 lupo lupo  80 Сен  4 11:17 ./
drwxrwxrwt 10 root root 360 Сен  4 11:16 ../
-rw-r--r--  1 lupo lupo   0 Сен  4 11:17 .htaccess
-rw-r--r--  1 lupo lupo   0 Сен  4 11:17 index.html

Был, был и весь вышел...

3 (04.09.2012 13:12:14 отредактировано forroboform)

Использую Debian 6.0.5_Squeeze_ - Official i386 CD Binary-1 20120512-13:45

http://s44.radikal.ru/i105/1209/eb/55b07e65540a.gif

Вопрос остается открытым!
Теоретически можно было бы "забить" ... и копировать во вновь созданный домен целиком папку www со всем содержимым.
Но хочется "красиво" -> только содержимое и без самой папки ...

4

Покажите

alias
which ls
whereis ls
Был, был и весь вышел...

5

Честно говоря не совсем понял  ab   ... но вот:

http://s006.radikal.ru/i213/1209/8b/c2b2b2a4c177.gif

6

forroboform пишет:

Честно говоря не совсем понял  ab

Просто думал, может, у вас на эту команду какой-нибудь алиас «хитрый» или команда cp «ненастоящая» bx
А оболочка у вас какая?

Был, был и весь вышел...

7

http://s3.hostingkartinok.com/uploads/images/2012/09/1fbb8d66c57075bdd39a90a763106e1a.gif

8

Я имел в виду другое bx
Покажите

echo $SHELL
Был, был и весь вышел...

9 (04.09.2012 13:36:48 отредактировано forroboform)

http://s3.hostingkartinok.com/uploads/images/2012/09/ad4c52234eaf99d2f5de857dc2b00a4f.gif

Дистрибутив: Debian 6.0.5_Squeeze_ - Official i386 CD Binary-1 20120512-13:45
Команда ls -lia - всё видит!
Пробовал в исходную папку вставлять перед копированием вложенную папку с файлами index.html и .htaccess - рекурсивное копирование срабатывает ...
Но точно такой же .htaccess который лежит выше с такими же правами и от такого же пользователя - ни в какую копироваться не хочет ...
А если и копируется, то только с самой папкой в которой лежит!

10 (04.09.2012 13:47:13 отредактировано Fat-Zer)

в bash'е поведение звёздочки зависит от настроек... о том, как её настроить, чтобы она и скрытые файлы подцепляла, ЕМНИП есть в мане.
единственным способом гарантированно получить то, что надо является find:
find /src/dir/ -maxdepth 1 -exec cp -r '{}' /dest/dir/ \;

собственно man:

man bash пишет:

       The GLOBIGNORE shell variable may be used to restrict the set of file names matching a pattern.  If GLOBIGNORE is set, each matching file name that also matches one of the patterns in GLOBIGNORE is removed from the list of matches. The  file  names ``.''  and ``..''  are always ignored when GLOBIGNORE is set and not null.  However, setting GLOBIGNORE to a non-null value has the effect of enabling the dotglob shell option, so all other file names beginning with a ``.''  will match.  To get the old behavior of ignoring file names beginning with a ``.'', make ``.*''  one of the patterns in GLOBIGNORE.  The dotglob option is disabled when GLOBIGNORE is unset.

ну и пример:

 Консоль:
alexander@goblin /tmp $ mkdir test
alexander@goblin /tmp $ cd test
alexander@goblin /tmp/test $ touch qwe
alexander@goblin /tmp/test $ touch .qwe
alexander@goblin /tmp/test $ ls *
qwe
alexander@goblin /tmp/test $ echo $GLOBIGNORE

alexander@goblin /tmp/test $ shopt -s dotglob
alexander@goblin /tmp/test $ ls *
qwe  .qwe

95% процентов проблем находятся между клавиатурой и стулом.

11 (04.09.2012 14:02:48 отредактировано forroboform)

Честно говоря не понял!
ls -a у меня работает исправно (показывает скрытые файлы)  ab

Я не могу скопировать из папки А в папку => B файл .htaccess, без копирования целиком папки A.
Скопировать папку А (её саму со всем содержимым) в папку => B - проблем нет!

Если же в папку А  положить папку С в которой будет лежать .htaccess, то он копируется ...
Получается "проблема звездочки в баш" не при чем?

12

Вставьте в файл ~/.bashrc строку

shopt -s dotglob

...и перезайдите в оболочку (либо для разового применения просто запустите эту команду в текущем сеансе). Теперь команда

cp -rp /var/www/* ~/www/test4.ru/

должна работать, как вы хотите.

Был, был и весь вышел...

13 (04.09.2012 14:36:39 отредактировано forroboform)

Благодарю!
Звездочка заработала!
Fat-Zer и Lupo Alberto - вы Профи с большой буквы!  ab

14

А вот у меня, например, tcsh. Можно двумя командами:

cp -rp /var/www/* ~/www/test4.ru/
cp -rp /var/www/.* ~/www/test4.ru/

При этом будут сообщения, но ошибки не будет.
Или можно войти в каталог и получить список файлов так:

ls -a | egrep "^[.][^./]"

но в нём будут и каталоги, если есть. Его можно заключить в ``
и передать команде cp.

Пётр.

Пётр.

15

Peter пишет:

cp -rp /var/www/* ~/www/test4.ru/
cp -rp /var/www/.* ~/www/test4.ru/

плохой совет... ".*" метчит всё, включая и ".." и "."
правильнее было бы использовать: cp -rp /var/www/{.[^.]*,*} ~/www/test4.ru/
если выполняется в ручную, то обычно достаточно для скрытых пользовать .??* т.к. скрытые файлы с одним символом бывают где-либо редко...

но опять же... читаем про опасность поведения звёздочки в зависимости от шела и даже от его настроек...
+ она ещё опасна переполнением списка аргументов команды итп... так что в скриптах звёздочку использовать нельзя

95% процентов проблем находятся между клавиатурой и стулом.

16 (05.09.2012 20:41:42 отредактировано Peter)

Fat-Zer пишет:
Peter пишет:

cp -rp /var/www/* ~/www/test4.ru/
cp -rp /var/www/.* ~/www/test4.ru/

плохой совет... ".*" метчит всё, включая и ".." и "."
правильнее было бы использовать: cp -rp /var/www/{.[^.]*,*} ~/www/test4.ru/
если выполняется в ручную, то обычно достаточно для скрытых пользовать .??* т.к. скрытые файлы с одним символом бывают где-либо редко...

но опять же... читаем про опасность поведения звёздочки в зависимости от шела и даже от его настроек...
+ она ещё опасна переполнением списка аргументов команды итп... так что в скриптах звёздочку использовать нельзя

Да, метит, но не копирует, только сообщает, что они пропущены, так что не опасно.

Пётр.

Пётр.

17

Да уж ... мне даже как то неудобно, что столько народу напряг "на пустом месте"  ab
Перенастраивать баш (потом вдруг аукнется на другом) или использовать всякие "другие сложности" ...

Проще оставить всё как есть!
Копировать стандартным образом:
cp -rp /var/www/* ~/www/test4.ru/

А в настройках хоста прописывать не:
/www/test4.ru/
А на одну папку длиннее:
/www/test4.ru/www/

18

forroboform пишет:

Нужно скопировать содержимое папки, без самой этой папки в другую папку.
В /var/www/ лежат: index.html и .htaccess
...
Как из папки скопировать только содержимое в другую папку?

Именно содержимое самой папки со всеми вложенными файлами и папками, включая файлы и папки, начинающиеся на точку,  а также с сохранением всех прав, ролей и времени создания, копируется так:

cp -RTp /path/folder/otkuda /path/folder/kuda

Если папка kuda не существовала, она будет создана с правами текущего пользователя и атрибутами 755.
В папке kuda будет именно содержимое папки otkuda
А подсказали мне это специалисты хостинга MemHOST.