Когда я печатаю cd ~foo
, я бы хотел, чтобы bash переместил меня в какой-либо каталог foo
в качестве ярлыка для ввода полного пути к каталогу foo
. и я хотел бы иметь возможность cp ~foo/bar.txt ~/bar.txt
скопировать файл из /foo/
каталога в домашний каталог ... Итак, в основном, я хочу что-то, что работает точно так ~/
же, как и работает, но где я указываю, каким должен быть каталог. [Я уверен, что я должен JFGI, но я не знаю, что FG]
29
Ответы:
Я использовал это для создания каталога, который содержит символические ссылки на каталоги, которые вы хотите использовать для ярлыков, и добавления этого каталога в ваш CDPATH. CDPATH контролирует, где
cd
будет выполняться поиск при переключении каталогов, поэтому, если этот каталог символических ссылок находится в вашем CDPATH, вы можетеcd
мгновенно перейти к любому из символьных каталогов:Недостатком, конечно, является то, что он не будет работать, если в вашем текущем каталоге есть каталог с именем "b" - который имеет приоритет над CDPATH
Мне обычно не нравятся ответы, в которых говорится «сначала нужно переключить оболочки», но эта точная функция существует в ZSH , если вы хотите использовать ее вместо этого; это называется именованными каталогами . Вы экспортируете переменную
foo
, и когда вы ссылаетесь на~foo
нее, преобразуется в значение$foo
. Это особенно удобно, потому что работает в командах, кромеcd
:источник
Вы можете написать функцию-обертку для
cd
и назвать ее «cd» (в конечном счете, функция будет вызыватьсяbuiltin cd
- используяbuiltin
ключевое слово). Вы можете использовать префиксный символ, который Bash не будет раскрывать в командной строке до того, как ваша функция его увидит, и он вряд ли появится в качестве начального символа в именах каталогов, возможно, «:». Вы хотели бы сделать его более надежным, но вот простая схема:источник
с баш:
~foo
зарезервировано для домашнего каталога пользователя foo. Я бы не рекомендовал создавать пользователей только для этого.Сменив каталоги, вы можете упростить (или усложнить) свою жизнь , установив
CDPATH
переменную среды (см. Вbash(1)
).Кроме того, единственный способ подумать - установить переменные окружения для тех каталогов, которые вы хотите сократить.
источник
Переменные Bash могут быть использованы для создания системы закладок. Переменные будут работать с любой командой, а bash завершит имя переменной. В более новых версиях bash, если / добавляется к имени переменной, путь, который содержит переменная, также может быть дополнен табуляцией.
Для сохранения описания переменных могут храниться в файле, полученном из .bashrc. Поскольку этот файл является сценарием bash, он может содержать объявления, которые ссылаются на другие переменные, например
aur="${HOME}/AUR"
, или которые запускаются только на определенных хостахif [[ $HOSTNAME == foo ]]; then bar=baz; fi
, что полезно, если вы повторно используете файлы конфигурации для нескольких хостов и пользователей.Следующая функция bash (добавляемая в .bashrc или полученная из нее) позволяет добавлять и удалять закладки из файла закладок. Это довольно новый и не гарантированно быть свободным от ошибок.
источник
Можно было бы создать псевдоним для компакт-диска, который заменяет
~c
нужный путь. Или просто используйте Zsh;)источник
Для смены каталогов вы можете использовать wcd: Wherever Change Directory
С этим все будет как
wcd plugin_root
.источник
cd
как ...У меня есть функция ниже, которая будет создавать псевдоним на лету,
Когда я хочу добавить в закладки каталог, я просто набираю
s dirName
. Это создает псевдоним какalias dirName="cd /my/current/directory/;pwd"
. так что я могу вернуться в этот каталог, просто набравdirName
. У меня есть версия, которая также сохраняет его в bash_aliases. Это работает в любой оболочке.источник