Estou aprendendo a programar com um livro introdutório muito legal para C e escrevo todos os exemplos e tarefas para aprender a sintaxe de cor. Fiz todos os arquivos manualmente até agora, mas clicar, nomear e salvar fica cansativo.
Eu preciso de uma maneira de criar vários arquivos, como bspl0001.c
, bspl0002.c
, bspl0003.c
, etc. e salvá-las no diretório "learning_c" ou algo assim.
Eu sou um novato no Ubuntu / Linux e honestamente só o executo via VirtualBox porque o IDE Geany foi fácil de configurar. Portanto, eu realmente não sei como o Terminal funciona.
edit Acabei de me encontrar nesta conta antiga e estou sacudindo a cabeça sobre o motivo de querer aprender uma sintaxe de código de cor. Curiosamente, estou quase terminando meus estudos de CS / Math BSc. Muito obrigado pela ajuda em retrospectiva!
fonte
Respostas:
Você pode fazer isso com estes comandos:
Explicação:
mkdir learning_c
learning_c
na pasta atual~
cd
comando (iecd Desktop
)cd learning_c
touch bspl{0001..0003}.c
touch
é uma ferramenta para criar arquivos vazios e modificar registros de data e hora; estamos criando arquivos vazios.touch myfile
criará um arquivo vazio chamadomyfile
.O código feio que se segue (
bspl{0001..0003}.c
) é chamado de expansão entre chaves . Esse é um ótimo recurso dobash
shell que permite criar longas listas de combinações arbitrárias de strings. Você pode aprender mais sobre isso no Bash Hackers Wiki . Nesse caso, você fará uma longa lista de parâmetros que serão passados paratouch
. Você também pode usar seu equivalente longo:Você pode alterar o número de arquivos: se você quiser 12 arquivos, poderá executar
bspl{0001..0012}.c
.0012
vez de12
) garantem que a saída use 4 dígitos preenchidos com zero.fonte
touch bspl000{1..3}.c
touch {test,tes2,tes3}.js
touch tes{t,2,3}.js
Crie um arquivo (próximo) numerado corretamente com uma combinação de teclas de atalho
Por que criar todos os arquivos de uma só vez? A desvantagem é que você terá muitos arquivos vazios e não utilizados. O que estou realmente usando: pressione uma combinação de teclas para:
Tudo em uma tecla. Dessa forma, você evita muitos arquivos (ainda) não utilizados; Os arquivos são criados apenas se você precisar deles.
Uma versão simplificada abaixo (não executando a etapa 3). Em cada pressionamento de tecla, ele criará um arquivo numerado corretamente, como:
Como usar
Execute o script a partir de um atalho: Configurações do sistema> Teclado> Atalhos personalizados. Adicione o comando:
fonte
Você pode usar o seguinte código python, modificá-lo para atender às suas necessidades.
Salve o seguinte código com o nome do arquivo
filecreator.py
E, em seguida, execute-o com este comando:
fonte
O
bash
caminho é bom, mas e se você estiver trabalhando com um shell que não suporta a expansão de chaves?touch file{1..10}
não funciona para mim,mksh
por exemplo. Aqui estão três maneiras alternativas que funcionam independentemente do shell.seq
Uma abordagem mais neutra ao shell seria combinar o
seq
comando para gerar a sequência de números formatados com asprintf
opções e passá-lo aoxargs
comando. Por exemplo,Perl
Obviamente, o Perl, sendo uma ferramenta * nix bastante difundida, também pode fazer isso. O comando de uma linha específico que temos aqui é o seguinte:
Efetivamente, o que acontece aqui é que especificamos três argumentos de linha de comando: prefixo do nome do arquivo, índice inicial e final. Em seguida, usamos
do { } for $ARGV[1] .. $ARGV[2]
a iteração para um intervalo específico de números. Digamos,$ARGV[1]
tinha 5 e$ARGV[2]
9, iteraríamos mais de 5,6,7,8 e 9.O que acontece em cada iteração nos chavetas? pegamos cada número especificado com
$_
e, usando asprintf()
função, criamos uma string m que emenda o prefixo (primeiro argumento da linha de comando$ARGV[0]
) e o número fornecido, mas preenche o número com 4 zeros (o que é feito peloprintf
estilo de formatação,%04d
part) e anexe o.c
sufixo. Como resultado, em cada iteração, criamos um nome comobspl0001.c
.Ele
open(my $fh, ">", $var);close($fh)
atua efetivamente comotouch
comando, criando um arquivo com nome especificado.Embora um pouco longo, ele tem um desempenho muito bom, de maneira semelhante ao script python de Jacob Vlijm. Também pode ser convertido em um script para facilitar a leitura, se desejado, da seguinte maneira:
Vamos testar isso. Primeiro o one-liner:
E agora o script:
awk
Outra abordagem seria
awk
, executando um loop for, redirecionando para um arquivo específico. A abordagem é semelhante ao one-liner perl com argumentos de linha de comando. Emboraawk
seja principalmente um utilitário de processamento de texto, ele ainda pode fazer uma programação interessante do sistema.fonte