전체 경로를 입력하지 않고 스크립트를 실행하는 방법은 무엇입니까?


57

전체 경로를 입력하지 않고 프로그램 / 쉘 스크립트를 실행하는 방법이 있는지 알고 싶습니다.

/opt/idea/bin/idea.sh

항상 파일의 전체 경로를 제공 할 수 있습니다.
muru

@muru에게 감사합니다. 이것은 내가 자주 사용하는 프로그램이므로 긴 파일 경로가 아닌 간단한 명령으로 실행할 수 있기를 원합니다.
Jonny

nufailm.blogspot.com/2012/05/… 아이디어에 도움이 될 것입니다 :)
dedunumax

답변:


60

symlink 만 만들 수 있습니다 . 에서 만드십시오 /usr/local/bin. 명령을 실행하기 만하면됩니다.

sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command

그런 다음 file실행 파일을 만들어야합니다 .

chmod +x /full/path/to/your/file

이제 name_of_new_command터미널에서 언제든지 실행할 수 있습니다 .

이것은 Linux를 가정용으로 사용하는 경우에만 좋은 솔루션입니다.


11
일반적으로 사용자 만 /usr/local/bin스크립트 를 실행할 수 있으므로 개인 홈 폴더의 스크립트를 가리키는 심볼릭 링크를 배치해서는 안됩니다 . 심볼릭 링크는 다른 사용자에게는 보이지만 가리키는 파일은 아닙니다. 단일 사용자 시스템에서는 이것이 중요하지 않을 수 있지만 여전히 모든 사용자가 읽을 수있는 스크립트 (또는 스크립트 링크) 와 개인용 자체 제작 스크립트 (또는 스크립트 링크)를 배치하는 것이 "우수 사례" 입니다. 폴더 의 단일 사용자 /home/jack/myscript.shjack/usr/local/bin~/bin
Malte Skoruppa

/ usr / sbin /에 심볼릭 링크를 추가하여 어디서나 액세스 가능
Seyfi

28

변수에 추가 /opt/idea/bin할 수 있습니다 PATH:

PATH=/opt/idea/bin:"$PATH"

이 후 간단하게 실행할 수 있습니다 idea.sh.

~/.bashrc파일 에이 줄을 추가하고 싶을 것입니다 .


2
또한 : 스크립트를 실행 가능하게 만들면 .sh 확장자를 그대로 둘 수 있습니다 (스크립트 상단에 shebang을 사용한다고 가정). 단순히 "아이디어"이면 충분합니다.
Jacob Vlijm

1
@Jacob : 확장명은 실행 파일 이름의 일부이므로 확장명을 그대로 둘 수 없습니다 (이것은 Windows가 아니며 마법 같은 다른 문제가 발생합니다). 이름으로 스크립트를 호출하려면 idea해당 이름이 idea.sh스크립트를 가리키는 링크 또는 별명을 작성해야합니다 .
Jonathan Callen

2
@JonathanCallen Callen 당신은 확실히 할 수 있습니다! shebang #! / bin / bash로 스크립트를 시작한다는 사실을 고려하여 스크립트를 실행 가능하게 만들고 파일 이름과 명령에서 .sh 확장자를 제거하십시오.
Jacob Vlijm

1
@Jacob 은 파일의 이름을 바꾸지 않고 , 더 큰 소프트웨어 패키지의 일부이므로 파일 이름 만 바꾸면 안됩니다.
Jonathan Callen

2
@Jacob에게 감사합니다. "스크립트가 시스템 PATH의 디렉토리에 설치된 경우"라고 표시되어 있습니다. idea.sh스크립트는 스크립트가 아니라, 사실의 설치 디렉토리 외부로 이동하는 것은 완전히 지원되지 않습니다. 데비안 패키징 규칙은 여기에 적용되지 않습니다.
janos

15

에 함수를 만들 수 있습니다 ~/.bashrc:

some-name () {
    /path/to/your/file
    # or:
    #cd /path/to/your
    #./path
}

또는 다음을 만들 수 있습니다 alias.

alias some-name='/path/to/your/file'
# or  
#alias some-name='cd /path/to/your/; ./file'

두 경우 모두 다음을 호출하여 실행할 수 있습니다.

$ some-name

파일이 실행중인 위치에 의존하지 않는 경우 파일을 다음에 추가하십시오 ~/bin.

mkdir -p ~/bin
cp /path/to/you/file ~/bin
# or mv /path/to/you/file ~/bin
# or ln -s /path/to/you/file ~/bin

~/bin존재하는 경우 $PATH자동으로 추가 됩니다. 그런 다음 직접 전화하십시오 file.

$ file

(그러나 이름을 잘못 선택하면 덜 일반적인 이름으로 간주하십시오.)


@Oli는 항상 5 분을주고, 들여 쓰기를 추가하는 경향이 있습니다. :) 편집기를 속여서 두 번째 수준 들여 쓰기에 Ctrl-K를 사용해야하기 때문에 성가시다.
muru

2
추가 솔루션에 대한, 특히 +1 file당신에게 ~/bin내가 보통 (더 스크립트)하는 일이다. 필자는 아마도 그 중 하나를 맨 위에 놓았을 것입니다.) 별칭은 특정 매개 변수가있는 명령 바로 가기에 좋습니다 (예 :) alias l='ls -CF'. 나는 별명을 훨씬 더 많이 사용하는 것을 보았지만 . 나는 함수를 선언하지 않는 경향이 있습니다 ~/.bashrc(나는 모든 스크립트를 별도의 파일로 구성하는 것을 선호합니다 ~/bin). 이 모든 것이 맛의 문제이지만, 나는 추측합니다 :)
Malte Skoruppa

