| 
				   | 
				
| (4 intermediate revisions by the same user not shown) | 
| Line 8: | 
Line 8: | 
 | See the many examples of .bashrc in the config repo.  |  | See the many examples of .bashrc in the config repo.  | 
 | 
  |  | 
  | 
 | === Keyboard-driven copy-paste ===  |  | === Monitor running processes ===  | 
 | HOW DID I LIVE SO LONG WITHOUT THIS!
  |  | * top, htop are meh  | 
 | You can do keyboard-driven copy-paste from terminal buffer using screen!
  |  | * This must be perfected, it is the answer, it shows a TREE of terminal processes:  | 
 | * Ctrl-A-esc to get into buffer navigation mode
  |  |   watch -n 1 ps fT  | 
 | * space to mark the start of the copy buffer (non-column)  |  | 
 | * space to mark the end of the copy buffer
  |  | 
 | * then you can use Ctrl-A-] to paste - wait, wut?  useless... what about X buffer?
  |  | 
 | ** add this to "your screen .rc file" to send buffer to X clipboard too!  |  | 
 |  bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "/usr/bin/pbcopy < /tmp/screen-exchange"'
  |  | 
 |    |  | 
 | === Always use screen when ssh'ing ===
  |  | 
 | Best to accomplish this with a script.
  |  | 
 | This will also allow us to provide host-specific background graphics and profile colors, sweeeeet!  |  | 
 |     mah-haus-provided ssh commands!
  |  | 
 |         mh bitpost {screenname}
  |  | 
 |             save term background/profile
  |  | 
 |             change term background/profile - with host pic in upper right!!
  |  | 
 |             use this script to ssh bitpost:
  |  | 
 |                 https://stackoverflow.com/a/1075956/717274
  |  | 
 |                 also:
  |  | 
 |                     On my Ubuntu system (10.4) I had to modify the regular expression to account for the date/time info it prints next to each session.
  |  | 
 |                     if(/^\s*(\d+)\.(\S+)\s+(([^)]*))\s+(([^)]*))/) { ($num, $tag, $status) = ($1, $2, $4); –
  |  | 
 |                 or:
  |  | 
 |  |  | 
 |                     -t is needed to force terminal creation (even tho sending a command)
  |  | 
 |                     -x
  |  | 
 |                     -R restore existing or create if none
  |  | 
 |                     # see MY screen settings with at to see what i really want
  |  | 
 |  
  |  | 
 |                 better to let screen do the ssh?
  |  | 
 |                    screen -S 1-9 -p 0 -X screen -t Remote ssh 19
  |  | 
 |  
  |  | 
 |             reset term background/profile
  |  | 
 |    |  | 
 | === screen "create if needed or connect if exists" ===
  |  | 
 |    |  | 
 |  #!/bin/bash
  |  | 
 |  # -R will simply reattach if found, otherwise run as if a new request.  PERFECT
  |  | 
 |   screen -d -R -S #sessionname# 'export PS1="$PS1[sn] "; /bin/bash'  |  | 
 | 
  |  | 
  | 
 | === Drop a dead ssh session ===  |  | === Drop a dead ssh session ===  | 
 | Remember this one to drop a dead ssh session!  |  | Remember this one to drop a dead ssh session!  | 
 |   [enter]~.  |  |   [enter]~.  | 
The linux terminal is your lifeblood.  There are so many - TOO MANY - options.  I'll gather a few of my favorite things here.
Host-specific color and banner
This is mucho importante to quickly tell which machine you are on:
- use figlet and jp2a to create ascii art
 
- update ~/.bashrc to echo the ascii art in a host-specific color, and to persist that color in the prompt
 
- make sure to include an interactive check to avoid the banner if not interactive
 
See the many examples of .bashrc in the config repo.
Monitor running processes
- top, htop are meh
 
- This must be perfected, it is the answer, it shows a TREE of terminal processes:
 
watch -n 1 ps fT
Drop a dead ssh session
Remember this one to drop a dead ssh session!
[enter]~.