[ros-users] rosbash: roscd magic for cleaner title/prompt

Radu Bogdan Rusu rusu at willowgarage.com
Wed Feb 2 18:57:34 UTC 2011


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



More information about the ros-users mailing list