2009-08-31 13 views
5

Tôi đang tìm cách đưa đầu vào vào thiết bị đầu cuối của mình từ một tệp, nhưng khi đạt được EOF, tôi muốn đầu vào được trả về bàn phím của mình. Có cách nào để làm điều này với Bash (hoặc bất kỳ shell * nix thường có sẵn khác)?Chuyển hướng đầu vào tạm thời trong Bash

Chi tiết: Tôi đang gỡ lỗi chương trình máy chủ thực hiện một ngã ba để bắt đầu quá trình con. Mỗi lần tôi bắt đầu một phiên gỡ lỗi với gdb tôi phải gõ con theo chế độ-fork-mode. Tôi muốn sử dụng một số loại chuyển hướng đầu vào để có điều này được điền trước. Có những cách sử dụng khác mà tôi có thể nghĩ đến, vì vậy tôi thích giải pháp tổng quát hơn - vì vậy lý do câu hỏi này là không phải là về gdb.

Giải pháp: start-server.sh

#!/bin/bash 
cat run-server.txt - |/bin/bash 

chạy SERVER.txt

gdb ./Server 
set follow-fork-mode child 
run 

Trả lời

8

Bạn có thể làm điều này:

cat input_file - | program 

Điều đó sẽ nối input_file Tiếp theo stdin-program, mà tôi nghĩ là những gì bạn muốn.

+0

+1 Điều đó giải thích khi tôi sử dụng "| vi -" tôi nghĩ vậy. Tôi đã tìm thấy một nơi nào đó và không bao giờ nhìn vào ý nghĩa của nó. * Đây có thể là tấm vé. –

+0

Thật khó hiểu khi bạn sử dụng các dấu ngoặc nhọn như thể chúng là dấu ngoặc kép, vì chúng được sử dụng để chuyển hướng. –

+0

Dennis: Đó là một điểm tốt. Tôi sẽ thay đổi chúng. –

1

lẽ expect là những gì bạn muốn

+0

+1 Tôi có thể xem cách để giúp tôi tạo tập lệnh - Tôi sẽ xem xét những điều mong đợi có thể làm. Cảm ơn các liên kết. Cho đến nay tôi không nghĩ rằng nó trả lời câu hỏi của tôi. –

+0

http://expect.nist.gov/example/dislocate.man.html có vẻ đầy hứa hẹn –

+0

Nhìn chung, tôi nghĩ rằng đó là một công cụ tuyệt vời. Tôi sẽ phải thâm nhập vào nó - giải pháp của hàng xóm là phù hợp hơn với những gì tôi đã hỏi mặc dù. –

0

Có thể sử dụng một file trung gian ? Giả sử bạn muốn chạy các script myscript.sh:

INPUT_FILE=input.txt 
TEMP_FILE=`mktemp -t input` 
myscript.sh < $TEMP_FILE & 
cat $INPUT_FILE >> $TEMP_FILE 
cat >> $TEMP_FILE