bash의 역 검색 기록 (Ctrl-r)과 같은 것이 있지만 디렉토리에만 있습니까?
딥 폴더 계층 구조로 이동하려는 경우 역방향 검색 기록과 같은 것을 사용하고 싶지만 폴더 이름 만 찾고 절대 경로를 제공합니다.
본질적으로 !?
앞면에 cd가있는 일치하는 명령 만 사용하는 것과 비슷한 결과를 제공하므로 결과와 전체 경로를 단계별로 수행 할 수 있습니다.
지금까지 내가 찾은 최고의 솔루션은 bashmarks 입니다.
bash의 역 검색 기록 (Ctrl-r)과 같은 것이 있지만 디렉토리에만 있습니까?
딥 폴더 계층 구조로 이동하려는 경우 역방향 검색 기록과 같은 것을 사용하고 싶지만 폴더 이름 만 찾고 절대 경로를 제공합니다.
본질적으로 !?
앞면에 cd가있는 일치하는 명령 만 사용하는 것과 비슷한 결과를 제공하므로 결과와 전체 경로를 단계별로 수행 할 수 있습니다.
지금까지 내가 찾은 최고의 솔루션은 bashmarks 입니다.
답변:
가장 많이 사용되는 쉘 명령 중 하나는 "cd"입니다. 내 친구들 사이의 빠른 조사에 따르면 입력 한 모든 명령의 10 ~ 20 %가 실제로는 CD 명령이라고합니다. 불행히도, cd를 사용하여 시스템의 한 부분에서 다른 부분으로 이동하려면 거의 전체 경로를 입력해야합니다. 이는 실용적이지 않으며 많은 키 입력이 필요합니다.
autojump는 파일 시스템을보다 빠르게 탐색 할 수있는 방법입니다. 명령 줄에서 가장 많이 사용하는 디렉토리의 데이터베이스를 유지 관리하여 작동합니다. jumpstat 명령은 데이터베이스의 현재 내용을 보여줍니다. 데이터베이스를 사용하려면 약간의 작업이 필요합니다. 데이터베이스가 합리적으로 완성되면 다음을 입력하여 일반적으로 "cd"디렉토리로 "점프"할 수 있습니다.
j dirspec
있다
cd -
즉, "cd [space] [hyphen]"명령으로 이전의 디렉토리 (기본적으로 "깊이 1의 기록")로 이동합니다. 반복 된 "cd-"는 두 디렉토리간에 전환됩니다.
인용 매뉴얼 페이지 :
다음 피연산자가 지원됩니다 : [...]
피연산자로 [하이픈]을 사용하는 경우 다음 명령과 같습니다.
cd "$OLDPWD" && pwd
불행히도, 나는 실제 내장 디렉토리 히스토리를 모른다.
pushd dir
popd
디렉토리의 히스토리 스택을 저장할 수 있습니다 쌍. 이것은 다른 폴더에서 작동하는 스크립트에서 실제로 유용합니다.
pushd
하고 popd
, 또한 이미 여기에 언급되어있다.
bash는 push / popd / dirs를 푸시했습니다. 내 .bashrc에 디렉토리를 bash의 스택에 자동 푸시하기 위해 이것을 가지고 있습니다.
#let cd also pushd directories into stack. Use popd to reverse stack
function cd ()
{
if [ -e $1 ]; then
pushd $1 &> /dev/null #dont display current stack
fi
}
사용하여 팝 popd
하고 스택을 사용하여 표시dirs
나는 z-jump에 대한 좋은 경험을 가지고 있습니다. 경로를 밟지 않고 최종 목적지에 대해서만 완료 할 수는 있습니다. 그러나 탭이 완료되면 전체 경로가 표시됩니다.
ltcd
디렉토리 기록을 빠르게 탐색 할 것을 권장합니다 .
생활을보다 쉽게하기 위해 다음과 같은 기능을 제공합니다.
bash에서 작동 하는 oh-my-zsh의 명령 과 유사한 기능을 가진 스크립트 를 만들었습니다 . oh-my-zsh를 사용한 적이 있으면 터미널을 종료 할 때마다 명령에서 제공 한 디렉토리 기록 이 재설정 되는 것을 알 수 있습니다 . 그러나이 스크립트 를 사용하면 발생하지 않습니다 .dirs -v
dirs -v
기능 :
로 가장 최근에 사용한 10 개의 디렉토리 목록을 표시하십시오 d
.
목록에있는 디렉토리 번호를 입력하여 목록의 디렉토리로 이동하십시오. 10 번째 디렉토리로 이동하려면 10 대신 0을 사용해야합니다.
v
( vim )을 사용 하여 파일을 편집하거나 o
( xdg-open )을 사용하여 해당 디렉토리에서 파일을 열 때마다 디렉토리 경로가 목록의 맨 위에 놓 입니다. 또는 원하는 경우 디렉토리를 방문 할 때마다.
여기 에서 실제로 볼 수 있습니다 .
글쎄, 당신은 당신이 코드를 추가 할 수 있습니다 ~/.bashrc
, 어떤
사용자 정의 CD 명령을 제공합니다
function cd ()
{
exists=false
for dir in "${CDHIST[@]}"; do
[ "$dir" == "$1" ] && {
exists == true
break
}
done
$exists || {
len=${#CDHIST[@]}
${CDHIST[$len]} = "$1"
}
builtin cd "$1"
}
cd history search 명령을 제공합니다.
function cdhist ()
{
#TODO: Make this magical.
for dir in "${CDHIST[@]}"; do
echo "$dir"
done
}
물론, 내가 제공 한 cdhist 명령은 매우 기본적이며 원하는 것이 아닙니다. 그러나 원하는 것과 유사한 것을 달성하기 위해 case 문 또는 매개 변수 확장을 사용할 수 있습니다.
당신은 전체 추가하는 데 사용할 수있는 몇 가지 "프로그램 종료"기능을 추가 할 수 cd /path/to/mydir
의 고유 하위 문자열을 기반으로 명령을 /path/to/unique/mydir
하는 방법은 아직 입력을 필요로하지만, cd unique/mydir<tab>
.
dirs
명령을 찾았 my_dirs
습니다.
alias cd=pushd
가장 우아한 형태 라고 생각 합니다.
당신은 자신 구축 할 수 cd
와 명령 pushd
, popd
, dirs
내장 명령을.
cd --
(현재 기록 목록)
cd -num
(num 디렉토리로 이동)
cd -
(이전 디렉토리로 이동)
function cd()
{
local hnum=16 # number of entries
local new_dir index dir cnt
if ! [ $# -eq 0 ]; then
if [[ $# -eq 2 && $1 = "--" ]]; then
shift
else
if ! { [ $# -eq 1 ] && [[ $1 =~ ^(-[0-9]{,2}|-|--|[^-].*)$ ]] ;}
then
builtin cd "$@"
return
fi
fi
fi
[ "$1" = "--" ] && { dirs -v; return ;}
new_dir=${1:-$HOME}
if [[ "$new_dir" =~ ^(-[0-9]{,2}|-)$ ]]; then
index=${new_dir:1}
[ -z "$index" ] && index=1
new_dir=$(dirs -l +$index) || return
fi
pushd -- "$new_dir" > /dev/null || return
popd -n +$hnum &> /dev/null
new_dir=$PWD cnt=1
while dir=$(dirs -l +$cnt 2> /dev/null); do
if [ "$dir" = "$new_dir" ]; then
popd -n +$cnt > /dev/null
continue
fi
let cnt++
done
}
export -f cd
이 툴을 통합하여 포괄적 인 글로벌 CLI 히스토리를 저장하기위한 이전 솔루션과 percol (C ^ R로 맵핑 됨)이라는 대화식 그 렙핑 툴을 결합했습니다. 명령을 실행 한 곳에서 명령을 검색하거나 명령으로 디렉토리를 찾는 데 사용합니다. 사용하기 시작한 첫 번째 머신에서 여전히 매끄러운 상태입니다. 이제 2 년 이상 된 CLI 내역이 있습니다.
grep 도구는 경로와 명령 모두에서 작동하지만 여전히 유용 할 수 있습니다. zsh의 'dirs -v'도 참조하십시오.
cd share/man
난에는 / usr 이미 해요 경우에만 작동합니다.