AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 758729
Accepted
John Smith
John Smith
Asked: 2023-10-12 16:18:59 +0800 CST2023-10-12 16:18:59 +0800 CST 2023-10-12 16:18:59 +0800 CST

Por que este script está tratando os arquivos com os mesmos nomes dos mesmos arquivos?

  • 772
#!/usr/bin/bash

install_wm() {
    echo "$(dirname "$0")"
    cd "$(dirname "$0")" && pwd
    mkdir -p /root/.config && cd /root/.config &&
    git clone https://git.suckless.org/dwm && cd dwm && pwd &&
    diff "$(dirname "$0")/config.def.h" /root/.config/dwm
    cp -f "$(dirname "$0")/config.def.h" /root/.config/dwm &&
}

install_wm

Quando executo este script conforme rootrecebo

.
/home/jim/CS/SoftwareDevelopment/MySoftware/Bash/ubuntu-server-LTS
Cloning into 'dwm'...
remote: Enumerating objects: 6504, done.
remote: Counting objects: 100% (6504/6504), done.
remote: Compressing objects: 100% (3216/3216), done.
remote: Total 6504 (delta 3733), reused 5933 (delta 3287), pack-reused 0
Receiving objects: 100% (6504/6504), 6.18 MiB | 8.86 MiB/s, done.
Resolving deltas: 100% (3733/3733), done.
/root/.config/dwm
cp: './config.def.h' and '/root/.config/dwm/config.def.h' are the same file

Eu executo esse script como root. $(dirname "$0")/config.def.hé meu arquivo de configuração que tem conteúdo diferente e está localizado no mesmo diretório do script daquele no repositório clonado. Por que obtenho cp './config.def.h' and '/root/.config/dwm/config.def.h' are the same filese os arquivos têm apenas os mesmos nomes e não o conteúdo? Além disso, quando executo diffos dois arquivos manualmente, fora do script, recebo a saída que mostra a diferença entre eles:

22,23c22,23
< static const char *tags[] = { "Brave", "ffplay", "Geany", "Terminal", "5", "6", "7", "8" };
< //https://wiki.gentoo.org/wiki/Dwm#Assigning_applications_to_window_tags
---
> static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
> 
30,34c30,31
<   { "brave-browser", NULL,  NULL,       0,            1,           -1 },
<   { "ffplay",  NULL,       NULL,       1 << 1,       0,           -1 },
<   { "geany",  NULL,       NULL,       1 << 2,       0,           -1 },
<   { "lxterminal",  NULL,       NULL,       1 << 3,       0,           -1 },
<   { "gnome-screenshot",  NULL,NULL,     1 << 4,       1,           -1 },
---
>   { "Gimp",     NULL,       NULL,       0,            1,           -1 },
>   { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
61,63c58
< /* commands 
< https://youtu.be/wRh8HQ4ICwE
< */
---
> /* commands */
66,71c61
< static const char *termcmd[]  = { "lxterminal", NULL };
< static const char *downv[]  = { "amixer", "set", "Master", "3+", NULL };
< static const char *upv[]  = { "amixer", "set", "Master", "3-", NULL };
< static const char *mute[]  = { "amixer", "set", "Master", "toogle", NULL };
< 
< 
---
> static const char *termcmd[]  = { "st", NULL };

enquanto não recebo nenhuma saída quando diffé executado no meu script. O que esta acontecendo aqui?

bash
  • 1 1 respostas
  • 237 Views

1 respostas

  • Voted
  1. Best Answer
    muru
    2023-10-12T16:34:35+08:002023-10-12T16:34:35+08:00

    Com estas linhas:

    mkdir -p /root/.config && cd /root/.config &&
    git clone https://git.suckless.org/dwm && cd dwm && pwd &&
    

    você está dentro /root/.config/dwm/no momento em que cpo comando é executado.

    E como mostra a primeira linha da saída, "$(dirname "$0")"é apenas ..

    Então, nesse ponto, cp ./something /root/.config/dwm/é o mesmo que cp ./something ./, ou cp /root/.config/dwm/something /root/.config/dwm/... você está copiando um arquivo para si mesmo, e é disso que cpestá reclamando.

    Você pode tornar isso muito mais simples apenas dizendo gitpara clonar esse caminho em vez de alterar os diretórios:

    mkdir -p /root/.config && git clone https://git.suckless.org/dwm /root/.config/dwm
    

    Ou mesmo apenas:

    git clone https://git.suckless.org/dwm /root/.config/dwm
    

    Como gitfará os diretórios.

    • 4

relate perguntas

  • exportar variáveis ​​​​env programaticamente, via stdout do comando [duplicado]

  • Problema estranho ao passar variáveis ​​do arquivo de texto

  • Enquanto a linha lê mantendo os espaços de escape?

  • ordem de substituição de processos `te` e `bash`

  • Execute um script muito lento até que seja bem-sucedido

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve