답변:
에서 배쉬 팁과 트릭 : 스타일 'CD' :
마지막으로 'cd'명령에 대한 사용자 정의 대체 작성 방법을 보여 드리고자합니다.
디렉토리로 변경할 때 항상 같은 것을 입력합니까? 적어도 매번 거기에 파일을 나열하십시오. 매번 'cd'마다 손이 'ls'를 자동으로 입력 할 수 있습니다.
글쎄, 내가 생각할 수있는 모든 방법을 시도함으로써, 우리가 추구하는 목표를 올바르게 달성 할 수있는 유일한 방법이 있다는 것이 밝혀졌습니다. 쉘 함수를 만들어야합니다.
쉘 함수는 쉘 프로그래밍의 일부입니다. 컴파일 된 프로그래밍 언어와 마찬가지로 함수는 일종의 절차 적 모듈화 기능을 제공합니다. 일반적으로 사용되는 논리 또는 다른 파라미터로 계산을 수행하는 일반 함수를 생성 할 수 있습니다. 이 경우 매개 변수는 현재 작업 디렉토리입니다.
다음은 간단한 것입니다.
function cs () { cd $1 ls }
@geirha가 corretly가 지적한 것처럼 이름에 공백이있는 디렉토리로 전환하려고하면 위 기능이 실패합니다.
$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>
대신 다음 기능을 사용해야합니다.
function cs () {
cd "$@" && ls
}
해당 코드를에 추가하면 다음 ~/.bashrc
을 수행 할 수 있습니다.
hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
builtin
bash에서 다음 명령을 사용할 수 있습니다 .
function cd() {
new_directory="$*";
if [ $# -eq 0 ]; then
new_directory=${HOME};
fi;
builtin cd "${new_directory}" && ls
}
function ls() { /usr/bin/ls $* }
기능을 사용하는 데 도움 을 준 Florian Diesch 에게 감사드립니다 . csound 패키지에 명령 cs
이 있기 때문에 이름으로 사용할 수 없으므로을 사용했습니다 .cs
lc
나는 이것을 ~/.bash_aliases
( nano ~/.bash_aliases
)에 추가했다 .
function lc () {
cd $1;
ls
}
reset
이를 적용하려면 터미널이 필요합니다 .
$1
디렉토리가 공백이 포함 된 경우처럼 인용 부호로 둘러싸이지 않은 것은 실패 할 것이다. 또한 cd
; 의 반환 값을 확인해야합니다 . 실패한 경우 (예 : 권한 거부)을 실행할 필요가 없습니다 ls
. lc() { cd "$@" && ls; }
이 함수를 확장하면 다음 과 같이 대신 cs() { cd "$1" && ls; }
함수 cd
를 사용하여 모든 함수의 인수를 전달할 수 있습니다 .$@
"$1"
cs() { cd $@ && ls; }
내 정의도 변경 cd
하기 때문에 재정의하는 데 문제가있었습니다 . https://stackoverflow.com/a/19941991/1601989를 참조 하십시오 . 나는 그것이 하고있는 것을 건너 뛸 것이기 때문에 실제로 사용하고 싶지 않았습니다 .rvm
cd
builtin
rvm
나는 내 다음을 추가했습니다 .bashrc
:
# cdd allows you to cd to the directory of the given file or directory
function cdd()
{
if [[ $# -eq 0 ]]; then
cd
elif [[ -d "$*" ]]; then
cd "$*"
elif [[ -f "$*" ]]; then
echo "WARNING: file given, cd to file's dirname" 1>&2
local dir=$(dirname "$*")
cd "$dir"
else
cd "$*"
fi
}
function cs()
{
cdd $* && ls
}
그런 다음 rmv
줄에 다음과 같이 입력 하십시오 .bashrc
.
alias cd='cdd'
# Use bash built in completion for cd to allow for filenames to be used
complete -r cd