rosrun
ためのbash自動補完スクリプトで見た後、それはコマンドcatkin_find
のように見えますが、パッケージの実行ファイルの場所を見つけるために使用され、そして実行可能ファイルはfind
コマンドでフィルタリングされています。 rospack-list-executables
というファイルに
保存次のスクリプト:
あなたはあなたの実行ファイルのリストを与えるために、スクリプトを作成したい場合は、以下の手順に従ってください
#!/bin/bash
if [[ $# -lt 1 ]]; then
echo "usage: $(basename $0) <pkg_name>"
echo ""
echo " To get a list of all package names use the command"
echo " 'rospack list-names'"
exit
fi
pkgname=${1}
pkgdir="$(catkin_find --first-only --without-underlays --libexec ${pkgname})"
if [[ -n "${pkgdir}" ]]; then
find -L "${pkgdir}" -executable -type f ! -regex ".*/[.].*" ! -regex ".*${pkgdir}\/build\/.*" -print0 | tr '\000' '\n' | sed -e "s/.*\/\(.*\)/\1/g" | sort
else
echo "Cannot find executables for package '${pkgname}'." >&2
exit 1
fi
を次にrospack-list-executables
スクリプトを作ります実行可能ファイル(chmod +x rospack-list-executables
)を開き、環境変数$PATH
にあるディレクトリに置きます。
$ rosrun gazebo_ros
debug gazebo gdbrun gzclient gzserver libcommon.sh perf spawn_model
あなたはすべてのための実行可能ファイルを確認することができます。
スクリプトを実行します:あなたはrosrun <pkgname>
コマンドを入力してタブを押したときに
$ rospack-list-executables gazebo_ros
debug
gazebo
gdbrun
gzclient
gzserver
libcommon.sh
perf
spawn_model
あなたはあなたが得る同じ結果を得る必要があります以下のbashコードを持つパッケージ:
rospack list-names | while read pkgname; do
echo "Executables for package '${pkgname}':";
rospack-list-executables $pkgname; echo "";
done
次のように入力し、新しく作成されたコマンドのパッケージ自動補完を有効にするには:
complete -F _roscomplete rospack-list-executables
あなたはcomplete
コマンドを使用すると、ログインするたびに入力する必要がしたくない場合は、あなたがあなたの.bashrc
ファイルに追加することができます。
echo "complete -F _roscomplete rospack-list-executables" >> ~/.bashrc
今、あなたはコマンドrospack-list-executables
を入力してタブキーを押したときに、あなたの中から選択するすべての利用可能なパッケージの一覧を取得する必要があります。
返信いただきありがとうございます。すべての実行可能ファイルを表示することができます。しかし、 'spawn_model'の正確なパスを取得するには? – zzj
@ZhenjieZhao直接行くことなくパスを知りたい場合は、 'roscd pkg_name'(ソース:[rosbash](http://wiki.ros.org/rosbash)) – alextoind
@ZhenjieZhaoや' rospack find pkg_name'を使うことができますそこ。 – luator