Tam yolu yazmadan komut dosyaları nasıl çalıştırılır?


57

Tam yolu yazmadan program / kabuk betiğini çalıştırmanın bir yolu olup olmadığını bilmek isterim:

/opt/idea/bin/idea.sh

Dosyanın tam yolunu her zaman verebilirsiniz.
muru

Teşekkürler @muru, bunu biliyorum, ama sıklıkla kullandığım bir program, bu yüzden uzun bir dosya yolu ile değil, basit bir komutla çalıştırabilmek istiyorum.
Jonny

nufailm.blogspot.com/2012/05/… bu fikir için yardımcı olacaktır :)
dedunumax

Yanıtlar:


60

Sadece sembolik link oluşturabilirsiniz . İçinde oluşturun /usr/local/bin. Tek ihtiyacınız olan komutu çalıştırmak:

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

Bundan sonra fileçalıştırılabilir yapmalısınız :

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

Artık name_of_new_commandterminalinizde istediğiniz zaman çalışabilmelisiniz .

Bunun yalnızca Linux'un ev kullanımı için iyi bir çözüm olduğunu unutmayın.


11
Sadece kullanıcı genellikle onu çalıştırabildiğinden /usr/local/bin, özel bir giriş klasöründeki bir betiğe işaret eden bir bağlantı noktası yerleştirmemelisiniz. İşaret bağlantısı diğer kullanıcılar tarafından görülebilir, ancak işaret ettiği dosyada görünmez. Tek kullanıcılı bir sistemde bu önemli olmayabilir, ancak yine de, tüm kullanıcıların komut dosyalarını (veya komut dosyalarına bağlantıları) yerleştirebileceği ve özel, kendi kendine yazılan komut dosyalarına (veya komut dosyalarına bağlantıları) yerleştirmek "iyi bir uygulamadır" . kendi klasöründe tek bir kullanıcı . /home/jack/myscript.shjack/usr/local/bin~/bin
Malte Skoruppa

/ usr / sbin / içine bir sembolik bağlantı ekleyin, herhangi bir yerden erişilebilir olmasını sağlar
Seyfi

28

Ekleyebilir /opt/idea/binsizin için PATHdeğişken:

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

Bundan sonra basitçe çalıştırabilirsiniz idea.sh.

Muhtemelen bu satırı ~/.bashrcdosyanıza eklemek istersiniz .


2
ayrıca: betiği çalıştırılabilir yaparsanız, .sh uzantısı bırakılabilir (betiğin üstündeki shebang'ı kullandığınız varsayılarak). basitçe "fikir" yeterli.
Jacob Vlijm

1
@Jacob: Bu, çalıştırılabilir dosya adının bir parçası olduğu için uzantıdan çıkamazsınız (bu, sihir gibi diğer sorunlara neden olan Windows değildir). Komut dosyasını isimle çağırmak için, komut dosyasını ideaişaret eden bir bağlantı veya diğer ad oluşturmanız gerekir idea.sh.
Jonathan Callen

2
@JonathanCallen Callen kesinlikle yapabilirsiniz! betiği çalıştırılabilir hale getirin, betiği #! / bin / bash ile başlattığınız gerçeği göz önüne alındığında, hem dosya adından hem de çalıştırma komutundan .sh uzantısını kaldırın.
Jacob Vlijm

1
Demek istediğim ise @Jacob dosyayı yeniden adlandırma olmadan , yapamazsınız (ve bu daha büyük bir yazılım paketinin bir parçası olan görünür, bu yüzden olmamalı sadece dosyaları yeniden adlandırmak)
Jonathan Callen'ı

2
Thanks @ Jocob, "Komut dizileri PATH sistemindeki bir dizine yüklendiğinde" yazdığını unutmayın . idea.shYazısı, senaryo değil, aslında kendi kurulum dir dışına hareket tamamen desteklenmez. Debian paketleme kuralları burada geçerli değildir.
janos

15

Sizde bir işlev oluşturabilirsiniz ~/.bashrc:

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

Veya şunları oluşturabilirsiniz alias:

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

Her iki durumda da arayarak çalıştırabilirsiniz:

$ some-name

Dosya çalıştığı yere bağlı değilse, dosyaya eklemeyi düşünün ~/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, varsa, $PATHotomatik olarak eklenir . Ardından doğrudan arayın file:

$ file

(Kötü ad seçimi olsa da, daha az genel bir şey demeyi düşünün.)


@Oli her zaman beş dakikamı verir, girintiler eklerim. :) Sadece ikinci seviye girintiler için Ctrl-K'yi kullanmak için editörü kandırmam gerektiği için can sıkıcı bir durum.
muru

