完全なパスを入力せずにスクリプトを実行する方法は?


57

フルパスを入力せずにプログラム/シェルスクリプトを実行する方法があるかどうかを知りたい:

/opt/idea/bin/idea.sh

いつでもファイルのフルパスを指定できます。
ムル14

@muruに感謝しますが、これは私がよく使うプログラムなので、長いファイルパスではなく、単純なコマンドで実行できるようにしたいと思います。
ジョニー14

nufailm.blogspot.com/2012/05/…これはアイデアに役立ちます:)
dedunumax 14年

回答:


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.shjack/usr/local/bin~/bin
マルテスコルッパ14

どこからでもアクセスできるようになりは/ usr / sbinに/にシンボリックリンクを追加
Seyfi

28

あなたは追加することができ/opt/idea/bin、あなたにPATH変数:

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

この後、単にで実行できますidea.sh

この行を~/.bashrcファイルに追加することをお勧めします。


2
また、スクリプトを実行可能にする場合、.sh拡張子は残しておくことができます(スクリプトの上部でシェバンを使用すると仮定します)。単に「アイデア」で十分です。
ジェイコブVlijm 14年

1
@Jacob:拡張子は実行ファイルのファイル名の一部であるため、これを残すことはできません(これはWindowsではなく、そのような魔法が他の問題を引き起こします)。名前を指定してスクリプトを呼び出すには、スクリプトをidea指すその名前のリンクまたはエイリアスを作成する必要がありidea.shます。
ジョナサンカレン14年

2
@JonathanCallen Callen間違いなくできる!スクリプトを実行可能にし、shebang#!/ bin / bashでスクリプトを開始するという事実を前提に、ファイル名と実行するコマンドの両方から.sh拡張子を削除します。
ジェイコブVlijm 14年

1
私が意味することはあり@Jacob ファイルの名前を変更せずに、することはできませんが(そしてこれは、より大きなソフトウェアパッケージの一部で表示されますので、あなたがべきではないだけでファイルの名前を変更)
ジョナサンキャレンを

2
@Jacobに感謝します。「スクリプトがシステムPATHのディレクトリにインストールされると表示されていることに注意してください。idea.shスクリプトは、このようなスクリプトではありません、実際にはそのインストールディレクトリの外に移動すると、完全にサポートされていません。Debianパッケージング規則はここでは適用されません。
ヤノス14年

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分間を与え、インデントを追加する傾向があります。:)第2レベルのインデントにCtrl-Kを使用するようにエディターをだます必要があるので、単に迷惑です。
ムル14

2
特に+1をに追加fileするソリューションの~/bin場合、これは私が通常行うことです(より長いスクリプトの場合)。私はおそらくそれを一番上に置いたかもしれません:)エイリアスは、特定のパラメータを持つコマンドへのショートカットに適していますalias l='ls -CF'私はエイリアスのはるかに素晴らしい使用を見てきましたが。で関数を宣言する傾向はありません~/.bashrc(すべてのスクリプトをで別々のファイルに整理することを好みます~/bin)。これはすべて好みの問題ですが、私は推測します:)
モルテスコルッパ14

@MalteSkoruppa cdスクリプトは作業ディレクトリに依存する可能性があるため、最も簡単に役立つメソッドを優先しました。:)そうでなければ、はい、私は~/bin自分でファイルを置く傾向があります。
ムル14

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

5

他の適切な答えに~/.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を使用します。これは、これらの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.