A weekly listing of commands that are new to me or that I’ve had to refresh myself with.
Piping and Grep
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <h1>Pipe stderr< /h1 > command 2>&1 > /dev/null | command <h1>Grep stderr< /h1 > command 2>&1 > /dev/null | grep 'pattern' <h1>Colorize output< /h1 > command | grep --color 'pattern' <h1>Grep and colorize stderr< /h1 > command 2>&1 > /dev/null | grep --color 'pattern' |
C Programming
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <h1>Define a macro at compile time with definition = 1< /h1 > cc -Dmacro_name program.c <h1>gprof, profiles the time spent in each function of your c program< /h1 > cc -g -pg -o program program.c #generates gmon.out gprof program gmon.out > gprof.out <h1>Includes a table like:< /h1 > <h1>Each sample counts as 0.01 seconds.< /h1 > <h1>% cumulative self self total< /h1 > <h1> time seconds seconds calls ns /call ns /call name< /h1 > <h1>78.15 44.28 44.28 200000000 221.40 221.40 get< /h1 > <h1>9.64 49.74 5.46 400000000 13.65 13.65 generate_point< /h1 > <h1>7.74 54.12 4.38 200000000 21.93 21.93 hash_key< /h1 > <h1>2.52 55.55 1.43 200000000 7.15 251.50 calculate_distance< /h1 > <h1>1.59 56.45 0.90 main< /h1 > <h1>0.20 56.57 0.12 14514500 7.92 7.92 radians< /h1 > <h1>0.16 56.66 0.09 2902900 31.00 31.00 put< /h1 > <h1>0.00 56.66 0.00 1 0.00 0.00 hashtable_init< /h1 > <h1>0.00 56.66 0.00 1 0.00 0.00 hashtable_init_list< /h1 > |
SVN Issues on OSX
I got an error when trying to operate on an SVN repo over samba:
svn: Can’t move ‘.svn/tmp/entries’ to ‘.svn/entries’: Operation not permitted
1 | sudo chflags -R nouchg . # unset the OSX immutable flag |
Creating empty directories
I needed to create a bunch of placeholder directories in a repo for logging.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <h1>Lists the numbers 1 to 31, zero padded to length 2< /h1 > seq -f "%02g" 1 31 <h1>Creates directories logs01 to logs31< /h1 > for i in $( seq -f "%02g" 1 31); do mkdir logs$i; done ; <h1>Create an empty directory in a git repo, add the following gitignore to the directory< /h1 > cat > .gitignore <h1>Ignore everything in this directory< /h1 > * <h1>Except this file < /h1 > !.gitignore <h1>END WITH CTRL+d< /h1 > <h1>Copy the .gitignore into each directory< /h1 > for i in $( seq -f "%02g" 1 31); do cp .gitignore logs$i; done ; <h1>Remove the original .gitignore< /h1 > rm .gitignore |
References
- //stackoverflow.com/questions/2342826/how-to-pipe-stderr-and-not-stdout
- //gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
- //www.zsh.org/mla/users/2005/msg00215.html
- //www.cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC2
- //gaggle.systemsbiology.net/wiki/doku.php?id=svn
- //stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git-repository