2
Ekleme çözümü için özellikle 1 fileadresinden Müşteri ~/binBen genellikle (daha uzun komut dosyaları için) ne olduğu. Ben, mesela belirli parametreleri ile komutlara kısayollar için iyi ihtimalle bile üst :) Aliases o birini koymak olurdu alias l='ls -CF'. Yine de, takma adların daha harika kullanımlarını gördüm . İşlevleri açıklama eğiliminde değilim ~/.bashrc(Tüm komut dosyalarımın ayrı dosyalar halinde düzenlenmesini tercih ederim ~/bin). Bütün bunlar bir zevk meselesi olmasına rağmen, sanırım :)
Malte Skoruppa 22:14

@MalteSkoruppa Az önce kendilerini kolayca ödünç veren yöntemleri tercih ettim cdçünkü senaryo çalışma dizinine bağlı olabilir. :) Aksi takdirde, evet, ~/binkendime dosya koyma eğilimindeyim .
muru

10

Aşağıdaki komutu kullanarak başlatıcı oluşturabilirsiniz:

gnome-desktop-item-edit --create-new <path-where-to-save>. Bu pencereyi açmayacağım.

görüntü tanımını buraya girin

İstediğinizi adlandırın ve aşağıdaki komut kutusuna yazın

sh -c '/opt/idea/bin/idea.sh' ve kaydedin.

Şimdi bu dosyayı yeni oluşturulan başlatıcıyı kullanarak çalıştırabilirsiniz.

VEYA

Aşağıdaki içeriğe sahip bir .desktop dosyası oluşturabilirsiniz

[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>'

Şimdi .desktopherhangi bir yere uzatma ile kaydedin .

Bu komutla çalıştırılabilir yap chmod a+x <your-desktop-file>

Şimdi açmak için çift tıklayın.


7

Bunu bindçağırmak için komutu kullanarak bir işlev ve bir kısayol tuşu tanımlayabiliriz . ~/.bashrcDosyayı açın ve bu satırı ona ekleyin:

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

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

Şimdi tuşuna bastığınızda F12, programınız başlayacak.

Not: Çıkış kodunu belirlemenin hızlı bir yolu:

Terminalinizi açın ve Ctrl+ ' ya basın V. Şimdi en sevdiğiniz klavye kısayoluna basın. Doğru kaçış kodu görünmelidir. Sadece değiştirmeyi unutmayın ^[ile \e, örneğin değiştirmek için kısayol eklemeden önce ^[[24~sahip \e[24~.


7

/opt/idea/bin/idea.shDosyayı doğrudan kullanarak da çalıştırabiliriz.bash_aliases

Çalıştırarak ~/.bashrcdosyayı açın ,

gedit ~/.bashrc

Kaldır #, çizgiler öncesi ve çizgiler gibi görünecek şekilde, kaydetmek

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

Şimdi ~/.bash_aliasesdosyayı aç

gedit ~/.bash_aliases

Bu dosyaya aşağıdaki satırları ekleyin ve kaydedin,

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

Sonunda ~/.bashrcdosyayı kaynak ,

source ~/.bashrc

Şimdi /opt/idea/bin/idea.shdosyayı doğrudan çalıştırabilirsiniz ,

idea

4

Diğer iyi cevaplara ek olarak, ~/.local/binbu dizini PATH'inize eklemeyi ve bu dizini PATH'inize eklemeyi düşünün ( .bashrcörneğin , içinden ). Bu yöntem özel izinler gerektirmez ( /usr/local/binörneğin, bağlantının aksine ). Bu şekilde, $ HOME'unuzu su basmadan standart bir dizin yapısına sahip olabilirsiniz. Bu konuda daha fazla bilgi için bu https://unix.stackexchange.com/ sorular:


1

/usr/binDirecotyr içinde yumuşak bir link oluşturun :

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

Şimdi kullanarak çalıştırın:

idea.sh

0

Ya da sadece kullanabilirsiniz

nano ~/.bashrc

ve Ekle

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

Sonunda kaydedin ve çıkın. Daha sonra, sadece dosya adını yazabilirsiniz.


0

Buradaki ve diğer yerlerdeki tüm cevapları takip ettim ve çok az kişi komutun çalışması için LOG OUT'a ihtiyacınız olabileceğini söylemedi .

Sadece özellikle Xubuntu için , fakat diğer Debian / Ubuntu türevleri için özetlemek için bu basit talimatları yazdım.

(Aşağıdaki talimatlarda ~ / bin dizinini kullanıyoruz , çünkü bu otomatik olarak bu işletim sistemlerinin komutları aradığı bir yer. Buraya bakın :

Komutunuzun işe yaraması için aptalca talimatlar:

# 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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.