Я не уверен, какова проблема. Я думал, что сообщил о dtach:
dtach является программой, которая эмулирует функцию отсоединения экрана. Это разработано, чтобы быть прозрачным и ненавязчивым; это старается не интерпретировать ввод и вывод между приложенными терминалами и программой под ее управлением. Следовательно, это работает лучше всего с полноэкранными приложениями, такими как emacs.
dtach предназначается для пользователей, которые хотят функцию отсоединения экрана без других издержек экрана. Это является крошечным, не пользуется многими библиотеками и остается вне пути как можно больше.
Я использую все это время. Экран является излишеством для меня. Кажется, что это могло бы работать на Вас также.
Править: пример использования
Вот то, что я делаю для переключения. Это могло бы быть слишком много стычки для Вас. Хотя, возможно, Вы могли сделать некоторые псевдонимы в своем файле дистанционного управления удара. dtach работает с файлами сокета. Таким образом, сначала я:
# dtach -A firsttask bash
Затем запустите любую задачу в оболочке удара. Затем оставьте его этим dtach "сессия"
Ctrl-\
Запустите другую dtach сессию:
# dtach -A secondtask bash
Используя-A, а не-a создаст сокет, если он не будет существовать. Если это будет существовать, то это не выполнит указанную команду, просто соединится.
Таким образом, если Вы хотите набор с определенными задачами, которые Вы всегда делаете, как Вы описывают, это возможно. Псевдонимы Bash сделают это удобным. У Вас будет одно нажатие клавиши (Ctrl-\) для разъединения, и затем псевдоним для соединения. Так еще несколько нажатий клавиш, чем экран.
Вы могли сделать псевдоним для
alias log='dtach -A tailtask tail -f /var/log/messages'
в Вашем .bashrc файле и затем просто входит перфорация в 'журнале' и хите. Если Вы dtach, это продолжает бежать.
Я точно так же, как dtach, потому что это является маленьким и я думал, что было настолько здорово, как я могу соединиться с тем же сокетом дважды. Это означает, что я могу сделать, "онлайн" отклоняют обучение моим друзьям, которые хотят использовать "новую прохладную вещь человечности".:P Можно, вероятно, сделать что-то похожее с экраном, который я предполагаю.
Я использую метод git pull
вместо клона. Скрипт будет выглядеть так:
mkdir repo
cd repo
git init
git config user.email "email"
git config user.name "user"
git pull https://user:password@github.com/name/repo.git master
Это не сохранит ваше имя пользователя или пароль в .git / config
. Однако, если не будут предприняты другие шаги, имя пользователя и пароль в виде открытого текста будут видны, пока процесс выполняется из команд, которые показывают текущие процессы (например, ps
).
Я бы сделал еще одно предложение (если вы не может использовать ssh) заключается в том, чтобы фактически использовать токен OAuth вместо имени пользователя / пароля в виде обычного текста, поскольку это немного более безопасно. Вы можете сгенерировать токен OAuth в настройках вашего профиля: https://github.com/settings/tokens .
Затем, используя этот токен, команда pull будет
git pull https://$OAUTH_TOKEN:x-oauth-basic@github.com/name/repo.git master
После осмотра десятки из ТАК отправляют, блоги, и т.д., я испытал каждый метод, и это - то, что я придумал. Это покрывает ВСЕ.
Это все пути и инструменты, которыми можно надежно аутентифицировать мерзавца для клонирования репозитория без интерактивной подсказки пароля .
От того, что спрашивают здесь или Ключи SSH, GIT_ASKPASS
, или git credential store
, использование менеджера Keychain ОС могло бы быть лучшим выбором.
, Так как GIT_ASKPASS является, вероятно, наименее понятыми из этих 3, я детализирую это здесь - и другие находятся в cheatsheet.
, Как создать GIT_ASKPASS
сценарий:
echo 'echo $MY_GIT_TOKEN' > $HOME/.git-askpass
, Как использовать его:
export MY_GIT_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export GIT_ASKPASS=$HOME/.git-askpass
git clone https://token@code.example.com/project.git
сценарий получает stdin в форме:
Password for 'scheme://host.tld':
сценарий принимает Мерзавца ENVs, такой как:
GIT_DIR=/Users/me/project/.git
GIT_EXEC_PATH=/usr/local/Cellar/git/2.19.0_1/libexec/git-core
GIT_PREFIX=
[еще 1134] детали в cheatsheet.
Вы можете ввести свои права подключения в файле ~ / .netrc
. Что-то вроде:
machine host.example.net
login bart
password eatmyshorts
Просто убедитесь, что изменили этот файл до 600. Если вы используете Windows, следующая ссылка может быть полезной: https://stackoverflow.com/questions/6031214/git- how-to-use-netrc-file-on-windows-to-save-user-and-password
Лично у меня есть тенденция использовать SSH-ключи для аутентификации (если вам, конечно, разрешено).
IMO лучшее решение - использовать специальный помощник GIT_ASKPASS
и передать пароль как другую переменную среды. Так, например, создайте файл git-askpass-helper.sh
как:
#!/bin/sh
exec echo "$GIT_PASSWORD"
, а затем запустите git clone https: // username @ hostname / repo
с переменными среды ] GIT_ASKPASS = / путь / к / git-askpass-helper.sh
и GIT_PASSWORD = ядерные коды запуска
.
Это имеет то преимущество, что пароль также не будет отображаться в списке процессов.
Храните свой токен или пароль в безопасном месте, например проход.
Затем используйте скрипт bash для сопоставления git host
с вашим хранилищем паролей, например:
#!/usr/bin/env bash
# assuming "get" action from git and a config like this
# git config --global credential.helper $XDG_BIN_HOME'/git_credentials_from_pass $@'
while IFS= read -r line
do
echo "$line"
if [[ "$line" =~ host=.*github.com.* ]]; then
echo "username=your_user_name"
echo "password=$(pass show token_github.com/your_username)"
#else ...
fi
done
Измените your_username
и token_github.com
так, как вы установили это вверх.