Showing posts with label OSX. Show all posts
Showing posts with label OSX. Show all posts

Friday 13 May 2016

Extract pom.xml version number using Shell script - Scenario 1

Guys, in todays post we'll look into an example where we want to extract version number from pom.xml of a Maven based project. In other words, all we have to do is extract text between 2 strings from a file. Quite obviously we would use sed for that. But let's look into a scenario where you have to pipe sed to other unix commands.

FYI this will work universally on Linux/Unix/Mac OS X flavors.

Let's say I have a pom.xml file of a Maven based project and I want to display only the version number from it. As you may be aware, we define the version number within the <version> </version> tags.

For e.g. my pom.xml looks something like this :


Here we want to extract only the version number from the file. i.e in this case I only want to display 1.0-SNAPSHOT.

Did you notice that in our file we have two lines of the <version></version> tags. One for our main project version and the other is for the dependency version. Now if we use sed to extract text between the "version" words, it will give output like this below.

sed -n '/version/,/version/p' pom.xml
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>testapp</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>

      <version>3.8.1</version>

So let's display only the topmost line with head -1. That should help narrow down our output.

sed -n '/version/,/version/p' pom.xml | head -1
  <version>1.0-SNAPSHOT</version>

Now all we need is to extract the version number. Let's cut the output characters as follows :

sed -n '/version/,/version/p' pom.xml | head -1 | cut -c 12-23
1.0-SNAPSHOT

Cheers guys! That's what we wanted right? Now we could perhaps develop a script around this. Maybe have a variable which stores this version number. Perhaps we could use this variable for some conditional checks. Something like this :

#!/bin/bash
# Program to extract version number from the pom.xml

i=`sed -n '/version/,/version/p' /Users/ironcladzone/workspace/MavenTest/testapp/pom.xml | head -1 | cut -c 12-23`

echo $i

if [ $i = "1.0-SNAPSHOT" ]; then

echo "Version 1.0 Development copy. Team A is working on it."
else

echo "That's not a Version 1.0 Dev copy"

fi

Output :

./ExtractVersionFromPom.sh
1.0-SNAPSHOT

Version 1.0 Development copy. Team A is working on it.

The possibilities are limitless! Until next time, ciao!

Thursday 12 May 2016

Play audio file from Terminal on Mac OS X without iTunes

Guys, am sure this post will definitely interest you - how to play an audio file from Terminal on Mac OS X without using iTunes. Well, we play it using the "afplay" command.

Well here's what you need to do in Terminal :

afplay -q 1 --leaks /Users/ironcladzone/Music/Bo\ Saris\ -\ She\'s\ On\ Fire\ \(Maya\ Jane\ Coles\ Remix\).mp3 -d -r 1

Playing file: /Users/ironcladzone/Music/Bo Saris - She's On Fire (Maya Jane Coles Remix).mp3
Playing format: AudioStreamBasicDescription:  2 ch,  44100 Hz, '.mp3' (0x00000000) 0 bits/channel, 0 bytes/packet, 1152 frames/packet, 0 bytes/frame

Buffer Byte Size: 20135, Num Packets to Read: 19
Enable rate-scaled playback (rate = 1.00) using Spectral algorithm

-q switch is to set the quality level. 0 is default for low quality. Set it 1 for high quality version.

-d switch is for debugging which shows you the technical details like frames/packet, buffer byte size etc.

-r is the rate / speed of playback. Default is 1. Try changing it to 2 or 3 for speedier playback ;)

Oh and by the way, in case if you didn't notice, I was playing the cool Maya Jane Coles remix of Bo Saris' "She's on Fire". Maya Jane Coles rocks :)

Tuesday 10 May 2016

Print a triangle using * in a Bash script

Hello coders! Hows it going? Today we'll see a basic simple shell script to print a triangle using asterisk * only. Here's the code to do that :

#!/bin/bash
# Simple program to print a triangle using * of height 10

star="*"

for i in {1..10}
do
echo "$star";
star="$star *"

done

You see basically, all we are doing is append a * to itself recursively. Here we are using a basic for-loop to print a triangle of height 10. You can change the height as per your requirement, as needed.

Output :

*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *

* * * * * * * * * *

Cheers!

Friday 6 May 2016

