Можно ли создать ярлык для открытия окна терминала в определенном каталоге? я использую gcc много для создания небольших программ на C, но раздражает необходимость переходить в каталог, где находится мой исходный код. Есть ли способ настроить ярлык (или что-то еще) для терминала, чтобы открыть окно в заданном каталоге?
Обновить: Эта проблема все еще ускользает от меня. Самый популярный ответ - тот, который я только что пытался реализовать. Но у меня, по-видимому, возникают проблемы с составлением пути $ PROJECTDIR.
Предположим, что файлы находятся примерно в следующем месте:
/Documents/SVN Working Copies/School/Term-1/CSC-373/
Я смогу попасть туда, когда я cd
для каждой вещи отдельно, но я использовал wild card:
cd doc*
cd svn*
cd *
cd *
Я пробовал (например,):
cd /Documents/SVN Working Copies/School/Term-1/CSC-373/
(опять же, вместо $ PROJECTDIR.) Когда я открываю окно терминала, у меня есть доступ к документам, поэтому я решил, что при создании нового профиля ...
Вы можете сделать это с помощью профилей оболочки в Terminal.app.
Теперь из Новое окно или Новая вкладка меню, когда вы создаете окно или вкладку с измененным профилем, оно выполнит cd
внутри оболочки bash и измените каталог на тот, который вам нужен.
Это удобно, потому что вы можете создавать множество разных профилей для разных задач. Если вы хотите запускать большое количество команд при запуске профиля, поместите их в файл в ~/bin/
или где-нибудь еще в вашем домашнем каталоге и выполните их. Вы также можете использовать точку с запятой; для запуска нескольких команд, если вы проверили Беги внутри оболочки флажок.
Вы можете создать символическую ссылку (которая похожа на псевдоним в OS X или ярлык в Windows) в своем домашнем каталоге, который по умолчанию является местом, где открывается ваш Терминал.
Допустим, исходные файлы вашей программы расположены в / usr / bin / myapps /. И ваш домашний каталог - / users / Frank (вы также можете ссылаться на свой домашний каталог, используя путь / ~).
Когда вы находитесь в своем домашнем каталоге (/ ~), запустите команду
ln -s /usr/bin/myapps project
Это создает символическую ссылку под названием «проект» в папку / usr / bin / myapps. Затем вы можете cd для проекта (cd / ~ / project) и завершить его в / usr / bin / myapps.
Это самое простое решение, так как оно временное и легко снимается. Я верю, ты можешь просто
rm /~/project
Чтобы удалить символическую ссылку.
Вы можете использовать псевдоним в своем ~ / .profile:
alias mycode="cd /your/path/goes/here"
Затем псевдоним можно использовать как любую команду. Тип:
user@host ~: $ mycode
и ты там!
Таким образом, у вас не будет софтлинка, загрязняющего ваш $ HOME, и вы сможете прыгать туда в любое время.
Есть аналогичный вопрос о переполнении стека.
Лично мне не нравятся решения на основе графического интерфейса пользователя или AppleScript, которые я вижу здесь. Я бы использовал лучшую команду unix под OS X: open
. НАПРИМЕР.
open /usr/bin/screen
Вы можете адаптировать это, изменив /usr/bin/screen
команде, которую вы сами создаете. Итак, создайте файл с именем ~/srcTerm.sh
и поместите в него эти команды:
#!/bin/sh
cd $HOME #/or/crazy/path/to/src
bash -l #or whatever interactive program you like.
Затем выдайте: open -a /Applications/Utilities/Terminal.app ~/srcTerm.sh
Я знаю, что это выглядит громоздко, так что теперь отредактируйте ~/.bash_profle
и рядом с любым другим alias
команды устанавливают новый псевдоним, например:
alias popupsrc='open -a /Applications/Utilities/Terminal.app ~/srcTerm.sh'
В следующий раз, когда вы войдете в систему или получите этот файл, вы можете использовать команду popupsrc
как ярлык.
Теперь вы можете сказать себе: «Но dlamblin
, это предполагает, что у меня уже открыто окно терминала и я сейчас работаю в командной строке. На самом деле я не об этом просил. Я искал что-то вроде значка типа "Терминал", поведение которого я могу изменить ". И на это я мог бы сказать что-то вроде:" Ну, сделайте здесь весь графический интерфейс и найдите ~/srcTerm.sh
файл в поисковике, "Получить информацию" и измените параметр "Открыть с помощью:" на "Другое ...", затем "Включить все приложения" и выберите Terminal
применение. Не выбирайте «Изменить все ...». Теперь вы можете дважды щелкнуть этот файл, чтобы открыть терминал. Вы можете прикрепить его к своей док-станции, в быстрой папке (также известной как стек) или даже ввести его имя в центр внимания (доступное везде с помощью Command-Space) и нажать Enter ".
Забавно, я пока использовал все 3 ответа;)
Вот еще один вариант: использовать applescript. Например, вы можете создавать сценарии приложений, которые открывают окно в текущем каталоге поиска.
У меня есть куча таких яблочных скриптов и я привязал их к горячим клавишам с помощью Quicksilver (или дворецкого)
по умолчанию я использую горячие клавиши, которые открывают терминал в текущем каталоге поиска, но только в том случае, если поисковик является самым передним приложением. В противном случае я просто получаю новое окно. Затем у меня также есть сценарии, которые открывают сеансы ssh для определенных серверов и повторно подключаются к сеансу экрана. С параметром -x для экрана вы можете просматривать несколько окон erminal на одном и том же серверном терминале, отлично :)
РЕДАКТИРОВАТЬ:
Это сценарий, который я написал, который открывает новое окно, переходя в текущий каталог Finder, если Finder является текущим активным приложением:
on run
-- Figure out if we want to do the cd (doIt)
-- Figure out what the path is and quote it (myPath)
try
tell application "Finder" to set doIt to frontmost
set myPath to finder_path()
if myPath is equal to "" then
set doIt to false
else
set myPath to quote_for_bash(myPath)
end if
on error
set doIt to false
end try
-- Figure out if we need to open a window
-- If Terminal was not running, one will be opened automatically
tell application "System Events" to set isRunning to (exists process "Terminal")
tell application "Terminal"
-- Open a new window
if isRunning then do script ""
activate
-- cd to the path
if doIt then
-- We need to delay, terminal ignores the second do script otherwise
delay 0.3
do script "cd " & myPath in front window
end if
end tell
end run
on finder_path()
try
tell application "Finder" to set the source_folder to (folder of the front window) as alias
set thePath to (POSIX path of the source_folder as string)
on error -- no open folder windows
set thePath to ""
end try
return thePath
end finder_path
-- This simply quotes all occurrences of ' and puts the whole thing between 's
on quote_for_bash(theString)
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to "'"
set the parsedList to every text item of theString
set AppleScript's text item delimiters to "'\\''"
set theString to the parsedList as string
set AppleScript's text item delimiters to oldDelims
return "'" & theString & "'"
end quote_for_bash
Чтобы использовать его, откройте редактор сценариев и вставьте его. Затем сохраните его в удобном месте (я использую ~ / Library / Scripts) и скажите QuickSilver, Butler или панели быстрого поиска Google запустить его. С помощью QS и Butler вы также можете установить глобальные сочетания клавиш.
Надеюсь это поможет,
Wout.
На самом деле это не решение, но знаете ли вы, что можете перетащить папку или файл в терминал, и он вставит путь к элементу
например, введите "cd" и перетащите папку, а затем нажмите "Return"
Если проблема в том, что вам нужно начинать каждый сеанс в терминале следующим образом: cd /a/very/very/annoyingly/long/path/name
, то я могу придумать два решения.
Поместите это внизу своего .profile
файл (он находится в домашнем каталоге вашего пользователя):
cd / a / очень / очень / раздражающе / длинный / путь / имя
Отредактируйте свой CDPATH
. Этот метод позволяет быстро изменять каталоги с помощью вкладок. Мой, например, выглядит так, поскольку большая часть моей работы с оболочкой выполняется в двух каталогах iliumSvn или unix.varia:
экспорт CDPATH = '.: ~: ~ / iliumSvn /: ~ / unix.varia'
Я думаю, что 2 чище и лучше в долгосрочной перспективе, но оба должны работать нормально. Проблема с 1 заключается в том, что если ваши рабочие привычки изменятся, вам нужно будет не забыть удалить эту строку, иначе она будет сводить вас с ума каждый раз, когда вы открываете оболочку.
Я делаю подобные вещи с помощью DTerm http://www.decimus.net/dterm.php таким образом вы можете просто нажать KeyCombo из редактора, в котором вы работаете (Textmate в моем случае), и вы получите командную строку для этого места. Затем вы можете выполнить команду (например, сделать) и все! Если вы хотите открыть там настоящий терминал, вы можете просто нажать Command + Return вместо Return, и ваша команда будет выполнена в этом каталоге в новом окне терминала. Мне кажется намного проще, чем возиться с кучей путей и т. Д.