Existe uma maneira de usar aliases bash do meu arquivo .bash_aliases em scripts de shell?
Pensei em algo como incluir
source "$HOME/.bash_aliases
no meu roteiro
mas não funciona.
Existe uma maneira de usar aliases bash do meu arquivo .bash_aliases em scripts de shell?
Pensei em algo como incluir
source "$HOME/.bash_aliases
no meu roteiro
mas não funciona.
Supondo que eu tenha uma variável v="c d e f g"
e um arquivo com o conteúdo:
line1
$v
line3
Como posso fazer um script bash imprimir este arquivo com o conteúdo da variável na linha 2 como se eu estivesse usando um documento aqui como este:
#!/bin/bash
v="c d e f g"
cat << EOF
line1
$v
line3
EOF
Saída:
line1
c d e f g
line3
Como posso adicionar um caractere ao início de cada coluna que começa com um número:
Exemplo adicionando um c
a:
4 r4 8 8 4
Então eu recebo esta saída:
c4 r4 c8 c8 c4
Deve funcionar para um número variável de colunas.
Depois de atualizar o linux-kernel em um testing
sistema Debian:
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.1.0-7-amd64
Architecture: x86-64
Hardware Vendor: TOSHIBA
Hardware Model: PORTEGE R30-A
Firmware Version: Version 4.20
GNOME Shell: 43.4
Eu recebo as seguintes linhas impressas enquanto a imagem de inicialização está sendo gerada:
update-initramfs: Generating /boot/initrd.img-6.1.0-7-amd64
W: Possible missing firmware /lib/firmware/i915/skl_huc_2.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_huc_2.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_huc_4.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_huc_4.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_huc_4.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_huc_4.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cml_huc_4.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_huc_9.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/ehl_huc_9.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/ehl_huc_9.0.0.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_huc_7.9.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_huc_7.9.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/dg1_huc.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_huc_7.9.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_huc.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_huc_7.9.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_huc.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cml_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/ehl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/ehl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/dg1_guc_70.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_guc_69.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_guc_70.bin for module i915
W: Possible missing firmware /lib/firmware/i915/adlp_guc_69.0.3.bin for module i915
W: Possible missing firmware /lib/firmware/i915/adlp_guc_70.1.1.bin for module i915
W: Possible missing firmware /lib/firmware/i915/adlp_guc_70.bin for module i915
W: Possible missing firmware /lib/firmware/i915/dg2_guc_70.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_dmc_ver1_09.bin for module i915
W: Possible missing firmware /lib/firmware/i915/tgl_dmc_ver2_12.bin for module i915
W: Possible missing firmware /lib/firmware/i915/rkl_dmc_ver2_03.bin for module i915
W: Possible missing firmware /lib/firmware/i915/dg1_dmc_ver2_02.bin for module i915
W: Possible missing firmware /lib/firmware/i915/adls_dmc_ver2_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/adlp_dmc_ver2_16.bin for module i915
W: Possible missing firmware /lib/firmware/i915/dg2_dmc_ver2_07.bin for module i915
Alguém sabe quais pacotes precisam ser instalados para fornecer ao meu sistema os drivers/módulos de kernel apropriados?
Eu tenho um arquivo de texto no seguinte formato:
c4 c4 r4 c8 c8 e2 e2 c1
c4 c4 r4 c8 c8 c1 e2 e2
c4 c4 r4 e2 e2 c8 c8 c1
c4 c4 r4 e2 e2 c1 c8 c8
c4 c4 r4 c1 e2 e2 c8 c8
c4 c4 r4 c1 c8 c8 e2 e2
c4 c4 c8 c8 r4 e2 e2 c1
c4 c4 c8 c8 r4 c1 e2 e2
c4 c4 c8 c8 e2 e2 r4 c1
c4 c4 c8 c8 e2 e2 c1 r4
c4 c4 c8 c8 c1 e2 e2 r4
c4 c4 c8 c8 c1 r4 e2 e2
c4 c4 e2 e2 c8 c8 r4 c1
c4 c4 e2 e2 c8 c8 c1 r4
c4 c4 e2 e2 r4 c8 c8 c1
Quero remover todos os números das colunas que se repetem dentro da linha, mas sempre manter a primeira abordagem, também quando o valor foi alterado por outro número - para que a saída fique assim:
c4 c r c8 c e2 e c1
c4 c r c8 c c1 e2 e
c4 c r e2 e c8 c c1
c4 c r e2 e c1 c8 c
c4 c r c1 e2 e c8 c
c4 c r c1 c8 c e2 e
c4 c c8 c r4 e2 e c1
c4 c c8 c r4 c1 e2 e
c4 c c8 c e2 e r4 c1
c4 c c8 c e2 e c1 r4
c4 c c8 c c1 e2 e r4
c4 c c8 c c1 r4 e2 e
c4 c e2 e c8 c r4 c1
c4 c e2 e c8 c c1 r4
c4 c e2 e r4 c8 c c1
Os números possíveis são (1-64)
Supondo que eu tenha os valores A B C D E
e oito lugares 1 2 3 4 5 6 7 8
. Como posso obter todas as combinações possíveis impressas com repetições de duas e três vezes?
Exemplo:
1 2 3 4 5 6 7 8
_______________
A A B B C C D E
A B B C C D D E (and so on...)
A A A B B C D E
A B B B C C D E (and so on...)
Qual combinação é seguida por qual não é mais importante. Não deve haver nenhum valor ausente como AABBCCDD
(onde E
está faltando)
Depois de aplicar uma atualização recente no meu sistema Debian, não consigo fazer login com minha conta de usuário. A senha não é reconhecida. Fazer login sem GUI usando o mesmo usuário e senha funciona bem.
Operating System: Debian GNU/Linux bookworm/sid
Kernel: Linux 5.16.0-5-686-pae
Architecture: x86
Hardware Vendor: Lenovo
Hardware Model: Rev 1.
Gnome-shell: 41.4
Alguém sabe como consertar isso?
apt-listbugs
Instalei e não recebi nenhum aviso antes de aplicar a atualização .
Se eu tiver um arquivo de texto com uma lista estruturada como esta:
#linux
##audio
###sequenzer
####qtractor
###drummachine
####hydrogen
##scores
###lilypond
###musescore
##bureau
###kalender
####calcurse
###todo
####tudu
Como posso imprimi-lo tree
como na linha de comando?
linux/
├── audio
│ ├── drummachine
│ │ └── hydrogen
│ └── sequenzer
│ └── qtractor
├── bureau
│ ├── kalender
│ │ └── calcurse
│ └── todo
│ └── tudu
└── scores
├── lilypond
└── musescore
Existe um aplicativo que estou perdendo?
Acabei de instalar um novo sistema Debian do Testing-Repository :
Operating System: Debian GNU/Linux bookworm/sid
Kernel: Linux 5.15.0-2-amd64
Architecture: x86-64
por algum motivo quando eu faço login pois root
não tenho certos comandos como shutdown
ou reboot
disponíveis.
Como faço para corrigir isso? Está faltando algum pacote?
Se eu tivesse um arquivo no seguinte formato:
line1 column1
line2 columnA
line3 column1A
exclude this
line5 column2
line6 columnB
line7 column2B
Eu quero trocar as colunas, então column*
é impresso antes line*
. awk
Eu uso um comando simples como este: awk '{print $2 " " $1}'
e recebo uma saída como esta:
column1 line1
columnA line2
column1A line3
this exclude
column2 line1
columnB line2
column2B line3
agora eu quero que a linha com exclude
seja impressa, mas não recorrida (não é necessariamente a linha 3). Eu poderia usar este comando para ignorar as linhas: awk '/exclude/{next}{print $2 " " $1}'
e recebo uma saída sem a linha excluída:
column1 line1
columnA line2
column1A line3
column2 line1
columnB line2
column2B line3
Como posso dizer awk
para imprimir essas linhas que contêm, exclude
mas não recorrer às colunas? Então eu teria uma saída assim:
column1 line1
columnA line2
column1A line3
exclude this
column2 line1
columnB line2
column2B line3
Eu tenho uma lista numerada de arquivos como este:
01_file_name.log
01_file_name.txt
02_file_name.log
02_file_name.txt
03_file_name.log
03_file_name.txt
04_file_name.log
04_file_name.txt
05_file_name.log
05_file_name.txt
Eu quero inserir novos arquivos para todos 03*
e 04*
arquivos. Então, a partir do número 03
de wards, todos os arquivos precisam ser movidos/renomeados com seu número inicial aumentado em 2, então a lista ficaria assim:
01_file_name.log
01_file_name.txt
02_file_name.log
02_file_name.txt
05_file_name.log
05_file_name.txt
06_file_name.log
06_file_name.txt
07_file_name.log
07_file_name.txt
Estou pensando em algo como:
bash script.sh 03 02
while 03
on $1
é o número do nome do arquivo para começar e 02
no $2
número a ser adicionado. Tentei fazer isso com um aninhado for-loop
, mas tive que desistir da combinação de usar um contador ((++))
para fazer o loop executar apenas os arquivos do número fornecido nas alas.
Eu uso nano
como meu editor padrão para um tipo de arquivo que não possui destaque de sintaxe para LilyPond . Não é nada que eu realmente precise, embora eu esteja perdendo muitos caracteres de espaço em branco no final das linhas. Claro que eu poderia removê-los em lote como mencionado aqui em Tirar os espaços em branco dos arquivos .
Mas não deve ser muito difícil habilitar esse recurso de alguma forma, para que eu possa fazer um código um pouco mais limpo do zero.
Alguém sabe como fazer isso?
Assim como nano
para scripts de shell.
Eu tenho um monte de arquivos LilyPond no seguinte formato:
\score {
\new StaffGroup = "" \with {
instrumentName = \markup { \bold \huge \larger "1." }
}
<<
\new Staff = "celloI" \with { midiInstrument = #"cello" }
\relative c {
\clef bass
\key c \major
\time 3/4
\tuplet 3/2 4 {
c8(\downbow\f b c e g e)
} c'4 | %01
\tuplet 3/2 4 {c,8( b c e f a) } c4 | %02
\tuplet 3/2 4 { g,8( d' f g f d) } b'4 | %03
}
>>
\layout {}
\midi {}
}
Como alguém extrairia o \relative c {...}
bloco em um novo arquivo, então ficaria assim:
\relative c {
\clef bass
\key c \major
\time 3/4
\tuplet 3/2 4 {
c8(\downbow\f b c e g e)
} c'4 | %01
\tuplet 3/2 4 {c,8( b c e f a) } c4 | %02
\tuplet 3/2 4 { g,8( d' f g f d) } b'4 | %03
}
Uma correção do recuo não é necessariamente necessária neste caso. Isso seria uma tarefa awk
ou ? csplit
Como seria?
Eu tenho um arquivo de texto que tem o seguinte formato e quero adicionar uma linha vertical após essas linhas, seguida de números crescentes:
c4-1 d e c
c d e c
e-2 f g2
e4 f g2
g8-4\( a-5 g f\) e4 c
g'8\( a g f\) e4 c
c-1 r c2
c4 r c2
Eu alcanço a linha e a numeração com o seguinte while-loop
:
#!/bin/bash
while read -r line; do
if [ -z "$line" ]; then
echo
continue
fi
n=$((++n)) \
&& grep -vE "^$|^%" <<< "$line" \
| sed 's/$/\ \|\ \%'$(("$n"))'/'
done < file
e obtenha uma saída como:
c4-1 d e c | %1
c d e c | %2
e-2 f g2 | %3
e4 f g2 | %4
g8-4\( a-5 g f\) e4 c | %5
g'8\( a g f\) e4 c | %6
c-1 r c2 | %7
c4 r c2 | %8
agora eu quero que a adição seja alinhada verticalmente e obtenha uma saída como esta:
c4-1 d e c | %1
c d e c | %2
e-2 f g2 | %3
e4 f g2 | %4
g8-4\( a-5 g f\) e4 c | %5
g'8\( a g f\) e4 c | %6
c-1 r c2 | %7
c4 r c2 | %8
isso significaria que eu preciso de alguma forma obter o comprimento da linha mais longa (aqui: 21 caracteres) e o comprimento da linha de cada linha e adicionar a diferença com espaços, como eu poderia conseguir isso?
Existe uma maneira de git
manipular um link simbólico como se fosse um arquivo. Se eu normalmente adicionar um link simbólico como git add symlink
, git apenas armazena/controla o caminho para o arquivo, não o arquivo vinculado.
É possível git
manipular um link simbólico como se fosse o próprio arquivo vinculado?
Desde algumas atualizações recentes no meu sistema Debian, sinto o ponteiro do mouse desaparecer na frente dos fundos do Gnome, ou seja, a barra superior, a área de trabalho e a janela do sistema. Assim que o ponteiro é movido na frente de uma janela de qualquer aplicativo, ele aparece novamente.
Eu fiz algumas pesquisas sobre este tópico e não encontrei mais do que o necessário com um dos seguintes pacotes:
xserver-xorg-input-mouse
installed version: 1:1.9.3-1
e ou:
mutter
installed version: 3.30.2-9
Mais algumas informações do sistema:
Operating System: Debian GNU/Linux bullseye/sid
Kernel: Linux 5.2.0-2-686-pae
Architecture: x86
GNOME shell: 3.30.2
Alguém sabe como resolver esse problema?
Eu tenho uma string como:
schedule="0.25"
e eu quero substituir o 0.25
digamos por0.50
Eu poderia conseguir isso com:
sed 's/\"....\"/\"0\.50\"/g'
o problema é que não sei o valor entre aspas duplas e, portanto, não sei o comprimento. Pode ser qualquer valor, mas sempre será precedido por schedule=
.
Eu tenho um arquivo csv assim:
Row 1,1,4.50,
Row 2,8,0.30,
Row 3,14,0.30,
Row 4,2,2.50,
Row 5,20,0.30,
Eu quero multiplicar a segunda coluna pela terceira e adicionar o resultado como um quarto.
Eu tenho este comando awk simples:
awk -F',' '{print $1 "," $2 "," $3 "," $2 * $3}' file
e eu recebo:
Row 1,1,4.50,4.5
Row 2,8,0.30,2.4
Row 3,14,0.30,4.2
Row 4,2,2.50,5
Row 5,20,0.30,6
existe uma maneira de formatar a saída na última coluna como [N.NN]?
então eu teria uma saída assim:
Row 1,1,4.50,4.50
Row 2,8,0.30,2.40
Row 3,14,0.30,4.20
Row 4,2,2.50,5.00
Row 5,20,0.30,6.00
se eu tiver um arquivo csv no seguinte formato:
column1,column2,column3,column4,column5,column6,column7,column8
e quero awk
imprimir apenas as colunas 2 a 7 que eu usaria:
awk -F',' '{print $2 "," $3 "," $4 "," $5 "," $6 "," $7}' file.csv
e pegue:
column2,column3,column4,column5,column6,column7
existe uma maneira de concatenar as colunas 2-7 para simplificar o comando. Como estou pensando em um arquivo com um pouco mais de colunas, meu awk
comando ficaria terrivelmente longo.
Estou usando o tor
pacote que vem com a distribuição debian-testing:
Package: tor
Version: 0.3.5.8-1
Estou frequentemente usando-o em combinação com proxychains
como:
proxychains -q curl -s -L https://ipecho.net/plain
como faço para alterar a rota, para obter um novo IP da linha de comando?