Identify exact port number used by a process or app on Mac OSX

Guys, if you ever wanted to find out the exact specific port number used by a process/application on Unix/Mac OSX/Linux, type the following in Terminal :

top | awk '{print $2, $7}'

The output would be something like :

COMMAND #PORTS
awk 12
top 22+

top 19

This will show only the specific Command and Port columns from the top command and will skip other details like Process ID, % CPU utilisation , Memory usage etc.

Alternatively if you wanted to just find the port number used by a specific application, say for e.g. TextEdit, you could use the following command :

top | awk '{print $2, $7}' | grep TextEdit
TextEdit 140+
TextEdit 140

TextEdit 140

Cheers guys!

Thursday 5 May 2016

Read file line by line and count no. of lines using Shell script

Guys, in today's post we'll see how to parse a file line by line and count the number of lines in it.

We will simply use redirection to read the file. Note that we will pass the filename as a runtime parameter to the script.

Alright here we go. Suppose I have a file TextFile1.txt with the following contents. I want to print the total number of lines in it.

ABCD
DEFG
GHI
JKL
MNO
PQR
STU

VWXYZ

Now, here's the script part.

#!/bin/bash
#Sript to count number of lines in a file

File=$1

count=0

while read LINE

do

let count++

echo "$count $LINE"

done < $File


echo -e "Total $count Lines read\n"

Here's the output :

1 ABCD
2 DEFG
3 GHI
4 JKL
5 MNO
6 PQR
7 STU
8 VWXYZ

Total 8 Lines read

Cheers it has correctly displayed the count of lines in the file. In case of any questions/doubts, kindly leave your comments.

Saturday 30 April 2016

Start Stop Jenkins from Terminal on Mac OS X

Ola guys. I hope you came across my previous posts on setting up Ant and Maven with Jenkins. In today's post I'll show you how to start and stop Jenkins from Terminal on Mac OS X machine.

I assume you know how to shutdown Jenkins from console OR restart it from the URL field.

Alright so here we go.

For staring Jenkins from command line, type this in Terminal :

sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

Give it a few seconds for Jenkins to startup and you can then see the console in the browser. If you still stay executing the startup command again you'll get the following message :

/Library/LaunchDaemons/org.jenkins-ci.plist: service already loaded

In the meantime you can double check if Jenkins has started by checking the process status in Terminal :

ps -ef | grep jenkins

For stopping Jenkins from the command line, type this in Terminal :

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

A rougher way to stop Jenkins is by killing the process ID of Jenkins that you found above with the ps -ef command.


Wednesday 27 April 2016

Character Combinations using Shell Script

In today's post we'll look into a very simple entry level bash script in which we form all possible alphanumeric combinations using just 2 characters and save it in a file. You could tweak the program to suit your needs - e.g. all combinations of 6 or 7 or 8 characters or maybe include special characters as well. The file in which all these combinations are stored would be more like a dictionary.

#!/bin/bash
# Program to print all possible 2-character combinations

echo {a..z}{0..9} > /Users/ironcladzone/Documents/xyz.txt


echo {0..9}{a..z} >> /Users/ironcladzone/Documents/xyz.txt

Here's the output of xyz.txt :

