[ros-users] rosbash: roscd magic for cleaner title/prompt
Ivan Dryanovski
ivan.dryanovski at gmail.com
Wed Feb 2 19:11:37 UTC 2011
Hi Radu,
I tried running the same sequence of commands and it doesn't hang on
my machine. But you are right that mixing roscd and cd creates
problems. The scripting I did was a pretty quick hack into the roscd
machine - there might be a more robust way to handle the switching.
Ivan
On Wed, Feb 2, 2011 at 1:57 PM, Radu Bogdan Rusu <rusu at willowgarage.com> wrote:
> Not bad! :)
>
> The problem is... I bet most folks tend to mix-and-match roscd with cd.
>
> [:/opt/ros/unstable/ros]$ cd /tmp/
> [:/tmp]$ roscd pcl
> [pcl]:$ cd /
> []:$ ls
> ... hangs... Cltr+C... nothing
>
>
> Cheers,
> Radu.
> --
> http://pointclouds.org
>
> On 02/02/2011 10:51 AM, Patrick Bouffard wrote:
>> +1. Nice.
>>
>> Can this be put into diamondback (as a disabled-by-default option)?
>>
>> Pat
>>
>> On Wed, Feb 2, 2011 at 10:29 AM, Ivan Dryanovski
>> <ivan.dryanovski at gmail.com> wrote:
>>> Hi everyone,
>>>
>>> My bash shell prompt and tab title normally look something like this:
>>>
>>> "idryanov at idryanov-desktop:~/ros/some-stack/foo$"
>>>
>>> I like to have several tabs opened, each one for a different package
>>> I'm working on. I tweaked my rosbash file to manipulate the bash
>>> prompt i get when working in ROS. So every time I type in `roscd foo`
>>> (where foo is some package or stack) the tab title is replaced by
>>> "[foo]" and my prompt is replaced by "[foo]:$ ". Further, if I then
>>> type in `cd src`, the prompt is replaced by "[foo\src]". This makes it
>>> much quicker to identify the working directory for each of the
>>> (possibly many) tabs I have open.
>>>
>>> When I type in `roscd`, the tab title and prompt revert to their
>>> default system behavior (whatever it was prior to typing in `roscd
>>> foo`).
>>>
>>> To play around with this, just replace the "function roscd" in
>>> /ros/tools/rosbash with the code at the end of the email.
>>>
>>> Cheers,
>>> Ivan
>>>
>>> ###########################################
>>> # To enter ROSCD_MODE, type in roscd name_of_package
>>> # To exit ROSCD_MODE, type in roscd
>>> # If ROSCD_MODE is set, replaces the default bash prompt and tab title
>>> # with [name_of_package].
>>>
>>> export PS1_BAK=$PS1
>>>
>>> PROMPT_COMMAND='
>>> if [ "$ROSCD_MODE" ]; then
>>> basedir="${PWD#${PWD%${ROSCD_MODE}*}}"
>>> export PS1="\[\e]0;[ ${ROSCD_MODE} ]\a\]\[\e[31;1m\][$basedir]:\$ \[\e[0m\]"
>>> else
>>> export PS1=$PS1_BAK
>>> fi'
>>>
>>> function roscd {
>>> local rosvals
>>>
>>> if [ -z $1 ]; then
>>> cd ${ROS_ROOT}
>>> unset ROSCD_MODE
>>> return 0
>>> fi
>>>
>>> _ros_decode_path $1 forceeval
>>> if [ $? != 0 ]; then
>>> echo "roscd: No such package '$1'"
>>> return 1
>>> elif [ -z $rosvals ]; then
>>> cd ${ROS_ROOT}
>>> return 0
>>> else
>>> cd ${rosvals[1]}${rosvals[2]}${rosvals[3]}
>>> export ROSCD_MODE=${rosvals[0]}
>>> return 0
>>> fi
>>> }
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users at code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>>
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
More information about the ros-users
mailing list