programing

긴 길을 위한 "에일리어스"를 만드는 방법은?

abcjava 2023. 5. 1. 19:49
반응형

긴 길을 위한 "에일리어스"를 만드는 방법은?

셸 스크립팅을 할 때 자주 사용하는 경로에 대한 "에일리어스"를 만들려고 했습니다.뭔가를 시도했지만 실패했습니다.

myFold="~/Files/Scripts/Main"
cd myFold

bash: cd: myFold: No such file or directory

어떻게 하면 작동할 수 있을까요?
하만지,cd ~/Files/Scripts/Main작동하다.

환경 변수이기 때문에 (에일리어스의 정의는 다릅니다.)bash), 과 같은

cd "${myFold}"

또는:

cp "${myFold}/someFile" /somewhere/else

하지만 저는 실제로 그 디렉토리로 쉽게 전환하고 싶다면 (그 중 하나에서) 실제 별칭을 만드는 것이 더 쉽다는 것을 알게 되었습니다.bash 시작 파일:.bashrc), 키을 저장할 수 :), 키 입력을 저장합니다.

alias myfold='cd ~/Files/Scripts/Main'

그러면 그냥 사용할 수 있습니다.cd):

myfold

정의를 제거하려면 다음을 사용합니다.unalias다음 스크립트는 이러한 모든 작업을 보여줍니다.

pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy

pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy

pax> cd ; pwd
/home/pax

pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy

pax> unalias footy ; footy
bash: footy: command not found

셸 옵션은 다음과 같습니다.

cdable_vars
되면, 이값설경, 에대인는에 .cd디렉토리가 아닌 builtin 명령은 값이 변경할 디렉토리인 변수의 이름으로 가정됩니다.

당신은 이것을 당신의 웹사이트에 추가할 수 있습니다..bashrc:

shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main

내가 타일을 대신한 것을 주목하세요.$HOME는 디렉터리가 입니다.~/Files/Scripts/Main.

이제 다음과 같이 사용할 수 있습니다.

cd myFold

아니요.$필수의.사실 다른 답변에서 볼 수 있듯이, 그것이 요점입니다.cd "$myFold"셸 옵션 없이 작동합니다. cd myFold는 경서도작다니동합에로에 에서도 작동합니다.myFold공백이 포함되어 있으므로 견적이 필요하지 않습니다.

탭 자동 합니다._cd에서 합니다.bash_completion 여부를 확인cdable_vars되는 것은 해야 할 수 .bash_completion 당신의 시다한당의에서..bashrc 편집)/etc/profile셸 옵션을 설정합니다.


다른 셸에도 유사한 옵션이 있습니다(예: Zsh()).cdablevars

링크를 사용하는 것이 더 나을 수도 있습니다.

소프트 링크

심볼릭 링크 또는 소프트 링크(파일 또는 디렉토리, 보다 유연하고 자체 문서화)

#      Source                            Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx

하드 링크

하드 링크(파일 전용, 유연성이 떨어지고 자체 문서화되지 않음)

#    Source                            Link
ln /home/jake/doc/test/2000/something /home/jake/xxx

디렉토리에 대한 링크를 만드는 방법

힌트: 집에서 링크를 볼 필요가 없다면 점으로 시작할 수 있습니다. 그러면 기본적으로 숨겨져 다음과 같이 액세스할 수 있습니다.

cd ~/.myHiddelLongDirLink

먼저 따옴표를 제거해야 합니다.

bashboy@host:~$ myFolder=~/Files/Scripts/Main

의 인용은셸타확일을장당여특의신되방것다지니합을는미별가한라는 한 의미로 확장하는 것을 합니다.$HOME디렉토리입니다.

그러면 사용할 수 있습니다.$myFolder 환경 셸 변수:

bashboy@host:~$ cd $myFolder
bashboy@host:~/Files/Scripts/Main$

별칭을 만들려면 별칭을 정의해야 합니다.

alias myfolder="cd $myFolder"

그런 다음 이러한 종류의 명령을 처리할 수 있습니다.

bashboy@host:~$ myFolder
bashboy@host:~/Files/Scripts/Main$

원하는 경로를 bash의 해시 테이블에 추가할 수 있습니다.

hash -d <CustomName>=<RealPath>

이제 당신은 할 수 있을 것입니다.cd ~<CustomName>영구적으로 만들려면 bashrc 스크립트에 추가합니다.

이 해시 테이블은 명령이 실행될 때마다 내용을 검색할 필요가 없는 bash용 캐시를 제공하기 위한 것이므로 수정 등 캐시를 무효화하는 이벤트가 발생할 경우 이 테이블이 지워집니다.$PATH.

먼저, 당신은 그것이 필요합니다.$"myFold" 값에 액세스하여 질문의 코드를 작동시킵니다.

cd "$myFold"

이를 단순화하기 위해 에일리어스를 작성합니다.~/.bashrc:

alias cdmain='cd ~/Files/Scripts/Main'

소스를 제공하는 것을 잊지 마십시오..bashrc현재 bash 세션에서 별칭을 사용할 수 있게 하려면 다음과 같이 하십시오.

source ~/.bashrc

이제 다음을 사용하여 폴더로 변경할 수 있습니다.

cdmain

또 다른 옵션은 심볼릭 링크를 사용하는 것입니다.i:

ln -s ~/Files/Scripts/Main ~/myFold

그런 다음 작업을 수행할 수 있습니다.~/myFold예:

cp some_file.txt ~/myFold

그러면 파일이 저장될 것입니다.~/Files/Scripts/Main다음을 사용하여 언제든지 심볼릭 링크를 제거할 수 있습니다.rm ~/myFold원래 디렉터리를 유지합니다.

제가 시도한 위의 답변들은 앨리어싱된 디렉토리의 하위 디렉토리의 자동 확장(자동 완료)을 허용하지 않습니다.

를 러나에 지디정밀경우는어넣를에 dirs스택...

$ pushd ~/my/aliased/dir

... 다음 ...을 할 수 그런 다음 입력할 수 있습니다.dirs -v스택에서 해당 숫자 위치를 확인하려면:

 0  ~/my/aliased/dir
 1  ~/Downloads
 2  /media/usbdrive

디렉토리 매개 변수를 예상하는 대부분의 명령에 대해 이 번호를 사용하여 참조합니다.

 $ mv foo.txt ~0  

를 사용하여 "에일리어스" 디렉터리의 즉시 하위 디렉터리를 표시할 수도 있습니다.

 $ cd ~0/<Tab>
 child_dir1    child_dir2

하지만 dir의 실제 별칭도 가능합니다. 시도해 보십시오.

 myScripts="~/Files/Scripts/Main"
 alias myScripts="cd $myScripts"

이렇게 하면 각 dir/alias 쌍에 대한 공통 이름 지정 규칙이 있으며, 현재 dir에서 myScripts로 무언가를 복사해야 하는 경우에는 이에 대해 생각할 필요가 없습니다.

ITH

당신의 myscript에 다음 행을 넣으십시오.

set myFold = '~/Files/Scripts/Main'

최종 사용 시

source myscript
cd $myFold

언급URL : https://stackoverflow.com/questions/17958567/how-to-make-an-alias-for-a-long-path

반응형