a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 g0 g1 g2 g3 g4 g5 g6 g7 g8 g9 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 j0 j1 j2 j3 j4 j5 j6 j7 j8 j9 k0 k1 k2 k3 k4 k5 k6 k7 k8 k9 l0 l1 l2 l3 l4 l5 l6 l7 l8 l9 m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 n0 n1 n2 n3 n4 n5 n6 n7 n8 n9 o0 o1 o2 o3 o4 o5 o6 o7 o8 o9 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 u0 u1 u2 u3 u4 u5 u6 u7 u8 u9 v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 z0 z1 z2 z3 z4 z5 z6 z7 z8 z9
0a 0b 0c 0d 0e 0f 0g 0h 0i 0j 0k 0l 0m 0n 0o 0p 0q 0r 0s 0t 0u 0v 0w 0x 0y 0z 1a 1b 1c 1d 1e 1f 1g 1h 1i 1j 1k 1l 1m 1n 1o 1p 1q 1r 1s 1t 1u 1v 1w 1x 1y 1z 2a 2b 2c 2d 2e 2f 2g 2h 2i 2j 2k 2l 2m 2n 2o 2p 2q 2r 2s 2t 2u 2v 2w 2x 2y 2z 3a 3b 3c 3d 3e 3f 3g 3h 3i 3j 3k 3l 3m 3n 3o 3p 3q 3r 3s 3t 3u 3v 3w 3x 3y 3z 4a 4b 4c 4d 4e 4f 4g 4h 4i 4j 4k 4l 4m 4n 4o 4p 4q 4r 4s 4t 4u 4v 4w 4x 4y 4z 5a 5b 5c 5d 5e 5f 5g 5h 5i 5j 5k 5l 5m 5n 5o 5p 5q 5r 5s 5t 5u 5v 5w 5x 5y 5z 6a 6b 6c 6d 6e 6f 6g 6h 6i 6j 6k 6l 6m 6n 6o 6p 6q 6r 6s 6t 6u 6v 6w 6x 6y 6z 7a 7b 7c 7d 7e 7f 7g 7h 7i 7j 7k 7l 7m 7n 7o 7p 7q 7r 7s 7t 7u 7v 7w 7x 7y 7z 8a 8b 8c 8d 8e 8f 8g 8h 8i 8j 8k 8l 8m 8n 8o 8p 8q 8r 8s 8t 8u 8v 8w 8x 8y 8z 9a 9b 9c 9d 9e 9f 9g 9h 9i 9j 9k 9l 9m 9n 9o 9p 9q 9r 9s 9t 9u 9v 9w 9x 9y 9z

Wednesday 20 April 2016

Area & Circumference of a circle - Shell script for Mac OS X

Guys in todays post let us look into a simple basic Mathematics problem. Let us automate the calculation of area and circumference of a circle, using a simple bash script. It's an easy script useful for learning some basic shell scripting.

Note : Value of pi used is a constant value rounded off to 3.142

#!/bin/bash
#program to calculate area and circumference of a circle

echo "=========================================="
echo "Area & Circumference of Circle Calculator"
echo "=========================================="

pi=3.142

echo "Please enter the radius of the circle : "
read radius

circumference=`expr "2*$pi*$radius"|bc`
echo "Circumference of circle : $circumference"
area=`expr "$pi*$radius*$radius"|bc`

echo "Area of circle : $area"

Output :

./AreaOfCircle.sh
==========================================
Area & Circumference of Circle Calculator
==========================================
Please enter the radius of the circle : 
5
Circumference of circle : 31.420

Area of circle : 78.550

Also do check out my previous post on Simple Interest Tool for additional scripting reference.

Script to check if a server / machine is up and running

Guys you might often come across some situations where you want to check if a server or machine is physically up and running. Quite obviously you would use the ping command to do so.

But in today's post let us write a simple bash script to automate this.

#!/bin/bash
#program to check if a server/machine is up and running

ipaddr=192.168.1.34

ping -c 4 $ipaddr >> /dev/null

if [[ $? -ne 0 ]]
then
echo "FAIL: Server seems to be down and not responding" 

else
echo "SUCCESS : Server is up and running"


fi

Note : $? is a special Unix variable to check if the previous command was executed successfully or not. It returns a numerical value - either 0 or 1. If the command was executed successfully, it returns 0, else if not, it returns 1.

In above script, simply replace the variable 'ipaddr' value to your server's ip address and check.

Also note that by redirecting the output of the ping command to /dev/null, we are suppressing and silencing the output i.e the ping o/p will not be shown on terminal. If you want to see the exact output of ping, remove the ">> /dev/null" part.

Output :

./PingServer.sh
SUCCESS : Server is up and running

Cheers!

Simple Interest Calculation : Shell Script for Mac OS X

Guys, today we'll look into a very basic simple shell script to calculate the Simple Interest. For this we need 3 essential details :

Principal Amount
Rate of Interest
Period i.e No. of years

Here's the bash script to calculate the Simple Interest.

#!/bin/bash
#program to calculate simple interest

echo "================================"
echo "Simple Interest Calculation Tool"
echo "================================"
echo "Enter principal amount : "
read principal
echo "Enter Rate of Interest : "
read roi;
echo "Enter No. of years : "
read years;

