Check These Out
exclude-dir option requires grep 2.5.3
Leave it to a proprietary software vendor to turn a cheap and easy parlor trick into a selling point. "Hey guys, why don't we turn our _collection of multiple files_ into a *collection of multiple files*!!" Extract the ^above with this:
$ cat pics.tar.gz.??? | tar xzv
^extract on any Unix - no need to install junkware!
(If you must make proprietary software, at least make it do something *new*)
if [ -e windows ]; then use 7-Zip
It will return a ranked list of your most commonly-entered commands using your command history
This command is useful if you want to copy the output of a series of commands to a file, for example if you want to pastebin the output from 'uname -a', 'lspci -vvv' and 'lsmod' for video driver trouble-shooting on your favorite Linux forum.
'log' takes all the following arguments as a command to execute, with STDOUT sent to /var/log/user.log. The command is echoed to the log before it is executed.
The advantages of using logger (as opposed to appending output from commands to a file) are 1) commands are always appended to the logs... you don't have to worry about clobbering your log file accidentally by using '>' rather than '>>' 2) logs are automatically cleaned up by logrotate.
The following functions allow you to mark the start and end of a section of /var/log/user.log.
$ startlog() { export LOGMARK=$(date +%Y.%m.%d_%H:%M:%S); echo "$LOGMARK.START" | logger -t $USER; }
then
$ endlog() { echo "$LOGMARK.END" | logger -t $USER; }
printlog will print all lines between $LOGMARK.START and $LOGMARK.END, removing everything that is prepended to each line by logger.
$ printlog() { sudo sed -n -e "/$LOGMARK.START/,/$LOGMARK.END/p" /var/log/user.log| sed "s/.*$USER: //"; }
The following command should dump just about all the information that you could possibly want about your linux configuration into the clipboard.
$ startlog; for cmd in 'uname -a' 'cat /etc/issue' 'dmesg' 'lsusb' 'lspci' 'sudo lshw' 'lsmod'; do log $cmd; done; endlog; printlog | xsel --clipboard
This is ready for a trip to http://pastebin.com/, and you don't have to worry about leaving temporary files lying around cluttering up $HOME.
Caveats: I'm sure that startlog, endlog, and printlog could use some cleanup and error checking... there are unchecked dependencies between printlog and endlog, as well as between endlog and startlog.
It might be useful for 'log' to send stderr to logger as well.
Assumed dir A, B, C are subdirs of the current dir
Exact syntax of the command is:
rsync -v -r --size-only --compare-dest=/path_to_A/A/ /path_to_B/B/ /path_to_C/C/
(do not omit end-slashes, since that would copy only the names and not the contents of subdirs of dir B to dir C)
You can replace --size-only with --checksum for more thorough file differences validation
Useful switch:
-n, --dry-run perform a trial run with no changes made
Shows all block devices in a tree with descruptions of what they are.
Replace 'csv_file.csv' with your filename.
swap out "80" for your port of interest. Can use port number or named ports e.g. "http"
Set a bookmark as normal shell variable
$ p=/cumbersome/path/to/project
To go there
$ to p
This saves one "$" and is faster to type ;-) The variable is still useful as such:
$ vim $p/
will expand the variable (at least in bash) and show a list of files to edit.
If setting the bookmarks is too much typing you could add another function
$ bm() { eval $1=$(pwd); }
then bookmark the current directory with
$ bm p
Write a file you edited in Vim but that you do not have the permissions to write to (unless you use sudo.) Same as #1204 but without the echo to stdout that I find annoying.