Як запустити скрипти без введення повного шляху?


57

Я хотів би знати, чи є спосіб запустити скрипт програми / оболонки без введення повного шляху:

/opt/idea/bin/idea.sh

Ви завжди можете надати повний шлях до файлу.
муру

Дякую @muru, це я знаю, але це програма, яку я часто використовую, тому я хотів би мати можливість запускати її за допомогою простої команди, а не довгого шляху до файлу.
Джоні

nufailm.blogspot.com/2012/05/… це допоможе ідеї :)
dedunumax

Відповіді:


60

Можна просто створити симпосилання . Створіть його /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.sh, наприклад , тільки користувач jack, як правило, міг би його виконати. Симпосилання буде видимим для інших користувачів, але не файл, на який він вказує. Для однокористувацької системи це може не мати значення, але все-таки "належним чином" є розміщення скриптів (або посилань на скрипти), які можуть читати всі користувачі /usr/local/bin, і приватні, власноруч виготовлені сценарії (або посилання на скрипти) один користувач у своїй ~/binпапці.
Malte Skoruppa

додати символьне посилання в / usr / sbin / зробить його доступним з будь-якого місця
Сейфі

28

Ви можете додати /opt/idea/binдо PATHзмінної:

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

Після цього ви можете запустити його просто idea.sh.

Можливо, ви хочете додати цей рядок у свій ~/.bashrcфайл.


2
також: якщо ви зробите сценарій виконуваним, розширення .sh може бути залишене (якщо припустимо, що ви використовуєте shebang у верхній частині сценарію). просто "ідеї" достатньо тоді.
Яків Влійм

1
@Jacob: ви не можете залишити розширення, оскільки це частина назви файлу, що виконується (це не Windows, де така магія викликає інші проблеми). Для того, щоб викликати сценарій з ім'ям idea, вам слід створити посилання або псевдонім з цим ім'ям, що вказує на idea.shсценарій.
Джонатан Каллен

2
@JonathanCallen Callen ви, звичайно, можете! зробіть сценарій виконуваним, видаліть розширення .sh з імені файлу, і з команди, щоб запустити його, враховуючи той факт, що ви запускаєте скрипт із shebang #! / bin / bash.
Яків Влійм

1
@Jacob, що я маю на увазі, не перейменуючи файл , ви не можете (і, здається, це частина більшого програмного пакету, тому вам не слід просто перейменовувати файли)
Jonathan Callen,

2
Дякуємо @Jacob, зауважте, що там написано "Коли сценарії встановлені в каталог в системі PATH" . idea.shСценарій не такий сценарій, по суті , зсунувши його поза ним установки директорії повністю підтримується. Правила упаковки Debian тут не застосовуються.
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

(Неправильний вибір імені, однак, подумайте, називати його чимось менш загальним.)


@ Олі завжди даю мої п’ять хвилин, я схильний додавати відступи. :) Це просто прикро, як мені потрібно обдурити редактора, щоб використовувати Ctrl-K для відступів другого рівня.
муру

2
+1, зокрема, для рішення, яке потрібно додати fileдо вашого ~/bin, що я зазвичай роблю (для більш довгих сценаріїв). Я б, напевно , навіть покласти , що один в топі :) псевдоніми гарні для швидкого доступу до команд з певними параметрами, наприклад, alias l='ls -CF'. Хоча я бачив набагато приголомшливіші псевдоніми . Я не схильний оголошувати функції в ~/.bashrc(я вважаю за краще, щоб усі мої сценарії були організовані в окремі файли ~/bin). Хоча все це - справа смаку, я думаю :)
Malte Skoruppa

@MalteSkoruppa Я просто віддав перевагу методам, які найлегше піддаються cd, оскільки сценарій може залежати від робочого каталогу. :) В іншому випадку, так, я прагну вкладати файли в ~/binсебе.
муру

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команди, щоб викликати її. Відкрийте ~/.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 (наприклад, зсередини вашого .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 , але для інших варіантів Debian / Ubuntu я також написав ці прості інструкції.

(у наступних інструкціях ми використовуємо каталог ~ / bin , оскільки це автоматично місце, звідки ці ОС шукають команди. Дивіться тут :

Недопустимі вказівки, щоб ваша команда працювала:

# 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.