simple_interest=`expr "($principal*$years*$roi)/100"|bc`
echo "Simple Interest = $simple_interest"

Output :

./SimpleInterest.sh
================================
Simple Interest Calculation Tool
================================
Enter principal amount : 
5000
Enter Rate of Interest : 
9.5
Enter No. of years : 
5

Simple Interest = 2375

If you note, we have used the bc command to evaluate our expression i.e the Simple Interest formula. More on bc can be read here.

How to identify available shells on Mac OS X

Guys you may be aware that you can find your current shell in Mac OSX or any Unix machine by typing the following in Terminal.

echo $SHELL
/bin/bash

But to identify the available shells on Mac OS X type the following :

cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

Also, if you ant to change your default shell, type this :

chsh
Changing shell for ironcladzone.

Password for ironcladzone: 

Hope it helps. Cheers!

Saturday 2 April 2016

Mac OS X - Hidden Gems : Part 3

Guys in today's new gem, we'll see how to play the hidden game Tetris on Mac OS X which comes bundled by default for FREE. Didn't you even know that? I bet you didn't!

Allright! So to play Tetris on Terminal, do this :

  • Open Terminal
  • Type emacs
  • Now hit the Esc button and immediately press x

  • When you see the M-x prompt, just type tetris. Now simply relax and play a cool game of Tetris. How cool is that?



Friday 1 April 2016

Upgrade Subversion on Mac OS X using Homebrew

Hi guys, in today's article we will see how to upgrade Subversion on Mac OS X using Homebrew. Subversion i.e SVN as you know is a popular centralised version controlling system.

First of all check in Terminal, the default pre-loaded version of Subversion that comes packaged with OS X.

svn --version
svn, version 1.7.20 (r1667490)

Now lets install Homebrew on the machine. For that just type the below command as mentioned on Homebrew's homepage. Btw for those who may be unaware, Homebrew is a free open source package management solution.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Now it will begin the installation process and will change/update the owner and permissions of the following folders.

==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1
==> The following directories will be made group writable:
/usr/local/.
/usr/local/bin
==> The following directories will have their owner set to ironcladzone:
/usr/local/.
/usr/local/bin
==> The following directories will have their group set to admin:
/usr/local/.
/usr/local/bin


Once Homebrew is installed, we need to install Subversion using it. First of all lets get some information about svn installation. Type this in terminal :

brew info subversion

subversion: stable 1.9.3 (bottled)
Version control system designed to be a better CVS
https://subversion.apache.org/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/subversion.rb
==> Dependencies
Build: pkg-config , scons
Required: sqlite , openssl
Optional: gpg-agent
==> Options
--universal
Build a universal binary
--with-gpg-agent
Build with support for GPG Agent
--with-java
Build Java bindings
--with-perl
Build Perl bindings
--with-python
Build with python support
--with-ruby
Build Ruby bindings
==> Caveats
svntools have been installed to:
  /usr/local/opt/subversion/libexec

You see there are some dependencies that Brew will install along with Svn. Dependencies like sqlite, openssl etc. Proceed with the installation now and be patient for a while till it finishes.

brew install subversion

==> Installing dependencies for subversion: readline, sqlite, openssl
==> Installing subversion dependency: readline
==> Downloading https://homebrew.bintray.com/bottles/readline-6.3.8.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring readline-6.3.8.el_capitan.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.
.
.
.
==> Caveats
svntools have been installed to:
  /usr/local/opt/subversion/libexec

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
🍺  /usr/local/Cellar/subversion/1.9.3: 148 files, 11.1M

Just check which svn versions are installed on your machine. I mean the locations of svn.

which -a svn
/usr/local/bin/svn
/usr/bin/svn

Now after the installation is complete, if you check svn --version you will still see the older version of svn. Hey but it should be 1.9.3 the latest version right?

svn --version
svn, version 1.7.20 (r1667490)

To fix this we need to add a line to ~/.bash_profile

sudo vi ~/.bash_profile

export PATH="/usr/local/bin:$PATH"

Now type : source ~/.bash_profile

Check the svn version now and it will show the latest one.

svn --version
svn, version 1.9.3 (r1718519)

Cheers! You just upgraded Subversion on Mac OS X. Hope it helps guys!

Tuesday 29 March 2016

