como passar vários comandos para sqlite3 em um comando shell de um liner

1

Estou tentando salvar o conteúdo da área de transferência em um banco de dados sqlite. Banco de dados e tabelas criados.

Eu não quero que ele crie o arquivo journal em todas as alterações na área de transferência, então tentei passar PRAGMA journal_mode = OFF; flag. Mas é complicado passar esses comandos em um comando de um forro porque sqlite só aceita dois comandos como

sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"

funciona. Eu procurei por Q&A sites, alguns recomendam ecoar os comandos da seguinte maneira.

echo "PRAGMA journal_mode = OFF;" | sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"

Mas PRAGMA journal_mode = OFF; não entra em vigor dessa forma, embora funcione dentro do prompt de comando sqlite3 .

O que há de errado com o meu script de liner?

    
por kenn 12.10.2017 / 23:35

1 resposta

5

Não tenho certeza por que você quer usar o SQLite se não quiser o diário (já considerou o modo WAL muito mais rápido se a velocidade é uma preocupação?), mas você pode fornecer vários comandos separados por ponto e vírgula:

sqlite3 clipboard_archive.db "PRAGMA journal_mode = OFF; insert into cb (cb_context) values ('clipboard');"
    
por 13.10.2017 / 00:10