Linux Tips: Difference between revisions
No edit summary |
mNo edit summary |
||
(19 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== compopt == | |||
Getting this error: | |||
<geshi lang="bash"> | |||
compopt -o filenames | |||
bash: compopt: command not found | |||
</geshi> | |||
Fix: You are using bash 3.0, try using bash 4.0+ | |||
== Remove _2 files == | |||
Mac creates _2 when ever you copy a file the second time. | |||
<geshi lang="bash"> | |||
find . -name "*_2.???" -type f | while read f; do g="$(echo "$f" | sed -e 's/_2//;')"; if [[ -f "$g" && $(md5sum "$f" | awk '{ print $1; }') = $(md5sum "$g" | awk '{ print $1; }') ]]; then rm "$f"; fi; done | |||
</geshi> | |||
== Find duplicate files == | |||
<geshi lang="bash"> | |||
find . -type f -print0 | xargs -0 -n1 md5sum | sort -k 1,32 | guniq -w 32 -d --all-repeated=separate | sed -e 's/^[0-9a-f]*\ *//;' | |||
</geshi> | |||
== Recursive file search == | |||
Quite often I want to search for text in a source directory. The following bash function searches all files except those in the .svn directories. | |||
<geshi lang="bash"> | |||
ffind () | |||
{ | |||
find . -name ".svn" -prune -o -exec grep --color=auto "$@" {} + | |||
} | |||
</geshi> | |||
== append your ssh key with one command == | |||
<geshi lang="bash"> | |||
cat ~/.ssh/id_rsa.pub | ssh example.com bash -c "cat >> ~/.ssh/authorized_keys" | |||
</geshi> | |||
== vim == | |||
To install my vim theme: | |||
<geshi lang="bash"> | |||
mkdir -p ~/.vim/color | |||
cd ~/.vim/color | |||
wget http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/PapayaWhip.vim | |||
echo "colorscheme PapayaWhip" >> ~/.vimrc | |||
</geshi> | |||
== Remove CVS RCS Headers == | |||
Not everyone loves having RCS keywords in their files. Here's a one liner to remove them all from a code base. | |||
<geshi lang="bash"> | |||
find . -type f -name "*.java" | xargs grep -lE '\$(Header|Revision|Date|Id|Author):[^$]*\$' | \ | |||
xargs sed -rni '' -e '/\$(Header|Revision|Date|Id|Author):[^$]*\$/!p' | |||
</geshi> | |||
== Damn Small Linux on Dell Latitude D620 == | |||
I installed [http://www.damnsmalllinux.org/ DSL] onto a USB drive, and tried to boot linux off the drive. The kernel would always panic, regardless of the cheat codes I tried. Next, I tried burning DSL to a CD-ROM. [http://damnsmalllinux.org/cgi-bin/forums/ikonboard.cgi?act=ST&f=8&t=18380&st=0 Booting the CD-ROM] with the 'dsl acpi=off' switch got me to the desktop. I was able to mount the HD, but not see the USB drive. After trying [http://www.novell.com/coolsolutions/feature/11637.html all sorts of things] to mount the USB drive, I decided to try turning off USB emulation in the BIOS. This worked and I was able to copy the files from the NTFS partition to my 1 GB FAT USB stick. | |||
== tr == | |||
I like to use 'tr' to create long constant names in Java. When CheckStyle complains that '2004' is a magic number, I like to replace it with something more interesting than 'YEAR_2004'. I haven't found a way to do this inside of IntelliJ but having a Bash shell open makes this easy. | |||
<pre> | |||
$ echo "International Year to Commemorate the Struggle against Slavery and its Abolition" | tr '\ -' '__' | tr [:lower:] [:upper:] | |||
INTERNATIONAL_YEAR_TO_COMMEMORATE_THE_STRUGGLE_AGAINST_SLAVERY_AND_ITS_ABOLITION | |||
</pre> | |||
== Script to colorize source code using vim == | |||
* colorize.sh [[http://www.theeggeadventure.com/2006/colorize.sh.html view]] [[http://www.theeggeadventure.com/2006/colorize.sh download]] | |||
== Create a .tar.gz archive == | |||
<pre> | |||
tar -pczf name_of_your_archive.tar.gz /path/to/directory | |||
</pre> | |||
== Unzip and extract an archive == | == Unzip and extract an archive == | ||
<pre> | <pre> | ||
Line 8: | Line 85: | ||
<pre> | <pre> | ||
rsync -avz -e ssh --rsync-path=/usr/bin/rsync /u/eggebr/tmp/ttf-bitstream-vera-1.10/ egge@theeggeadventure.com:/home/egge/fonts | rsync -avz -e ssh --rsync-path=/usr/bin/rsync /u/eggebr/tmp/ttf-bitstream-vera-1.10/ egge@theeggeadventure.com:/home/egge/fonts | ||
rsync -avz -e ssh --rsync-path=/usr/bin/rsync /u/eggebr/.vimrc egge@theeggeadventure.com:/home/egge/ | |||
</pre> | </pre> | ||
== Backup ccnorthjersey.org == | == Backup [[http://www.ccnorthjersey.org ccnorthjersey.org]] == | ||
<pre> | <pre> | ||
$ rsync -avz -e ssh ccnorthj@ccnorthjersey.org:/home/ccnorthj /cygdrive/c/Backup/ccnorthjersey.org | $ rsync -avz -e ssh ccnorthj@ccnorthjersey.org:/home/ccnorthj /cygdrive/c/Backup/ccnorthjersey.org | ||
Line 17: | Line 95: | ||
== Backup theeggeadventure.com == | == Backup theeggeadventure.com == | ||
<pre> | <pre> | ||
$ rsync -avz -e ssh egge@ | $ rsync -avz -e ssh egge@theeggeadventure.com:/home/egge /cygdrive/c/Backup/theeggeadventure.com | ||
</pre> | </pre> | ||
Line 36: | Line 114: | ||
== Use sed to remove ANSI colors == | == Use sed to remove ANSI colors == | ||
< | <geshi lang="bash"> | ||
# better way - thanks timmah | |||
echo -e '\e[31mfoo\e[0m' | sed 's/\x1b\[[0-9]\{1,2\}\(;[0-9]\{1,2\}\)\{0,2\}m//g' | |||
# old way, useing ctrl-v ctrl-[ | |||
echo -e '\e[31mfoo\e[0m' | sed 's/^[\[[0-9]\+m//g' | echo -e '\e[31mfoo\e[0m' | sed 's/^[\[[0-9]\+m//g' | ||
</ | </geshi> | ||
Note, | Note: this works great on Linux, but not on OS X. Must be some difference betweent he GNU sed and BSD sed. | ||
== Redirecting sudo output == | == Redirecting sudo output == | ||
Line 53: | Line 134: | ||
<pre> | <pre> | ||
lsof +D $PWD | awk '{print $9}' | uniq | grep -v NAME | touch | |||
</pre> | |||
== Missing font problem == | |||
*Problem: I get this warning when running xemacs on a Linux WS3 host: | *Problem: I get this warning when running xemacs on a Linux WS3 host: | ||
Line 82: | Line 165: | ||
==Verify all the jar's in the classpath exist== | ==Verify all the jar's in the classpath exist== | ||
< | <geshi lang="bash"> | ||
# Warn if any jar's are missing | # Warn if any jar's are missing | ||
echo $CLASSPATH | tr ":" "\n" | xargs cksum > /dev/null | echo $CLASSPATH | tr ":" "\n" | xargs cksum > /dev/null | ||
</ | </geshi> | ||
Note: see the much better ruby script [[Classpathchecker.rb]] which does the same thing and also works on Windows. |
Latest revision as of 13:16, 8 October 2013
compopt
Getting this error: <geshi lang="bash"> compopt -o filenames bash: compopt: command not found </geshi>
Fix: You are using bash 3.0, try using bash 4.0+
Remove _2 files
Mac creates _2 when ever you copy a file the second time. <geshi lang="bash"> find . -name "*_2.???" -type f | while read f; do g="$(echo "$f" | sed -e 's/_2//;')"; if awk '{ print $1; }') = $(md5sum "$g" | awk '{ print $1; }') ; then rm "$f"; fi; done </geshi>
Find duplicate files
<geshi lang="bash"> find . -type f -print0 | xargs -0 -n1 md5sum | sort -k 1,32 | guniq -w 32 -d --all-repeated=separate | sed -e 's/^[0-9a-f]*\ *//;' </geshi>
Recursive file search
Quite often I want to search for text in a source directory. The following bash function searches all files except those in the .svn directories.
<geshi lang="bash"> ffind () {
find . -name ".svn" -prune -o -exec grep --color=auto "$@" {} +
} </geshi>
append your ssh key with one command
<geshi lang="bash"> cat ~/.ssh/id_rsa.pub | ssh example.com bash -c "cat >> ~/.ssh/authorized_keys" </geshi>
vim
To install my vim theme: <geshi lang="bash"> mkdir -p ~/.vim/color cd ~/.vim/color wget http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/PapayaWhip.vim echo "colorscheme PapayaWhip" >> ~/.vimrc </geshi>
Remove CVS RCS Headers
Not everyone loves having RCS keywords in their files. Here's a one liner to remove them all from a code base. <geshi lang="bash"> find . -type f -name "*.java" | xargs grep -lE '\$(Header|Revision|Date|Id|Author):[^$]*\$' | \
xargs sed -rni -e '/\$(Header|Revision|Date|Id|Author):[^$]*\$/!p'
</geshi>
Damn Small Linux on Dell Latitude D620
I installed DSL onto a USB drive, and tried to boot linux off the drive. The kernel would always panic, regardless of the cheat codes I tried. Next, I tried burning DSL to a CD-ROM. Booting the CD-ROM with the 'dsl acpi=off' switch got me to the desktop. I was able to mount the HD, but not see the USB drive. After trying all sorts of things to mount the USB drive, I decided to try turning off USB emulation in the BIOS. This worked and I was able to copy the files from the NTFS partition to my 1 GB FAT USB stick.
tr
I like to use 'tr' to create long constant names in Java. When CheckStyle complains that '2004' is a magic number, I like to replace it with something more interesting than 'YEAR_2004'. I haven't found a way to do this inside of IntelliJ but having a Bash shell open makes this easy.
$ echo "International Year to Commemorate the Struggle against Slavery and its Abolition" | tr '\ -' '__' | tr [:lower:] [:upper:] INTERNATIONAL_YEAR_TO_COMMEMORATE_THE_STRUGGLE_AGAINST_SLAVERY_AND_ITS_ABOLITION
Script to colorize source code using vim
Create a .tar.gz archive
tar -pczf name_of_your_archive.tar.gz /path/to/directory
Unzip and extract an archive
gzip -drv ruby-1.8.3.tar.gz tar -xf ruby-1.8.3.tar
Copy files from work to this website
rsync -avz -e ssh --rsync-path=/usr/bin/rsync /u/eggebr/tmp/ttf-bitstream-vera-1.10/ egge@theeggeadventure.com:/home/egge/fonts rsync -avz -e ssh --rsync-path=/usr/bin/rsync /u/eggebr/.vimrc egge@theeggeadventure.com:/home/egge/
Backup [ccnorthjersey.org]
$ rsync -avz -e ssh ccnorthj@ccnorthjersey.org:/home/ccnorthj /cygdrive/c/Backup/ccnorthjersey.org
Backup theeggeadventure.com
$ rsync -avz -e ssh egge@theeggeadventure.com:/home/egge /cygdrive/c/Backup/theeggeadventure.com
Get a stack trace from a running Python process
This will print the stack, and then the process will exit. I'm not sure how to get the stack without killing the process.
kill -SIGINT 28350
My bash prompt
Note - it's important to that the non-printing characters are enclosed in "\[" and "\[" so bash can do line wraps properly.
export PS1="\[\e[32m\]\h\[\e[0m\]@\[\e[34m\]\W$\[\e[0m\] "
Use sed to remove ANSI colors
<geshi lang="bash">
- better way - thanks timmah
echo -e '\e[31mfoo\e[0m' | sed 's/\x1b\[[0-9]\{1,2\}\(;[0-9]\{1,2\}\)\{0,2\}m//g'
- old way, useing ctrl-v ctrl-[
echo -e '\e[31mfoo\e[0m' | sed 's/^[\[[0-9]\+m//g' </geshi>
Note: this works great on Linux, but not on OS X. Must be some difference betweent he GNU sed and BSD sed.
Redirecting sudo output
Long answer: http://www.dagnall.net/blog/?p=41
Short answer:
sudo -u someuser /bin/bash -c \"command > out.txt\"
Touch all open files in a directory
lsof +D $PWD | awk '{print $9}' | uniq | grep -v NAME | touch
Missing font problem
- Problem: I get this warning when running xemacs on a Linux WS3 host:
Warning: Missing charsets in String to FontSet conversion Warning: Unable to load any usable fontset
I don't have this issue on RH 8.0 hosts or SunOS.
- Fix: The problem is the LANG environment variable.
It's probably set to en_US.UTF-8. Change it to en_US.iso88591, and the warning should go away. Or else find some fonts that are UTF-8 encoded, I suppose.
so you can set your .envrc or just do a
setenv LANG en_US.iso88591
Search & Replace text in a batch of files
for f in `ffind "*.java" | xargs grep -l "foo"`; do sed -e "s/foo/bar/" ${f} > tmp; mv -f tmp ${f} ; done
Verify all the jar's in the classpath exist
<geshi lang="bash">
- Warn if any jar's are missing
echo $CLASSPATH | tr ":" "\n" | xargs cksum > /dev/null </geshi>
Note: see the much better ruby script Classpathchecker.rb which does the same thing and also works on Windows.