Puncte:0

Cum obțin un fișier script bash pentru a solicita o solicitare înainte de a continua cu pasul următor?

drapel cn

Am un script pe o linie pentru a crea un fișier într-un director și a deschide fișierul cu Kwrite. Aș dori ca scriptul să solicite ca numele fișierului să fie creat și deschis de Kwrite. Momentan nici măcar nu deschide terminalul, dar în mod ideal ar trebui. Cum reușesc acest lucru cu următorul script?:

cat > fișier.php și kwrite fișier.php

Intenția mea este să lipesc porțiuni copiate ale unui fișier pentru a crea un fișier nou.

vanadium avatar
drapel cn
Better ask about what you want to achieve, rather than about help with a method you *think* will allow you to achieve your goal. For what you try here, you do not need a script. A simple `kwrite filename` will immediately open kwrite and have that save to `filename`.
Mark Lee avatar
drapel cn
@vanadium ceea ce spui are mult sens. Convertesc unele aspecte html în șabloane php WordPress și încerc să reduc repetarea. O pagină WP cuprinde mai multe blocuri incluse. Fiecare bloc de markup html trebuie integrat cu ceva php. După ce copiez blocul vreau să fac un fișier php fără a fi nevoie să am mai multe ecrane și aplicații. Deschid un nou fișier php cu. `printf'\n\n' > foo.php & kwrite foo.php` works but I want to be prompted to name each new file.
Puncte:3
drapel cn

Opțiunea 1: Utilizarea unui parametru de script bash

Creați scriptul astfel:

#!/bin/bash
( ecou ceva > "$1".php && kwrite "$1".php ) &
clar

Apoi, puteți apela scriptul trecând numele fișierului după comandă. Scriptul va crea apoi automat fișierul cu conținutul dorit, adăugând .php extensia automat și deschideți fișierul în kwrite, în timp ce eliberați promptul terminalului pentru a introduce următoarea comandă.

$1 în script este o variabilă care preia automat următorul cuvânt de pe linia de comandă. de exemplu. dacă scriptul este numit phpfile, apoi comanda

phpfișierul meu

va crea și deschide fișierul myfile.php.

Opțiunea 2. Folosind citit comanda

The citit comanda permite să solicite utilizatorului introducerea la linia de comandă.

#!/bin/bash
echo "Vă rugăm să introduceți numele fișierului: "
citește FILENAME
echo something > „$FILENAME”.php && nohup kwrite „$FILENAME”.php &
clar

nohup poate fi util dacă lucrați de la terminal. Detașează editorul de procesele terminalului, deci nu va fi închis dacă închideți terminalul.

Opțiunea 3. Utilizarea unui instrument grafic

Zenitate, instalat implicit în Ubuntu sau Kdialog pe desktop-ul Plasma, vă permit să solicitați utilizatorului introducerea într-un dialog grafic pentru utilizare în scripturi. Invocați aceste instrumente într-un script. Intrarea utilizatorului este apoi plasată într-o variabilă. Avantajul aici este că atunci puteți atribui script-ul unei taste de comandă rapidă. Apoi îl puteți invoca cu o singură apăsare de tastă pentru ca dialogul Zenity să apară și ca scriptul să-și facă treaba.

#!/bin/bash
FILENAME=$(zenity --entry --title "Solicitare nume" --text "Vă rugăm să introduceți numele fișierului:")
echo something > „$FILENAME”.php && nohup kwrite „$FILENAME”.php &
clar
Mark Lee avatar
drapel cn
Mulțumesc @vanadium. M-ai pus pe calea soluției cu tokenizarea. Răspunsul dvs. creează fișierele goale. Acest script solicită un nume: `#!/bin/bash echo „Vă rugăm să introduceți numele fișierului” citește numele fișierului printf '\n\n' > "$filename".php & kwrite "$filename".php` . My issue now is to execute the script via a double click. I'll install Zenity presently because it sounds from what you said exactly the solution.
vanadium avatar
drapel cn
Într-adevăr, zenity va fi probabil ceea ce cauți. Pentru completare, am adăugat și opțiunea „citește” (intrare pe terminal) și am adăugat exemple pentru toate opțiunile. M
Mark Lee avatar
drapel cn
recomandarea dvs. de la Zenity m-a condus la Kdialog și a deschis un aspect cu totul nou al scriptului meu, care a crescut de la șapte linii la 27 cu o casetă de listă radio care deschide opțiuni pentru utilizator (eu). De asemenea, a făcut mai ușoară gestionarea erorilor pentru un începător. Mulțumesc din nou pentru ajutor.
vanadium avatar
drapel cn
Vă rugăm să acceptați răspunsul dacă vă este util: bifați caseta de selectare de lângă întrebare. Am făcut referire și la utilizatorii Kdialog pentru Plasma în răspunsul meu.
Mark Lee avatar
drapel cn
Terminat! Am crezut că am acceptat deja, dar se pare că am votat doar favorabil. Bine că ați adăugat Kdialog deoarece este instalat cu KDE. Am făcut chiar și un README.md acum că arată atât de frumos.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.