我正在嘗試製作一個 Bash 腳本,該腳本打開 tmux 並運行幾行命令,然後將其分離,以便在完成後我最終進入終端。我該如何解決?嘗試了一切。
≈#!/bin/bash
cd ~/data
mkdir $1
這是我到目前為止所得到的。運行 Bash 腳本時,我輸入:
myScript folder_name https://myurl.com
現在我想啟動 tmux 會話並運行:
screamingfrogseospider \
--crawl $2 \
--headless \
--save-crawl \
--output-folder ~/data/$1 \
--timestamped-output \
但是,如何製作一個腳本來打開 tmux 並運行這些行,並關閉也運行分離的 tmux,以便我最終進入終端機視窗?
答案1
這應該有效:
#!/bin/bash
sessname="newsess"
cd ~/data
mkdir "$1"
# Create a new session named "$sessname", and run command
tmux new-session -d -s "$sessname"
tmux send-keys -t "$sessname" "screamingfrogseospider --crawl $2 --headless --save-crawl --output-folder ~/data/$1 --timestamped-output" Enter
# Attach to session named "$sessname"
#tmux attach -t "$sessname"
這將創建一個 tmux 會話,其名稱設置在變數中$sessname
- 如果您願意,您也可以將其用作$1
會話名稱。然後它接受您的 2 個參數,使用給定名稱建立 tmux 會話並執行命令。
為了使腳本更具彈性,您應該添加檢查以查看是否已存在,如果存在~/data/$1
則不執行該命令。mkdir
您也可以檢查它是否有 2 個格式正確的參數等。
預設情況下,它不會附加到會話,因此您將返回到 shell。取消註解要附加的最後一行,或手動執行它:(如果更改 的值,請取代 newsess $sessname
)
tmux attach -t newsess
請告訴我它是否適合您。