@MalteSkoruppa cd스크립트는 작업 디렉토리에 따라 다를 수 있기 때문에 가장 쉽게 빌려주는 메소드를 선호했습니다 . :) 그렇지 않으면, 나는 파일을 ~/bin내 자신 에 넣는 경향이있다 .
muru

10

다음 명령을 사용하여 실행기를 만들 수 있습니다.

gnome-desktop-item-edit --create-new <path-where-to-save>. 이 창을 열 것입니다.

여기에 이미지 설명을 입력하십시오

원하는대로 이름을 지정하고 명령 상자에 다음을 입력하십시오.

sh -c '/opt/idea/bin/idea.sh' 저장하십시오.

이제 새로 만든 런처를 사용하여 해당 파일을 실행할 수 있습니다

또는

다음 내용으로 .desktop 파일을 만들 수 있습니다

[Desktop Entry]
Name=<whatever-you-want>
Exec=sh -c '/opt/idea/bin/idea.sh'     
Terminal=false
Type=Application
Icon='<path to an icon file if you want>'

이제 .desktop어느 곳에 나 확장명으로 저장하십시오 .

이 명령으로 실행 가능하게하십시오 chmod a+x <your-desktop-file>

이제 두 번 클릭하여 엽니 다.


7

bind명령을 사용하여 함수와 add 핫키를 정의 할 수 있습니다 . ~/.bashrc파일을 열고 다음 줄을 추가하십시오.

# define function that opens your program in working directory
Openprog(){
    /your-Program/path/here
}

# bind hotkey to it (<F12>)
bind -x '"\e[24~":"Openprog"'

이제를 누르면 F12프로그램이 시작됩니다.

참고 : 이스케이프 코드를 확인하는 빠른 방법 :

터미널을 열고 Ctrl+를 누릅니다 V. 이제 좋아하는 키보드 단축키를 누르십시오. 올바른 이스케이프 코드가 나타납니다. 그냥 교체해야합니다 ^[으로 \e, 예를 대체 할 수있는 바로 가기를 추가하기 전에 ^[[24~로를 \e[24~.


7

/opt/idea/bin/idea.sh파일을 직접 사용하여 파일 을 실행할 수도 있습니다bash_aliases

다음 ~/.bashrc을 실행하여 파일을 엽니 다 .

gedit ~/.bashrc

#줄 앞을 제거 하고 저장하면 줄이 다음과 같이 표시됩니다.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

이제 ~/.bash_aliases파일을 열고

gedit ~/.bash_aliases

해당 파일에 아래 줄을 추가하고 저장하십시오.

alias idea='cd /opt/idea/bin && sudo ./idea.sh'

마지막으로 ~/.bashrc파일을 소싱 하십시오.

source ~/.bashrc

이제 /opt/idea/bin/idea.sh파일을 직접 실행할 수 있습니다 .

idea

4

다른 좋은 답변 외에도이 ~/.local/bin디렉토리를 PATH에 링크하고 PATH에 추가하는 것을 고려 하십시오 (예 : 내에서 .bashrc). 이 방법에는 특수 권한이 ​​필요하지 않습니다 ( /usr/local/bin예 :에 대한 심볼릭 링크와 달리 ). 이런 식으로 $ HOME을 넘치지 않고 표준 디렉토리 압축을 수행 할 수 있습니다. 이 https://unix.stackexchange.com/ 질문 에서 이에 대해 자세히 알아보십시오 .


1

/usr/bindirecotyr 에서 소프트 링크를 만듭니다 .

ln -s /usr/bin/idea.sh  /opt/idea/bin/idea.sh

이제 다음을 사용하여 실행하십시오.

idea.sh

0

아니면 간단히 사용할 수 있습니다

nano ~/.bashrc

그리고 추가

PATH=/full/path/to/file:"$PATH"

그것의 끝에 저장하고 종료하십시오. 그런 다음 파일 이름을 입력하면됩니다.


0

나는 여기와 다른 곳의 모든 대답을 따랐으므로 결국 명령을 수행하기 위해 로그 아웃 해야 할 수도 있다고 언급하는 사람은 거의 없습니다 .

특히 Xubuntu 에 대해 간단히 설명 하지만 다른 데비안 / 우분투 변형 에 대해서도이 간단한 지침을 작성했습니다.

(다음 지침에서는 ~ / bin 디렉토리를 사용합니다 . 왜냐하면이 OS가 명령을 찾는 위치이기 때문입니다. 여기를 참조 하십시오 .

명령이 작동하도록하는 완전 방지 지침 :

# Open Terminal with Ctrl + Alt + T (or your system's own shortcut)

# You'll work in your home folder, no need to use sudo for any of this

cd # Go to home directory

mkdir -p bin # Create folder ~/bin if it doesn't exist

# Be careful not to type /bin, that's the bin folder in system root: /

sudo apt install nano # Skip this if you have Nano installed

nano bin/yournewcommand

    # In Nano, type:

    printf "Your new command works! \n" # \n means line break

    # Ctrl+X To leave Nano

    # Ctrl+Y To save the unsaved file

    # Enter to confirm

chmod +x bin/yournewcommand

yournewcommand # If you just created the bin folder, this command might not yet work.

# You must now log out and log back in to make the bin folder noticed (I think)

yournewcommand # Now it works! (You can use Tab to autocomplete the command you're typing)

# If you add a second file/command, it should work without logging out (at least in my tests)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.