Điểm:0

Làm cách nào để tôi nhận được tệp tập lệnh bash để yêu cầu lời nhắc trước khi tiếp tục bước tiếp theo?

lá cờ cn

Tôi có một tập lệnh một dòng để tạo tệp trong thư mục và mở tệp bằng Kwrite. Tôi muốn tập lệnh nhắc tên tệp được tạo và được mở bởi Kwrite. Hiện tại, nó thậm chí không mở thiết bị đầu cuối nhưng lý tưởng nhất là nên mở. Làm cách nào để đạt được điều này với đoạn mã sau?:

mèo > file.php & kwrite file.php

Ý định của tôi là dán các phần đã sao chép của một tệp để tạo một tệp mới.

vanadium avatar
lá cờ 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
lá cờ cn
@vanadium những gì bạn nói có nhiều ý nghĩa. Tôi đang chuyển đổi một số bố cục html sang các mẫu WordPress php và đang cố gắng giảm bớt sự lặp lại. Một trang WP bao gồm một số khối được bao gồm. Mỗi khối đánh dấu html cần được tích hợp với một số tệp php. Sau khi sao chép khối, tôi muốn tạo một tệp php mà không cần phải có nhiều màn hình và ứng dụng. Tôi mở một tệp php mới bằng. `printf '\n\n' > foo.php & kwrite foo.php` works but I want to be prompted to name each new file.
Điểm:3
lá cờ cn

Tùy chọn 1: Sử dụng tham số tập lệnh bash

Tạo kịch bản như vậy:

#!/bin/bash
( echo something > "$1".php && kwrite "$1".php ) &
xa lạ

Sau đó, bạn có thể gọi tập lệnh chuyển tên tệp sau lệnh. Sau đó, tập lệnh sẽ tự động tạo tệp có nội dung bạn muốn, thêm .php phần mở rộng tự động và mở tệp bằng kwrite, đồng thời giải phóng dấu nhắc đầu cuối để bạn nhập lệnh sau.

$1 trong tập lệnh là một biến tự động lấy từ tiếp theo trên dòng lệnh. ví dụ. nếu tập lệnh được gọi phpfile, sau đó lệnh

phpfile myfile

sẽ tạo và mở tệp myfile.php.

Tùy chọn 2. Sử dụng đọc chỉ huy

Các đọc lệnh cho phép nhắc người dùng nhập liệu tại dòng lệnh.

#!/bin/bash
echo "Vui lòng nhập tên tệp:"
đã đọc FILENAME
echo something > "$FILENAME".php && nohup kwrite "$FILENAME".php &
xa lạ

nohup có thể hữu ích nếu bạn đang làm việc từ thiết bị đầu cuối. Nó tách trình chỉnh sửa khỏi các quy trình đầu cuối, vì vậy nó sẽ không bị đóng nếu bạn đóng thiết bị đầu cuối.

Tùy chọn 3. Sử dụng công cụ đồ họa

Zenity, được cài đặt mặc định trong Ubuntu, hoặc Khộp thoại trên màn hình Plasma, cho phép bạn nhắc người dùng nhập liệu trong hộp thoại đồ họa để sử dụng trong tập lệnh. Bạn gọi những công cụ này trong một tập lệnh. Đầu vào của người dùng sau đó được đặt trong một biến. Lợi thế ở đây là sau đó bạn có thể gán tập lệnh cho một phím tắt. Sau đó, bạn có thể gọi nó bằng một lần nhấn phím để hộp thoại Zenity bật lên và để tập lệnh thực hiện công việc của nó.

#!/bin/bash
FILENAME=$(zenity --entry --title "Name request" --text "Vui lòng nhập tên tệp:")
echo something > "$FILENAME".php && nohup kwrite "$FILENAME".php &
xa lạ
Mark Lee avatar
lá cờ cn
Cảm ơn @vanadium. Bạn đặt tôi trên con đường dẫn đến giải pháp bằng mã thông báo. Câu trả lời của bạn tạo ra (các) tệp trống. Tập lệnh này nhắc tên: `#!/bin/bash echo "Vui lòng nhập tên tập tin" đọc tên tệp inf '\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
lá cờ cn
Thật vậy, zenity có thể sẽ là những gì bạn đang tìm kiếm. Để hoàn thiện, tôi cũng đã thêm tùy chọn "đọc" (nhập trên thiết bị đầu cuối) và tôi đã thêm các ví dụ cho tất cả các tùy chọn. m
Mark Lee avatar
lá cờ cn
đề xuất của bạn về Zenity đã đưa tôi đến với Kdialog và mở ra một khía cạnh hoàn toàn mới cho tập lệnh của tôi, đã tăng từ bảy dòng lên 27 với hộp danh sách radio mở ra các tùy chọn cho người dùng (tôi). Nó cũng làm cho việc xử lý lỗi dễ dàng hơn đối với người mới. Cảm ơn một lần nữa vì sự giúp đỡ của bạn.
vanadium avatar
lá cờ cn
Vui lòng chấp nhận câu trả lời nếu nó hữu ích cho bạn: đánh dấu vào hộp kiểm bên cạnh câu hỏi. Tôi cũng đã tham khảo Kdialog cho người dùng Plasma trong câu trả lời của mình.
Mark Lee avatar
lá cờ cn
Xong! Nghĩ rằng tôi đã chấp nhận nó nhưng có vẻ như tôi chỉ mới bình chọn. Thật tốt là bạn đã thêm Kdialog vì nó được cài đặt cùng với KDE. Tôi thậm chí đã thực hiện một README.md bây giờ vì điều này trông rất tiện lợi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.