Вам лучше проверить документацию .
Возможно, проблема в URL. Это должен быть косая черта после порта и перед именем базы данных.
String jdbcUrl = "jdbc:mysql://localhost:3306/hb_student_tracker?useSSL=false&serverTimezone=UTC";
Рассмотрите использование символьных ссылок. У меня есть a ~/work/
каталог, куда я помещаю символьные ссылки на все свои текущие проекты.
Можно также использовать переменные оболочки:
c='/Users/User/.../.../.../.../.../Dev/C'
Затем:
cd "$c"
Управление требует и быстрого создания и удаления каталогов. Создайте много каталогов:
mkdir -p user/new_dir/new/_dir/.../new_dir
Удалите рекурсивно много каталогов (быть очень осторожным, когда Вы будете в более низких каталогах!):
rm -r dir/.../new_dir/
Для дополнительных материалов для чтения шпаргалка может помочь Вам:
http://www.scribd.com/doc/2082838/Bash-Command-Line-History-Cheat-Sheet
Это содержит некоторые самородки, но мне скорее трудно читать. Я не могу получить команды, как Meta +>, работая. Они, вероятно, помогают Вам в навигации по длинным каталогам.
Изучить pushd
, который позволяет Вам поддерживать стопку каталогов, которые можно продвинуть на, поп прочь, или перестроение.
Это могло бы также быть полезной функцией, чтобы вставить Ваш .bashrc
; это перемещает вверх или много каталогов, или к именованному каталогу, т.е. если Вы находитесь в /a/b/c/d/
можно сделать up 3
или up a
заканчиваться в a
.
Я понятия не имею, где я нашел это; если Вы знаете, прокомментируйте или добавьте атрибуцию.
function up()
{
dir=""
if [ -z "$1" ]; then
dir=..
elif [[ $1 =~ ^[0-9]+$ ]]; then
x=0
while [ $x -lt ${1:-1} ]; do
dir=${dir}../
x=$(($x+1))
done
else
dir=${PWD%/$1/*}/$1
fi
cd "$dir";
}
Если Вы хотите переключиться на zsh, это очень легко - просто используют "псевдоним-g" (глобальный псевдоним, т.е. псевдоним, который работает где угодно в команде, не только первом слове).
# alias -g c=/my/super/long/dir/name
# cd c
# pwd
/my/super/long/dir/name
В ударе я думаю самая близкая вещь, которую Вы получите к 'искажению' стиля, должен записать функцию:
function ccd {
case "$1" in
c) cd /blah/blah/blah/long/path/number/one ;;
foo) cd /blah/blah/totally/different path ;;
"multiword phrase") cd /tmp ;;
esac
}
Это означает использовать что-то другое, чем "CD" как команда, когда Вы хотите ярлык, но кроме которого, это гибко; можно ли также добавить "ls" к функции так, чтобы она всегда напомнила Вам, что находится в каталоге после Вас CD и т.д.
(Обратите внимание, что для использования аргумента многословного как выше необходимо заключить его в кавычки на командной строке, как это:
ccd "multiword phrase"
таким образом, это не действительно все что удобный. Но это будет работать, если Вы должны будете.)
Существуют фундаментальные известные идеи, как создание псевдонимов:
alias cdfoo="cd /long/path/to/foo"
и также "отбрасывание гальки"
export foo=/long/path/to/foo
и также создание "основанного на проекте" вышеупомянутого. Я использую 'билет, базирующийся' каталоги.
topdir=ticket_12345
alias cdfoo="cd home/me/sandbox/$topdir/long/path/to/foo"
export foo="/home/me/sandbox/$topdir/long/path/to/foo"
но вне всего этого, иногда просто удобно перейти назад и вперед туда, где Вы недавно были, с помощью меню командной строки. (pushd и popd являются громоздкими, по моему скромному мнению).
Я использую (упомянутый ниже) acd_func.sh. После того, как определенный, можно сделать
CD-
видеть список недавних каталогов, с числовым меню
CD-2
перейти к второму новому каталогу.
Очень простой в использовании, очень удобный.
Вот код:
# Insert into .profile, .bash_profile or wherever
# acd_func 1.0.5, 10-nov-2004
# petar marinov, http:/geocities.com/h2428, this is public domain
cd_func ()
{
local x2 the_new_dir adir index
local -i cnt
if [[ $1 == "--" ]]; then
dirs -v
return 0
fi
the_new_dir=$1
[[ -z $1 ]] && the_new_dir=$HOME
if [[ ${the_new_dir:0:1} == '-' ]]; then
#
# Extract dir N from dirs
index=${the_new_dir:1}
[[ -z $index ]] && index=1
adir=$(dirs +$index)
[[ -z $adir ]] && return 1
the_new_dir=$adir
fi
#
# '~' has to be substituted by ${HOME}
[[ ${the_new_dir:0:1} == '~' ]] && the_new_dir="${HOME}${the_new_dir:1}"
#
# Now change to the new dir and add to the top of the stack
pushd "${the_new_dir}" > /dev/null
[[ $? -ne 0 ]] && return 1
the_new_dir=$(pwd)
#
# Trim down everything beyond 11th entry
popd -n +11 2>/dev/null 1>/dev/null
#
# Remove any other occurence of this dir, skipping the top of the stack
for ((cnt=1; cnt <= 10; cnt++)); do
x2=$(dirs +${cnt} 2>/dev/null)
[[ $? -ne 0 ]] && return 0
[[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
if [[ "${x2}" == "${the_new_dir}" ]]; then
popd -n +$cnt 2>/dev/null 1>/dev/null
cnt=cnt-1
fi
done
return 0
}
alias cd=cd_func
if [[ $BASH_VERSION > "2.05a" ]]; then
# ctrl+w shows the menu
bind -x "\"\C-w\":cd_func -- ;"
fi
Вы могли бы хотеть рассмотреть использование сценария как это в Вашем .bashrc. Я использовал его ежедневно с тех пор, как я читал то сообщение. Довольно чертовски полезный.
Пользователь jhs предложил Pushd и Popd-commands. Я совместно использую здесь некоторые свои сценарии Bash, которые я нашел в Электроинструментах Unix - книга. Они очень прохладны, когда Ваши каталоги получают слишком длинное :)
#Moving fast between directories
alias pd=pushd
alias pd2='pushd +2'
alias pd3='pushd +3'
alias pd4='pushd +4'
Команда 'pushd +n' "поворачивает" стек. Обратная команда 'popd +n' удаляет n запись стека. Если Ваш стек становится слишком длинным, используйте 'повторение n popd'. Для примера Ваш стек является 12 каталогами долго:
repeat 11 popd
Когда Вы захотите видеть свой стек, запишите 'pushd'. Для дополнительных материалов для чтения я рекомендую книгу на страницах 625-626.
Однажды я cd'ed в такой длинный каталог, у меня есть это в истории. Затем я просто ввожу Ctrl-R
для" (reverse-i-search)" подсказка и тип в нескольких символах, как Dev/C
это появляется где-нибудь в пути, и это показывает мне команду, что я дал тогда, и я могу легко перейти к нему снова.
Это работает вполне прилично на практике. Поскольку это не найдет запись, если бы Вы не ввели тот путь в течение достаточно долгого времени, который означал бы делать, работа для создания вещей легче, вероятно, не будет стоить времени. Но это определенно найдет его при использовании его недавно. Который является точно, в чем я нуждаюсь.
В некотором роде это - самоорганизующийся кэш для долгих команд и путей :)
Вероятно, самое легкое решение состоит в том, чтобы использовать:
alias cdc='cd /Users/User/.../.../.../.../.../Dev/C'
alias cdbin='cd /Users/User/.../.../.../.../.../Dev/bin'
alias cdtst='cd /Users/User/.../.../.../.../.../Dev/tst'
если Вы только действительно работаете над одним проектом за один раз. Если Вы работаете над несколькими проектами, у Вас мог бы быть другой псевдоним, который изменил каталоги в тех псевдонимах выше.
Так, Вы использовали бы что-то как:
proj game17
cdc
make
proj roman_numerals
cdbin
rm -f *
proj game17 ; cdc
Так как это - полезная вещь иметь, я решил соединить ряд сценариев, которые могут использоваться. Они являются все базирующимися aroung конфигурационный файл, который Вы помещаете в свой корневой каталог, наряду с псевдонимами для определения источника сценариев. Файл "~/.cdx_data"
имеет форму:
scrabble:top=~/dev/scrabble
scrabble:src=~/dev/scrabble/src
scrabble:bin=~/dev/scrabble/bin
sudoku:top=~/dev/scrabble
sudoku:src=~/dev/scrabble/src
sudoku:bin=~/dev/scrabble/bin
sudoku:data=~/dev/scrabble/data
и перечисляют все соответствующие проекты (царапните и sodoku в этом случае), и их каталоги (который может отличаться для каждого проекта, но имеют вершину, мусорное ведро, src и данные в этом примере).
Первое действие должно инициализировать материал, таким образом поместить:
. ~/.cdx_init
в конце Вашего .bash_profile и создают "~/.cdx_init"
файл как:
alias cdxl='. ~/.cdx_list'
alias projl='. ~/.cdx_projlist'
alias cdx='. ~/.cdx_goto'
alias proj='. ~/.cdx_proj'
Это настраивает четыре псевдонима для определения источника файлов, которые я буду включать ниже. Использование:
cdxl - List all directories in current project.
projl - List all projects.
proj - Show current project.
proj <p> - Set current project to <p> (if allowed).
cdx - Show current project/directory and expected/actual real
directory, since they can get out of sync if you mix cd and cdx.
cdx . - Set actual real directory to expected directory (in other words,
get them back into sync).
cdx <d> - Set directory to <d> (if allowed).
Фактический сценарий следует. Во-первых, ".cdx_list"
который просто перечисляет позволенные каталоги в текущем проекте (конвейеры повреждаются в несколько строк для удобочитаемости, но они должны все быть на одной строке).
echo "Possible directories are:"
cat ~/.cdx_data
| grep "^${CDX_PROJ}:"
| sed -e 's/^.*://' -e 's/=.*$//'
| sort -u
| sed 's/^/ /'
Точно так же ".cdx_projlist"
шоу все возможные проекты:
echo "Possible projects are:"
cat ~/.cdx_data
| grep ':'
| sed 's/:.*$//'
| sort -u
| sed 's/^/ /'
В мясистых сценариях, ".cdx_proj"
наборы и/или шоу текущий проект:
if [[ "$1" != "" ]] ; then
grep "^$1:" ~/.cdx_data >/dev/null 2>&1
if [[ $? != 0 ]] ; then
echo "No project name '$1'."
projl
else
export CDX_PROJ="$1"
fi
fi
echo "Current project is: [${CDX_PROJ}]"
и ".cdx_goto"
то же для каталогов в рамках проекта:
if [[ "$1" == "." ]] ; then
CDX_TMP="${CDX_DIR}"
else
CDX_TMP="$1"
fi
if [[ "${CDX_TMP}" != "" ]] ; then
grep "^${CDX_PROJ}:${CDX_TMP}=" ~/.cdx_data >/dev/null 2>&1
if [[ $? != 0 ]] ; then
echo "No directory name '${CDX_TMP}' for project '${CDX_PROJ}'."
cdxl
else
export CDX_DIR="${CDX_TMP}"
cd $(grep "^${CDX_PROJ}:${CDX_DIR}=" ~/.cdx_data
| sed 's/^.*=//'
| head -1
| sed "s:^~:$HOME:")
fi
fi
CDX_TMP=$(grep "^${CDX_PROJ}:${CDX_DIR}=" ~/.cdx_data
| sed 's/^.*=//'
| head -1
| sed "s:^~:$HOME:")
echo "Current project is: [${CDX_PROJ}]"
echo "Current directory is: [${CDX_DIR}]"
echo " [${CDX_TMP}]"
echo "Actual directory is: [${PWD}]"
unset CDX_TMP
Это использует три переменные среды, которые резервируются для его собственного использования: "CDX_PROJ"
, "CDX_DIR"
и "CDX_TMP"
. Кроме тех и вышеупомянутых файлов и псевдонимов, нет никаких других используемых ресурсов. Это - самое простое, все же самое адаптируемое решение, которое я мог предложить. Всего наилучшего.
Создайте символьные ссылки в своем корневом каталоге (или где-то в другом месте Вашего выбора)
ln -s
longDirectoryPath ~/MySymLinkName
Посмотрите man ln
для получения дополнительной информации.
Используя символьные ссылки, вероятно, лучшая идея; но можно сделать это еще легче, чем дамп их всех в корневой каталог.
Как Вы упомянули, Bash имеет функцию под названием CDPATH, который входит действительно удобный здесь.
Просто сделайте скрытую папку в своем homedir (таким образом, он не создает помехи Вашему homedir слишком много):
$ mkdir ~/.paths
$ cd ~/.paths
$ ln -s /my/very/long/path/name/to/my/project project
$ ln -s /some/other/very/long/path/to/my/backups backups
$ echo 'CDPATH=~/.paths' >> ~/.bashrc
$ source ~/.bashrc
Это создает каталог в Вашем homedir, названном ".paths", который содержит символьные ссылки на все Ваши длинные места каталога, которые Вы регулярно используете, затем устанавливает переменную удара CDPATH на тот каталог (в Вашем .bashrc) и перечитывает .bashrc файл.
Теперь, можно перейти к любому из тех путей отовсюду:
$ cd project
$ cd backups
Оставляя Вас с коротким CDPATH, никакими псевдонимами создания помех, и что еще более важно: действительно простой способ перейти к тем длинным трактам из других приложений, таких как приложения UI, просто войдя ~/.paths или добавив, что каталог в Вашу боковую панель приложения UI или около этого.
Вероятно, самое легкое всестороннее решение Вы можете иметь.
Revisiting. Today I received this link from a social bookmarking site, then I immediately remembered this question:
We keep a simple, plain text bookmarks file and use a tool called bm to do the look-ups. The tool can also be used to edit the bookmark index dynamically as shown below where we add the directories from the previous example to the index.