Modify a part of file path using Sed in Mac OS X - Tricky Scenario

Lets look into a fairly simple task with a slight twist today - update/modify a part of the file paths mentioned within a file using Sed from command line in Unix/Mac OS X. Mark this as a tricky interview question.

Let's consider a simple example. For instance we have a text file named Filepaths.txt which has the following file path details :

/Users/ironcladzone/Downloads/file1.txt
/Users/ironcladzone/Downloads/image.jpg
/Users/ironcladzone/Downloads/presentation.ppt
/Users/ironcladzone/Downloads/Spreadsheet.xls
/Users/ironcladzone/Downloads/Audio.mp3
/Users/ironcladzone/Downloads/Movie.avi
/Users/Shared/Downloads/Test1
/Users/Shared/Downloads/ABC
/Users/ironcladzone/Downloads/MovieClip.mov

Here we want to replace only a part of the file path i.e replace all instances of the word"Downloads" with "Documents". Sure you can instantly do it in some text editor using "Replace All". But the catch is I want to replace the word Downloads with Documents if and only if it exists in the /Users/ironcladzone/Downloads/ path. I want to skip all other file paths. In this case I want the path /Users/Shared/Downloads/Test1 & /Users/Shared/Downloads/ABC to remain intact and unchanged.

So let's see how to do it from command line using a Sed regex.

Open up terminal and type this :

sed 's/\/Users\/ironcladzone\/Downloads/\/Users\/ironcladzone\/Documents/g' FilePaths.txt

So here's the output as expected. Cheers!

/Users/ironcladzone/Documents/file1.txt
/Users/ironcladzone/Documents/image.jpg
/Users/ironcladzone/Documents/presentation.ppt
/Users/ironcladzone/Documents/Spreadsheet.xls
/Users/ironcladzone/Documents/Audio.mp3
/Users/ironcladzone/Documents/Movie.avi
/Users/Shared/Downloads/Test1
/Users/Shared/Downloads/ABC
/Users/ironcladzone/Documents/MovieClip.mov

Sunday 20 March 2016

Double digit Arguments Passed to Shell script - Tricky Scenario

Guys, you know that $# is a special variable that gives the arguments passed to the shell script.

$1 will give the 1st argument passed, $4 will give the 4th argument passed to the script.

Let's consider a tricky scenario. 
Note : This is a tricky interview question.

Let's say you want to pass 12 arguments to the script.

Did you notice that after 9th argument, all arguments passed would be of 2 digits... I mean the 10th, 11th and 12th argument.

So let's say to get the 12th argument, you may tend to use $12. But hey look again! Thats not right! The script doesn't understand that. Check out a practical example to know what I mean.

Let's take a simple bash script and compare the output of Wrong and Correct versions.

[WRONG VERSION]

#!/bin/bash

# Call this script with 12 parameters

echo "1st parameter is $1";
echo "2nd parameter is $2";
echo "3rd paramter is $3";
echo "4th parameter is $4";
echo "5th paramter is $5";
echo "6th parameter is $6";
echo "7th parameter is $7";
echo "8th paramter is $8";
echo "9th parameter is $9";
echo "10th parameter is $10";
echo "11th parameter is $11";

echo "12th paramter is $12";

Now lets say you execute the script with 12 arguments. Watch the output :

./Parameters_Pass.sh 5 10 15 20 25 30 32 35 42 45 50 65

1st parameter is 5
2nd parameter is 10
3rd paramter is 15
4th parameter is 20
5th paramter is 25
6th parameter is 30
7th parameter is 32
8th paramter is 35
9th parameter is 42
10th parameter is 50
11th parameter is 51
12th paramter is 52

See how the 10th 11th and 12t argument that we passed got screwed up. Instead of 45, 50, 65 what we see is 50, 51 and 52. Thats's so wrong, right?

Now here's the correct version of the script.

[CORRECT VERSION]

#!/bin/bash

# Call this script with 12 parameters

echo "1st parameter is $1";
echo "2nd parameter is $2";
echo "3rd paramter is $3";
echo "4th parameter is $4";
echo "5th paramter is $5";
echo "6th parameter is $6";
echo "7th parameter is $7";
echo "8th paramter is $8";
echo "9th parameter is $9";
echo "10th parameter is ${10}";
echo "11th parameter is ${11}";

