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 / 456320
Accepted
user9303970
user9303970
Asked: 2018-07-15 09:21:10 +0800 CST2018-07-15 09:21:10 +0800 CST 2018-07-15 09:21:10 +0800 CST

Um nome de arquivo tem um asterisco por algum motivo - ele não será alterado e o conteúdo não será executado

  • 772

Eu uso o ambiente de servidor compartilhado CentOS com Bash.

ll "$HOME"/public_html/cron_daily/

traz:

./
../
-rwxr-xr-x 1 user group 181 Jul 11 11:32 wp_cli.sh*

Não sei por que o nome do arquivo tem um asterisco no final. Não me lembro de adicioná-lo e, quando tentei alterá-lo, obtive esta saída:

[~/public_html]# mv cron_daily/wp_cli.sh* cron_daily/wp_cli.sh
+ mv cron_daily/wp_cli.sh cron_daily/wp_cli.sh
mv: `cron_daily/wp_cli.sh' and `cron_daily/wp_cli.sh' are the same file

Este erro pode indicar por que meu cronjob do Cpanel falhou:

insira a descrição da imagem aqui

Fiz algo errado ao alterar o arquivo ou ao executar o comando Cpanel cron? Porque ambas as operações parecem falhar.

bash centos
  • 2 2 respostas
  • 21753 Views

2 respostas

  • Voted
  1. Best Answer
    jesse_b
    2018-07-15T09:25:20+08:002018-07-15T09:25:20+08:00

    O asterisco não faz parte do nome do arquivo. Você está vendo porque o arquivo é executável e seu alias para llinclui o -Fsinalizador:

    -F

    Exibe uma barra ('/') imediatamente após cada nome de caminho que é um diretório, um asterisco ('*') após cada executável, uma arroba ('@') após cada link simbólico, um sinal de igual (`=' ) após cada soquete, um sinal de porcentagem ('%') após cada whiteout e uma barra vertical ('|') após cada um que é um FIFO.


    Como Kusalananda mencionou, você não pode glob todos os scripts em um diretório com cron assim. Com run-parts, você pode chamar "$HOME"/public_html/cron_daily/para executar todos os scripts no diretório (não apenas .sh) ou percorrê-los conforme mencionado neste post .

    • 28
  2. nxnev
    2018-07-15T16:24:35+08:002018-07-15T16:24:35+08:00

    Jesse_b já respondeu a pergunta, mas acho que vale a pena abordar alguns equívocos em potencial.

    O shell possui caracteres que possuem significado especial sob algumas condições específicas. Por exemplo: |é usado em pipelines, >em redirecionamentos, \para caracteres de escape, etc. Esses caracteres não são interpretados literalmente pelo shell, por isso, quando você fizer isso echo foo>bar, foo>barnão será impresso no seu terminal, mas fooserá redirecionado para o bararquivo .

    Felizmente, o shell também possui um mecanismo que faz com que esses caracteres percam seu significado especial: aspas. Em shells POSIX, existem 3 mecanismos de cotação :

    • Barra invertida \: preserva o valor literal do caractere a seguir, com exceção de um <newline>.
    • Aspas duplas "...": preserva o valor literal de todos os caracteres entre aspas duplas, com exceção dos caracteres `, $e \.
    • Aspas simples '...': preserva o valor literal de cada caractere entre aspas simples, sem exceções.

    Então, seguindo o exemplo anterior, se quiséssemos imprimir foo>barliteralmente, poderíamos ter feito:

    • echo foo\>bar
    • echo "foo>bar"
    • echo 'foo>bar'

    O asterisco *é um desses caracteres especiais, faz parte da notação de correspondência de padrões e é usado para expansão de nome de arquivo . Em outras palavras, comandos como echo *.txtsubstituirão o padrão pelos arquivos aos quais o padrão corresponde.

    No seu caso, cron_daily/wp_cli.sh*apenas corresponde cron_daily/wp_cli.sh, então mvvê 2 argumentos idênticos e reclama disso. Isso é bom porque não há nenhum cron_daily/wp_cli.sh*arquivo. Mas se você tivesse um cron_daily/wp_cli.sh*arquivo real e mais arquivos que pudessem ser correspondidos pelo padrão, mvteria falhado.

    Considere o seguinte cenário:

    $ ls -l
    total 0
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file*
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file1
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file2
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file3
    

    Se eu tentar renomear file*sem usar aspas:

    $ mv file* new_file
    mv: target 'new_file' is not a directory
    

    Isso porque esses são os argumentos que mvrecebe, portanto new_fileespera-se que seja um diretório:

    $ printf '[%s]\n' file* new_file
    [file*]
    [file1]
    [file2]
    [file3]
    [new_file]
    

    Para renomear com sucesso file*, preciso citar esse argumento:

    $ mv 'file*' new_file
    $ ls -l
    total 0
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file1
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file2
    -rw-rw-r-- 1 user group 0 jul 14 12:00 file3
    -rw-rw-r-- 1 user group 0 jul 14 12:00 new_file
    
    • 9

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

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

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 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

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 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
    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
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +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