Chạy terminator trong thư mục cần thiết và sau đó chạy lệnh cần thiết


9

Tôi muốn mở Terminator trong một thư mục cụ thể, ví dụ /home/downloads/, và sau đó chạy một lệnh.

Tôi đã thực hiện phần đầu tiên bằng "lệnh tùy chỉnh" này: cd /home/downloads; bash Terminator bây giờ bắt đầu trong thư mục này, nhưng làm thế nào tôi có thể làm phần thứ hai?

Bây giờ terminator đã được bắt đầu trong thư mục tải xuống, tôi muốn chạy bất kỳ lệnh nào tôi muốn, ví dụ lshoặc rakelệnh hoặc sử dụng một số bí danh làm lệnh. Tôi có thể làm cái này như thế nào?

Tôi nhấn nút chuột phải trong terminator và chọn Tham số, sau đó Bố trí, sau đó tôi thêm văn bản trong phần lệnh Tùy chỉnh.

Tất cả những điều này phải được thực hiện tự động sau khi bắt đầu kết thúc.


Lệnh nào bạn muốn chạy? Chỉ cần chạy nó. Bạn có muốn điều này xảy ra tự động mỗi khi bạn mở terminator? Vui lòng chỉnh sửa câu hỏi của bạn và tôi) làm rõ những gì bạn muốn làm và ii) cho chúng tôi biết chính xác cách bạn thiết lập "lệnh tùy chỉnh" này, có phải trong tùy chọn của terminator không?
terdon

Có tôi muốn lệnh đầu tiên và sau đó thứ hai tự động chạy sau khi tôi kết thúc chạy, nhưng bây giờ tôi chỉ biết cách chạy lệnh đầu tiên và nó đã hoạt động, nhưng không biết làm thế nào để chạy lệnh thứ hai. Lệnh đầu tiên là: "cd" cho bất kỳ danh mục nào và lệnh thứ hai phải là bất kỳ tôi muốn, trong danh mục này hay không. Tôi chỉnh sửa câu hỏi của tôi. Xin lỗi vì ngôn ngữ xấu xí của tôi.
Asq

Câu trả lời:


4

Chạy cd /home/downloads; exec bashnhư lệnh tùy chỉnh. (Nội dung execđảm bảo bashsẽ là con của trình giả lập thiết bị đầu cuối; nếu không có nó, nó có thể trở thành cháu.) Bạn có thể chạy terminator -e 'cd /home/downloads; exec bash'trên dòng lệnh.

Bạn không thể sử dụng các bí danh trong lệnh tùy chỉnh vì các bí danh của bạn được xác định bởi ~/.bashrc, nhưng tệp đó chỉ được tải bởi các vỏ tương tác, chứ không phải bởi trình bao kịch bản được sử dụng như một chất keo ở đây giữa trình giả lập thiết bị đầu cuối và trình bao kịch bản. Nếu bạn muốn sử dụng bí danh, bạn cần tải chúng một cách rõ ràng. Nếu bạn giữ chúng trong một tệp riêng biệt, đó sẽ là một cái gì đó như

. ~/.bash_aliases; cd /home/downloads; exec bash

hoặc trên dòng lệnh

terminator -x bash -c '. ~/.bash_aliases; cd /home/downloads; exec bash'

Nếu bí danh của bạn nằm trong ~/.bashrc, thì hãy sử dụng . ~/.bashrc, nhưng hãy cẩn thận rằng có thể có những thứ trong .bashrcđó gây ra lỗi vì trình bao không tương tác. Nếu điều này xảy ra, giải pháp đơn giản nhất là chia bí danh của bạn (và các hàm và bất kỳ cài đặt nào khác mà bạn muốn sử dụng trong mã keo) thành một tệp riêng biệt và sử dụng .để bao gồm các từ đó .bashrc.


3

Tôi gặp vấn đề tương tự khi kích hoạt môi trường ảo với Terminator .

Mẹo nhỏ là làm mọi thứ chỉ bằng lệnh "một" : bash. Lợi dụng của nó -itùy chọn (tương tác) và sử dụng một tùy chỉnh --rcfiletrong đó PROMPT_COMMANDđược thiết lập để bất cứ điều gì chúng tôi muốn thực hiện. Kết quả sẽ như thế này:

command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="your commands; go here; unset PROMPT_COMMAND"') -i"

Đơn giản chỉ cần thay thế your commands; go here;bằng các lệnh thực tế của bạn. Xem câu trả lời này để được giải thích .


Bất cứ ý tưởng tại sao lệnh tôi chỉ định không thể được thoát bằng ctrl + c?
Flowkap

2

Chỉ cần thêm lệnh khác giống như cách bạn đã thêm lệnh đầu tiên. Ví dụ: để chạy ls:

cd /home/downloads; ls; bash

Bạn có thể thêm tùy chọn này vào tùy chọn "lệnh" trong hồ sơ của bạn:

