Можно ли использовать ssh с командой как аргумент? Как:
ssh user@hostname /bin/sh
shopt -s autocd
setopt autocd
set implicitcd
Кроме того, 'автопереход' является полезным инструментом. После того, как установленный это помнит каталоги так, чтобы можно было ввести j abc и если Вы посетили abc прежде, скажите x/d/f/g/t/abc затем, это будет CD к там!
https://github.com/joelthelion/autojump
Я когда-то сделал полезный сценарий для подобной цели с функцией fcd для find-n-cd.
Вы вводите fcd foo
и 3 вещи могут произойти:
"no such directory " $1
Это подобно в этом, этому не нужны Вы для ввода целого пути, но Вы имеете, вызывают функцию явно.
#!/bin/bash
#
# find cd. For input foo, find all directories .../.../foo
# GPLv3 Stefan Wagner (2010, 2012)
#
# doesn't handle blanks in directory names gracefully.
#
fcd ()
{
list=$(locate $1 | egrep "/$1$")
count=$(echo $list | wc -w )
case $count in
0)
echo "unknown directory: "$1 && return
# could search for partial matches Doc => Documentation
;;
1)
if [[ -d "$list" ]]; then
echo "$list";
cd "$list";
else
echo "not a directory: $1"
fi
;;
*)
select directory in $list "/exit/"
do
if [[ "$directory" = "/exit/" ]]; then break; fi
if [[ -d "$directory" ]]; then
echo "$directory";
cd "$directory";
break
else
echo "not a directory: "$1
fi
done
;;
esac
}
Вы имеете к source
функция (source fcd.sh
| . fcd.sh
) и не может назвать его как сценарий, потому что cd
еще только произошел бы в контексте сценария, и после окончания Вас, окажется, сразу вернется в Вашем стартовом dir.
Так как это работает с locate
, это довольно быстро в нахождении каталогов (но не всегда актуально).
Это не обрабатывает пробелы в именах каталогов корректно. Если бы у Вас есть изящное решение для проблемы, я был бы счастлив.
cd
автоматически, не вводя команды. Этот ответ более подходит для навигации каталога Quick в терминале.
– manatwork
27.04.2012, 14:13
/etc/bash.bashrc
существует, в человечности, a function command_not_found_handle
который смотрит, как будто это могло быть изменено.
– user unknown
27.04.2012, 18:42
Вставьте это Ваш ~/.bashrc
#aliases to cd into the core dirs
PROJECT_PARENT_DIRS[0]="$HOME/repos"
#you can make it search more dirs by assigning new indexes to your other root dirs
for PARENT_DIR in ${PROJECT_PARENT_DIRS[@]} ; do
if [ -d "$PARENT_DIR" ]; then
for PROJECT_DIR in $(/bin/ls $PARENT_DIR); do
if [ ! -z `which $PROJECT_DIR` ]; then
continue # don't set alias if there is something already a command on the path with the same name
fi
if [ -d "$PARENT_DIR/$PROJECT_DIR" ]; then
alias "$PROJECT_DIR"="cd $PARENT_DIR/$PROJECT_DIR"
fi
done
fi
done
#end alias
Это также работает,
cdf name_of_file_or_directory
.. при условии, что вы настроили собственный сценарий cdf.sh (ниже), полученный из оболочки. Для каталога в качестве параметра этот сценарий получает доступ только к родительскому каталогу для найденного каталога. Добавьте следующую строку в ваш .bashrc или .zshrc, что угодно ..
source ~/bin/cdf.sh
И добавьте этот код в файл ~ / bin / cdf.sh, который вам нужно создать с нуля.
#!/bin/bash
function cdf() {
THEFILE=$1
echo "cd into directory of ${THEFILE}"
# For Mac, replace find with mdfind to get it a lot faster. And it does not need args ". -name" part.
THEDIR=$(find . -name ${THEFILE} |head -1 |grep -Eo "/[ /._A-Za-z0-9\-]+/")
cd ${THEDIR}
}
shopt -s autocd
в командной строке в нем работал. Теперь я могу только начать вводить имена каталогов и использовать автоматическое заполнение и затем нажать возврат и оболочкуcd
в каталог. Так охладитесь! – Michael Durrant 24.04.2012, 05:23cd
это не трудно ввести, и большинство механизмов заполнения клавишей Tab более умно, когда Вы даете им больше контекста. – jw013 31.01.2013, 00:44autocd
shopt был добавлен в версии 4 удара. Таким образом, это не доступно на macOS (который все еще имеет версию 3.x.x удара), если альтернативный, более новый удар не установлен (например, через домашнее пиво). – Quinn Comendant 07.03.2017, 12:38