echo "12th paramter is ${12}";

Observe the brace brackets used for 10th, 11th and 12th argument. Now if you execute the script with 12 arguments again, we'll get the correct output as expected.

./Parameters_Pass.sh 5 10 15 20 25 30 32 35 42 45 50 65

1st parameter is 5
2nd parameter is 10
3rd paramter is 15
4th parameter is 20
5th paramter is 25
6th parameter is 30
7th parameter is 32
8th paramter is 35
9th parameter is 42
10th parameter is 45
11th parameter is 50
12th paramter is 65

Saturday 19 March 2016

List only hidden files in Unix / Mac OS X

Folks you may be aware that ls -a will list all hidden files and visible files as well.

But to list only the hidden files, type the following in Terminal :

ls -ld .?*

This is one of the tricky interview questions, so make a note of this.

Friday 18 March 2016

Mac OS X - Hidden Gems : Part 2

Oh boy! yet another Mac OS X hidden gem that you probably weren't aware of.

Type this is Terminal to read Mrs Fields secret Cookies recipe.

open /usr/share/emacs/22.1/etc/COOKIES

Mac OS X - Hidden Gems : Part 1

Guys, presenting a mind blowing Mac OS X hidden gem that I just stumbled onto.

Type the following in Terminal to read some Apple supplied Jokes :)

open /usr/share/emacs/22.1/etc/JOKES

Thursday 17 March 2016

How to change Bash History Size on Mac OS X

Guys, I hope you must be aware, that the commands that you type in terminal get saved in the history. On Mac OS X, the default size of commands history is 500 i.e it saves the most recent 500 commands that you typed in terminal in a special file named "bash_history".

Open Terminal and check for yourself.

vi ~/.bash_history

Hit escape and type this to see the history limit
:set number


Now to change this default limit of 500 to something else, lets do the following in Terminal.

sudo vi ~/.bash_profile

Enter your password.

Add this line to the file :

#history
HISTFILESIZE=1000

That's it. It means from now on, it will save upto 1000 latest commands that you typed in history. Ciao!

Monday 14 March 2016

Remove all Whitespaces from a file in Mac OS X

Lets look into a simple task today - remove all whitespaces from a file in Unix / Mac OS X from the command line.

To do so, let's consider a small example.

Let's have simple text file named Space_File.txt withe the below content. You see it's a regular text file with words separated with spaces.

1.Here is a cute little tutorial for
2.trying out different things using
3.the Stream Editor or Sed in Unix.
4.The author of this tutorial is
5.none other than IroncladWriter
6.himself. The tutorial aims to
7.teach folks and educate how
8.they could unlock the power
9.of Unix to the fullest. Am posting
10.this on the blog IronCladZone
11.The best blog on the whole of
12.internet, where you can learn
13.technical stuff as well enjoy 
14.entertaining tidbits like movies,
15.music, television, fashion, food,
16.shopping, travel, trends etc.
17.Just sit back, relax and

18.ENJOY THE RIDE :)

Now, we want to remove all the whitespace between the words. So let's use the following command.

tr -d ' \d' <Space_File.txt >NoSpace_File.txt

In this we pass the Space_Text.txt as input and redirect the output to a new file - NoSpace_File.txt. Note the space before \d. Do not miss this space. I repeat, DO NOT miss this space. It has to be ' \d' and not '\d'. Got it? All rite so the resultant output is as expected with no spaces:

1.Hereisacutelittletutorialfor
2.tryingoutifferentthingsusing
3.theStreamEitororSeinUnix.
4.Theauthorofthistutorialis
5.noneotherthanIronclaWriter
6.himself.Thetutorialaimsto
7.teachfolksaneucatehow
8.theycoulunlockthepower
9.ofUnixtothefullest.Amposting
10.thisontheblogIronClaZone
11.Thebestblogonthewholeof
12.internet,whereyoucanlearn
13.technicalstuffaswellenjoy
14.entertainingtibitslikemovies,
15.music,television,fashion,foo,
16.shopping,travel,trensetc.
17.Justsitback,relaxan

18.ENJOYTHERIDE:)
Related Posts Plugin for WordPress, Blogger...
eXTReMe Tracker