Нормальный ПК/ноутбук/ноутбук?
Прикрепите Ubuntu на, и это - она. Никакая мысль не включена.
Нет никаких 'определенных задач для определенных пользователей' аспекта к выбору. Это - все об общественной поддержке, и Ubuntu имеет самое многочисленное сообщество включая Ubuntu SE.
Если Вы нуждаетесь в помощи, заставляя данную настройку оборудования ПК работать с Linux затем, помогает, способны ли ответы Google. То же с программным обеспечением. Помогает, имеете ли Вы .deb файл и можете 'просто нажать на него' вместо того, чтобы иметь для компиляции его из источника. Нет никакой мыслимой причины, почему Вы хотели бы менее популярный дистрибутив. OpenSuSe добирается bigged некоторыми, но не является испорченным Microsoft?
Всем нам нравятся видео и музыка, Ubuntu — быть южноафриканским и не срываемое американскими законами — получает большую лучшую Поддержку кодеков поле. Дистрибутивы Red Hat (включая Fedora) не имеют КОДЕКОВ — и Вы не хотите бесшумный ноутбук, делают Вас?
Это должно быть функцией оболочки, не сценарием, потому что сценарий выполняется в новой оболочке (и таким образом не может изменить каталог исходной оболочки).
function cdroot()
{
while [[ $PWD != '/' && ${PWD##*/} != 'httpdocs' ]]; do cd ..; done
}
Можно, конечно, назвать функцию вообще, Вам нравится.
Некоторое объяснение: первый тест ($PWD != '/'
) отказоустойчивое в случае, если Вы делаете cdroot
когда Вы не в httpdocs папке. Это остановится, когда Вы доберетесь до корня.
Второй тест (${PWD##*/} != 'httpdocs'
) немного более сложно. $PWD
переменная, содержащая путь текущего каталога. ${PWD##*/}
обрезки все до и включая последнюю наклонную черту.
Мне назвали функцию upto
в моем .bashrc, который позволяет Вам подходить к любому каталогу на текущем пути по имени:
upto ()
{
if [ -z "$1" ]; then
return
fi
local upto=$1
cd "${PWD/\/$upto\/*//$upto}"
}
У меня также есть завершение для этой функции, так, чтобы это дало мне допустимые имена каталогов и завершение, когда я поразил вкладку:
_upto()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local d=${PWD//\//\ }
COMPREPLY=( $( compgen -W "$d" -- "$cur" ) )
}
complete -F _upto upto
Кроме того, у меня есть другая функция jd
который позволяет мне переходить к любому каталогу ниже текущего:
jd(){
if [ -z "$1" ]; then
echo "Usage: jd [directory]";
return 1
else
cd **"/$1"
fi
}
Пример:
[/www/public_html/animals/hippopotamus/habitat/swamps/images] $ upto h[TAB][TAB]
habitat hippopotamus
[/www/public_html/animals/hippopotamus/habitat/swamps/images] $ upto hippopotamus
[/www/public_html/animals/hippopotamus] $ jd images
[/www/public_html/animals/hippopotamus/habitat/swamps/images] $
jd
кажется, не работает в каждом случае, Вы возражали бы объяснять, как он работает?
– Cesar
19.01.2012, 08:22
**
). Для активации этой опции в ударе окружают использование shopt -s globstar
.
– dogbane
19.01.2012, 10:37
jd
функционируйте, см. gist.github.com/Rob--W/5888648. Я только протестировал его с Bash 4.2.45, таким образом, YMMV.
– Rob W
29.06.2013, 01:28
Самая простая функция удара, которую можно поместить в Ваш .bashrc
то, что я могу думать (простой, потому что это не использует циклы, или внешние процессы):
cdup() {
cd "${PWD/\/httpdocs\/*//httpdocs}"
}
Это использует расширение параметра замены Шаблона для замены всего после /httpdocs/
в $PWD
с '/httpdocs' '. Это выглядит очень грязным, потому что мы должны выйти из наклонных черт вправо в пути для дифференциации их от наклонных черт вправо в синтаксисе расширения удара. Плюс не выходят из наклонных черт вправо в замещающей строке, таким образом, это также выглядит непоследовательным.
Если существует нет /httpdocs/
в текущем пути затем никакие замены не будут, работают, и это просто изменится на текущий каталог.
Например, замена заменит /a/b/c/httpdocs/e/f/g
с /a/b/c/httpdocs
и cd
в тот каталог.
Функция должна быть в Вашей текущей среде оболочки (или как функция или как псевдоним), так как дочерний процесс не может изменить текущий каталог своего родителя. Поэтому я говорю, чтобы вставить его Ваш .bashrc
а не в сценарии оболочки.
Вы могли также поместить что-то вроде этого в свой профиль:
alias cdh='cd $(echo $PWD | sed -e "s/\(.*\/httpdocs\)\/.*/\1/")'
Просто ввод cdh
получит Вас к самому верхнему httpdocs
каталог в Вашем текущем пути.
Это не полностью решает Вашу проблему, но это будет экономить на выполнении cd ../../../../../../
немного. Я заимствовал это из пользовательского сообщения unknown's здесь.
Вместо ввода
cd ../../../..
Вы просто вводите
up 4
и a
cd -
возвратит Вас
Поместите функцию в свой .bashrc для использования его.
# (c) 2007 stefan w. GPLv3
function up {
ups=""
for i in $(seq 1 $1)
do
ups=$ups"../"
done
cd $ups
}
cd -
впоследствии для возвращения туда, где Вы были. – Ezequiel Muns 06.06.2013, 02:45