Isso não inclui arquivos ocultos e vincula diretórios inteiros. Se um desses não for o que você deseja, veja minha resposta. Caso contrário, é o caminho mais curto.
Cascabel
Você está certo. Mas as bibliotecas geralmente não estão ocultas. Em qualquer caso, os dotfiles estão envolvidos, sua solução é mais útil.
1
apontará para a outra pasta permanentemente?
precisa saber é o seguinte
@YuPPie Acho que ele cria um hardlink para todos os arquivos do diretório. (era isso que eu queria hoje, então +1: D)
Exibir nome
2
@SargeBorsch Cria links simbólicos (links físicos são diferentes).
jsejcksn
90
O GNU cptem uma opção para criar links simbólicos em vez de copiar.
cp -rs /mnt/usr/lib /usr/
Note que esta é uma extensão GNU não encontrada no POSIXcp .
As soluções publicadas não vincularão nenhum arquivo oculto. Para incluí-los, tente o seguinte:
cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Se você desejar criar recursivamente os diretórios e vincular apenas os arquivos (para que, se você criar um arquivo dentro de um diretório, ele realmente /usr/libnão esteja /mnt/usr/lib), faça o seguinte:
cd /usr/lib
find /mnt/usr/lib -mindepth 1 -depth -type d -printf "%P\n" | while read dir; do mkdir -p "$dir"; done
find /mnt/usr/lib -type f -printf "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Eu acredito que isso também deve funcionar como uma forma de curinga em arquivos ocultos, se você tiver estendido as globbing ativadas no bash. Ele combina com tudo começando com um ponto, seguido por algo que não seja nada ou outro ponto (ou seja, que exclui ./e ../):ln -s /mnt/usr/lib/.!(|.)* /usr/lib
Respostas:
Eu acho que isso pertence ao superusuário, no entanto.
fonte
O GNU
cp
tem uma opção para criar links simbólicos em vez de copiar.Note que esta é uma extensão GNU não encontrada no POSIX
cp
.fonte
fonte
As soluções publicadas não vincularão nenhum arquivo oculto. Para incluí-los, tente o seguinte:
Se você desejar criar recursivamente os diretórios e vincular apenas os arquivos (para que, se você criar um arquivo dentro de um diretório, ele realmente
/usr/lib
não esteja/mnt/usr/lib
), faça o seguinte:fonte
./
e../
):ln -s /mnt/usr/lib/.!(|.)* /usr/lib