nhập mô tả hình ảnh ở đây

Lý do mà bạn không nhận được rakelà nó không nằm trong đường dẫn mặc định. Để sử dụng nó, bạn cần chỉ định đường dẫn. Vì vậy, trước tiên hãy chạy lệnh này trong thiết bị đầu cuối của bạn:

type rake

Điều đó sẽ trả lại một cái gì đó như /foo/bin/rake. Đó là con đường bạn cần. Lấy nó và thêm nó vào lệnh Tùy chỉnh ở trên:

cd /home/downloads; /foo/bin/rake; bash

Điều này sẽ không làm việc cho bí danh. Bí danh được thiết lập bởi vỏ của bạn và sẽ không có sẵn ở đây. Một cách giải quyết là sử dụng các tập lệnh thay thế. Vì vậy, nếu bạn có một bí danh như thế này:

alias foo="command1 argument2"

Tạo một kịch bản, gọi nó foo.shvà lưu nó vào /home/youruser/bin, với những nội dung sau:

#!/usr/bin/env bash
command1 argument2

Và làm cho nó thực thi:

chmod a+x /home/username/bin/foo.sh

Sau đó, trong phần "Lệnh tùy chỉnh", sử dụng:

cd /home/downloads; /home/username/bin/foo.sh; bash

Có tôi biết điều này và lệnh "ls" hoạt động, nhưng 1. ví dụ: lệnh "rake" không hoạt động và lỗi hiển thị đầu cuối: "/ bin / bash: rake: lệnh không tìm thấy" 2. Tôi có một số bí danh và ví dụ "cd / home / download; 'aliasname'; bash" cũng không hoạt động, thiết bị đầu cuối hiển thị lỗi tương tự
Asq

@Asq tốt, vâng, đó là lý do tại sao tôi yêu cầu bạn cho chúng tôi biết bạn muốn chạy lệnh nào. Vui lòng chỉnh sửa câu hỏi của bạn và đưa ra ví dụ cụ thể. Bí danh sẽ không hoạt động, bạn có thể quên điều đó, nhưng rakenếu bạn sử dụng đường dẫn đầy đủ /path/to/rake.
terdon

Tôi phải chỉnh sửa câu hỏi chính của tôi? Và ý của bạn là "nếu bạn sử dụng toàn bộ đường dẫn / đường dẫn / đến / rake"? Tôi cd vào thư mục nơi tôi luôn sử dụng rake và nó hoạt động, nhưng "cd / path / to / rake; rake; bash" không hoạt động
Asq

@Asq có, xin vui lòng chỉnh sửa câu hỏi ban đầu của bạn. Đừng cd /path/to/rake; rake; bashlàm /path/to/rake; rake; bash.
terdon

:( tôi sử dụng lệnh rake khi tôi trong thư mục / home / 123. Tôi thêm ngay vào lệnh tùy chỉnh này: "/ home / 123; rake; bash" nhưng bảng điều khiển hiển thị cho tôi 2 lỗi: 1. / bin / bash: / home / 123: Đây là một danh mục 2. / bin / bash: rake: lệnh không tìm thấy
Asq

1

Nếu bạn nhấp chuột phải vào cửa sổ Terminator đang mở, bạn có thể chọn "Tùy chọn". Chọn "Hồ sơ" và từ đó, tab "Lệnh". Có một hộp kiểm có tiêu đề "Chạy lệnh tùy chỉnh thay vì vỏ của tôi."

Tôi tin rằng đó là những gì bạn đang tìm kiếm.


1

Chỉ không sử dụng ' command =' để thay đổi thư mục. Sử dụng nó cho lệnh thực tế của bạn!

Khi chỉnh sửa .config/terminator/config, chỉ cần xác định

  • ' directory = <dir>' khi bạn muốn thiết bị đầu cuối tự động cd vào một thư mục đã cho, hoặc
  • ' command = <cmd>; <your_shell>' khi bạn muốn một lệnh tùy chỉnh thực thi và không chỉ đơn giản là thay đổi thư mục

Ví dụ:

  • Nếu bạn chỉ muốn thiết bị đầu cuối cd vào <dir>lúc khởi động, thì chỉ định 'thư mục' và để trống 'lệnh':

    [[terminal7]]]
    directory = /home/dan/src/wmc
    order = 1
    parent = child3
    profile = default
    type = Terminal
    uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
  • Nếu bạn chỉ muốn thực thi một lệnh tùy chỉnh, chỉ xác định lệnh:

    [[terminal7]]]
    command = /home/dan/mine/my-custom-command
    order = 1
    parent = child3
    profile = default
    type = Terminal
    uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
  • Nếu bạn muốn cả hai cd vào lệnh DIR và thực thi lệnh:

    [[terminal7]]]
    directory = /home/dan/dl-dir
    command = /home/dan/mine/my-custom-command-to-run-in-dlDIR
    order = 1
    parent = child3
    profile = default
    type = Terminal
    uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.