I probably won't do it right away, but once I've gotten into it, I'll 
report back on how it's working out for me.  Thanks.

Mike


On Mon, 6 Jan 2014, Jon Schewe wrote:

> I'm thinking tmux combined with your bashrc would work. I typically start a
> tmux session for each project. You could have your bashrc query tmux for
> which named session it is in and then create the name of the history file
> based on the tmux session and thus the project name.
>
> Now that I think of it, this sounds like something I should do as well.
> However I run multiple bash sessions for the same project, so I'm not sure
> how to fix the interleave problem.
>
>
> On Mon, Jan 6, 2014 at 10:39 AM, Mike Miller <mbmiller+l at gmail.com> wrote:
>
>> Does either of those keep the command histories for multiple login
>> sessions stored in separate files?  My guess is "no," but that it still
>> would help when a connection is lost.  I have been wanting for years to
>> learn to use GNU Screen but I haven't gotten around to it.  Is there a good
>> tutorial?
>>
>> If I weren't doing what I am doing, and the server crashed, I would lose
>> all command histories.  This way I lose nothing.  I don't think screen
>> would help unless it is continually storing its state and command history
>> in a file.
>>
>> Mike
>>
>>
>>
>> On Sun, 5 Jan 2014, Gavin Purcell wrote:
>>
>>  Maybe tmux or screen could be of use.
>>>
>>>
>>> On Sun, Jan 5, 2014 at 8:50 PM, Mike Miller <mbmiller+l at gmail.com> wrote:
>>>
>>>  On Sun, 5 Jan 2014, Erik Anderson wrote:
>>>>
>>>>  I'm curious to hear about *why* you are separating your HISTFILEs,
>>>>
>>>>> though. My guess is that you have a set of different ssh session
>>>>> "types",
>>>>> and you want to be able to isolate history entries for each function. Is
>>>>> that correct?
>>>>>
>>>>>
>>>>
>>>> I'll have maybe 10 connections open to the server at once and each of
>>>> them
>>>> will be for my work on some project.  So every connection is of its own
>>>> type -- there is no sort of classification scheme, if that's what you
>>>> were
>>>> asking.
>>>>
>>>> Every time the command prompt returns, it writes the previous command to
>>>> the HISTFILE:
>>>>
>>>> export PROMPT_COMMAND='history -a'
>>>>
>>>> So I have to use separate HISTFILEs or else the commands from different
>>>> projects will be interlaced.  If I don't write every command immediately
>>>> to
>>>> a histfile, when the sessions are killed by power failure or network
>>>> outage, I'll lose all the command histories.
>>>>
>>>> I have ways to work around the tty issue using history commands, copying
>>>> files, etc.  But I can also get the tty I want, if it is unused, by
>>>> occupying the lower /dev/pts/ numbers.
>>>>
>>>> This is working great for me, and I would recommend it strongly to
>>>> others.
>>>> I'm sharing the relevant lines from my .bashrc below.  It would be great
>>>> if
>>>> anyone has anything to add or to correct.  Thanks.
>>>>
>>>> Mike
>>>>
>>>>
>>>>
>>>> # Use multi_history?  Change to "yes" if you will often have multiple
>>>> # interactive bash shells running simultaneously on this system.  This
>>>> # will cause you to save multiple history files, one per shell -- see
>>>> # HISTFILE info below.
>>>> multi_history=yes
>>>>
>>>>
>>>> ##############################################
>>>> #
>>>> # HISTORY settings
>>>> #
>>>> ##############################################
>>>>
>>>> # append to the history file on exit, don't overwrite it
>>>> shopt -s histappend
>>>>
>>>>
>>>> # If $multi_history=yes, then tty is used to create a different
>>>> # $HISTFILE for every tty.  This will be a big advantage for people
>>>> # who have multiple interactive bash shells running simultaneously.
>>>> # It is not recommended for people who only run one at a time.
>>>>
>>>> # if requested, add the tty to the name of the history file
>>>> if [ "$multi_history" = "yes" ]; then
>>>>
>>>>    export HISTFILE=~/.bash_history$(tty | sed 's|/|_|g')
>>>>    if [ ! -s $HISTFILE ] ; then
>>>>       if [ -s ~/.bash_history_init ] ; then
>>>>          cp -fp ~/.bash_history_init $HISTFILE
>>>>       else
>>>>          echo -e "#1\ncd" >> ~/.bash_history_init
>>>>          chmod 600 ~/.bash_history_init
>>>>          cp -fp ~/.bash_history_init $HISTFILE
>>>>       fi
>>>>    fi
>>>> fi
>>>>
>>>> # immediately write every new command to the history file
>>>> export PROMPT_COMMAND='history -a'
>>>>
>>>> # don't put duplicate lines in the history nor lines beginning with a
>>>> space
>>>> export HISTCONTROL=ignoreboth
>>>>
>>>> # For setting history length see HISTSIZE and HISTFILESIZE in bash(1)
>>>> # Save 10,000 lines of history but 100,000 lines in the history file:
>>>> export HISTSIZE=10000
>>>> export HISTFILESIZE=100000
>>>>
>>>> # commands to ignore and not add to history (recommendation: do not
>>>> # add "cd" to this list because doing so makes it hard to track the
>>>> # default directory where commands were executed)
>>>> HISTIGNORE='ls:laf:jobs:bg:fg'
>>>>
>>>> # set time format for history file display
>>>> # in saved file, it uses seconds since 1/1/1970, but those can be
>>>> converted
>>>> # for viewing using this command (where 1234567890 is the date in
>>>> seconds):
>>>> # date +"%F %T" -d @1234567890
>>>> export HISTTIMEFORMAT="%F %T%t"
>>>>
>>>>
>>>>
>>>> ##############################################
>>>> #
>>>> # Prompt settings
>>>> #
>>>> ##############################################
>>>>
>>>> # somone wrote, "color prompt is turned off by default to not distract
>>>> # the user: the focus in a terminal window should be on the output of
>>>> # commands, not on the prompt"
>>>> # Mike Miller disagrees -- when looking at the scrollback in the
>>>> # command window, the focus often is on the prompt because the prompt
>>>> # shows where the commands are.
>>>> force_color_prompt=yes
>>>>
>>>> if [ -n "$force_color_prompt" ]; then
>>>>    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
>>>>       # We have color support; assume it's compliant with Ecma-48
>>>>       # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
>>>>       # a case would tend to support setf rather than setaf.)
>>>>       color_prompt=yes
>>>>    else
>>>>       color_prompt=no
>>>>    fi
>>>> fi
>>>>
>>>> if [ "$color_prompt" = yes ]; then
>>>>    if [ "$multi_history" = "yes" ]; then
>>>>       # add tty info to prompt for multi_history
>>>>       PS1="\[\e]0;\u@\h : $(tty) : \w\a\]\n\[\e[32m\]\u@\h\[\e[
>>>> 34m\]:\[\e[36m\]$(tty)
>>>> \[\e[33m\]\w\[\e[0m\]\n\$ "
>>>>    else
>>>>       PS1='\[\e]0;\u@\h: \w\a\]\n\[\e[32m\]\u@\h
>>>> \[\e[33m\]\w\[\e[0m\]\n\$ '
>>>>    fi
>>>> else
>>>>    if [ "$multi_history" = "yes" ]; then
>>>>       # add tty info to prompt for multi_history
>>>>       PS1='\n\u@\h $(tty) \w\n\$ '
>>>>    else
>>>>       PS1='\n\u@\h \w\n\$ '
>>>>    fi
>>>> fi
>>>> unset color_prompt force_color_prompt
>>>>
>>>> _______________________________________________
>>>> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
>>>> tclug-list at mn-linux.org
>>>> http://mailman.mn-linux.org/mailman/listinfo/tclug-list
>>>>
>>>>
>>>  _______________________________________________
>> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
>> tclug-list at mn-linux.org
>> http://mailman.mn-linux.org/mailman/listinfo/tclug-list
>>
>>
>
>
> -- 
> http://mtu.net/~jpschewe
>