Tech Tip's : Do's and dont's


January 2015

How to extract features from opensmile

For installation of openSMILE toolkit please refer to the link 
Installation of openSMILE

How to extract features using openSMILE toolkit?

Demo Feature file to check if openSMILE is working completely
This should generate a file in the output folder path
If the SMILExtract is not added to the /usr/bin path then you need to use ./SMILExtract from the openSMILE folder path

./SMILExtract –C config/demo/demo1_energy.conf –I /input.wav –O /

Chroma Features

./SMILExtract -C config/chroma_fft.conf -I input.wav -O chroma.csv

./SMILExtract –cfgFileTemplate –configDflt cWaveSource,cFramer,cEnergy,cCsvSink -1 1 2>

MFCC Features

./SMILExtract –C config/MFCC12_0_D_A.conf –I input.wav –O output.mfcc.htk

PLP Features

./SMILExtract –C config/PLP_E_D_A.conf –I input.wav –O output.plp.htk

 Prosody Features
 ./SMILExtract –C config/prosodyShs.conf –I input.wav –O prosody.csv


Most Frequently Used UNIX / Linux Commands

Most Frequently Used UNIX / Linux Command

This article provides practical examples for 50 most frequently used commands in Linux / UNIX.
This is not a comprehensive list by any means, but this should give you a jumpstart on some of the common Linux commands. Bookmark this article for your future reference.

Did I miss any frequently used Linux commands? Leave a comment and let me know.

1. tar command examples

Create a new tar archive.

$ tar cvf archive_name.tar dirname/

Extract from an existing tar archive.

$ tar xvf archive_name.tar

View an existing tar archive.

$ tar tvf archive_name.tar

More tar examples: The Ultimate Tar Command Tutorial with 10 Practical Examples

2. grep command examples

Search for a given string in a file (case in-sensitive search).

$ grep -i "the" demo_file

Print the matched line, along with the 3 lines after it.

$ grep -A 3 -i "example" demo_text

Search for a given string in all files recursively

$ grep -r "ramesh" *

More grep examples: Get a Grip on the Grep! – 15 Practical Grep Command Examples

3. find command examples

Find files using file-name ( case in-sensitve find)

# find -iname "MyCProgram.c"

Execute commands on files found by the find command

$ find -iname "MyCProgram.c" -exec md5sum {} \;

Find all empty files in home directory

# find ~ -empty

More find examples: Mommy, I found it! — 15 Practical Linux Find Command Examples

4. ssh command examples

Login to remote host

ssh -l jsmith

Debug ssh client

ssh -v -l jsmith

Display ssh client version

$ ssh -V
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003

More ssh examples: 5 Basic Linux SSH Client Commands

5. sed command examples

When you copy a DOS file to Unix, you could find \r\n in the end of each line. This example converts the DOS file format to Unix file format using sed command.

$sed 's/.$//' filename

Print file content in reverse order

$ sed -n '1!G;h;$p' thegeekstuff.txt

Add line number for all non-empty-lines in a file

$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

More sed examples: Advanced Sed Substitution Examples

6. awk command examples

Remove duplicate lines using awk

$ awk '!($0 in array) { array[$0]; print }' temp

Print all lines from /etc/passwd that has the same uid and gid

$awk -F ':' '$3==$4' passwd.txt

Print only specific field from a file.

$ awk '{print $2,$5;}' employee.txt

More awk examples: 8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

7. vim command examples

Go to the 143rd line of file

$ vim +143 filename.txt

Go to the first match of the specified

$ vim +/search-term filename.txt

Open the file in read only mode.

$ vim -R /etc/passwd

More vim examples: How To Record and Play in Vim Editor

8. diff command examples

Ignore white space while comparing.

# diff -w name_list.txt name_list_new.txt

John M Doe
> Jason Bourne

More diff examples: Top 4 File Difference Tools on UNIX / Linux – Diff, Colordiff, Wdiff, Vimdiff

9. sort command examples

Sort a file in ascending order

$ sort names.txt

Sort a file in descending order

$ sort -r names.txt

Sort passwd file by 3rd field.

$ sort -t: -k 3n /etc/passwd | more

10. export command examples

To view oracle related environment variables.

$ export | grep ORACLE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"

To export an environment variable:

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0

11. xargs command examples

Copy all images to external hard-drive

# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

Search all jpg images in the system and archive it.

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

Download all the URLs mentioned in the url-list.txt file

# cat url-list.txt | xargs wget –c

12. ls command examples

Display filesize in human readable format (e.g. KB, MB etc.,)

$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

Order Files Based on Last Modified Time (In Reverse Order) Using ls -ltr

$ ls -ltr

Visual Classification of Files With Special Characters Using ls -F

$ ls -F

More ls examples: Unix LS Command: 15 Practical Examples

13. pwd command

pwd is Print working directory. What else can be said about the good old pwd who has been printing the current directory name for ages.

14. cd command examples

Use “cd -” to toggle between the last two directories
Use “shopt -s cdspell” to automatically correct mistyped directory names on cd
More cd examples: 6 Awesome Linux cd command Hacks

15. gzip command examples

To create a *.gz compressed file:

$ gzip test.txt

To uncompress a *.gz file:

$ gzip -d test.txt.gz

Display compression ratio of the compressed file using gzip -l

$ gzip -l *.gz
compressed uncompressed ratio uncompressed_name
23709 97975 75.8% asp-patch-rpms.txt

16. bzip2 command examples

To create a *.bz2 compressed file:

$ bzip2 test.txt

To uncompress a *.bz2 file:

bzip2 -d test.txt.bz2

More bzip2 examples: BZ is Eazy! bzip2, bzgrep, bzcmp, bzdiff, bzcat, bzless, bzmore examples

17. unzip command examples

To extract a *.zip compressed file:

$ unzip

View the contents of *.zip file (Without unzipping it):

$ unzip -l
Length Date Time Name
-------- ---- ---- ----
40995 11-30-98 23:50 META-INF/MANIFEST.MF
32169 08-25-98 21:07 classes_
15964 08-25-98 21:07 classes_names
10542 08-25-98 21:07 classes_ncomp

18. shutdown command examples

Shutdown the system and turn the power off immediately.

# shutdown -h now

Shutdown the system after 10 minutes.

# shutdown -h +10

Reboot the system using shutdown command.

# shutdown -r now

Force the filesystem check during reboot.

# shutdown -Fr now

19. ftp command examples

Both ftp and secure ftp (sftp) has similar commands. To connect to a remote server and download multiple files, do the following.

$ ftp IP/hostname
ftp> mget *.html

To view the file names located on the remote server before downloading, mls ftp command as shown below.

ftp> mls *.html -

More ftp examples: FTP and SFTP Beginners Guide with 10 Examples

20. crontab command examples

View crontab entry for a specific user

# crontab -u john -l

Schedule a cron job every 10 minutes.

*/10 * * * * /home/ramesh/check-disk-space

More crontab examples: Linux Crontab: 15 Awesome Cron Job Examples

21. service command examples

Service command is used to run the system V init scripts. i.e Instead of calling the scripts located in the /etc/init.d/ directory with their full path, you can use the service command.
Check the status of a service:

# service ssh status

Check the status of all the services.

service --status-all

Restart a service.

# service ssh restart

22. ps command examples

ps command is used to display information about the processes that are running in the system.
While there are lot of arguments that could be passed to a ps command, following are some of the common ones.
To view current running processes.

$ ps -ef | more

To view current running processes in a tree structure. H option stands for process hierarchy.

$ ps -efH | more

23. free command examples

This command is used to display the free, used, swap memory available in the system.
Typical free command output. The output is displayed in bytes.

$ free
total used free shared buffers cached
Mem: 3566408 1580220 1986188 0 203988 902960
-/+ buffers/cache: 473272 3093136
Swap: 4000176 0 4000176

If you want to quickly check how many GB of RAM your system has use the -g option. -b option displays in bytes, -k in kilo bytes, -m in mega bytes.

$ free -g
total used free shared buffers cached
Mem: 3 1 1 0 0 0
-/+ buffers/cache: 0 2
Swap: 3 0 3

If you want to see a total memory ( including the swap), use the -t switch, which will display a total line as shown below.

ramesh@ramesh-laptop:~$ free -t
total used free shared buffers cached
Mem: 3566408 1592148 1974260 0 204260 912556
-/+ buffers/cache: 475332 3091076
Swap: 4000176 0 4000176
Total: 7566584 1592148 5974436

24. top command examples

top command displays the top processes in the system ( by default sorted by cpu usage ). To sort top output by any column, Press O (upper-case O) , which will display all the possible columns that you can sort by as shown below.

Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return

a: PID = Process Id v: nDRT = Dirty Pages count
d: UID = User Id y: WCHAN = Sleeping in Function
e: USER = User Name z: Flags = Task Flags

To displays only the processes that belong to a particular user use -u option. The following will show only the top processes that belongs to oracle user.

$ top -u oracle

More top examples: Can You Top This? 15 Practical Linux Top Command Examples

25. df command examples

Displays the file system disk space usage. By default df -k displays output in bytes.

$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 29530400 3233104 24797232 12% /
/dev/sda2 120367992 50171596 64082060 44% /home

df -h displays output in human readable form. i.e size will be displayed in GB’s.

ramesh@ramesh-laptop:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 3.1G 24G 12% /
/dev/sda2 115G 48G 62G 44% /home

Use -T option to display what type of file system.

ramesh@ramesh-laptop:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 29530400 3233120 24797216 12% /
/dev/sda2 ext4 120367992 50171596 64082060 44% /home

26. kill command examples

Use kill command to terminate a process. First get the process id using ps -ef command, then use kill -9 to kill the running Linux process as shown below. You can also use killall, pkill, xkill to terminate a unix process.

$ ps -ef | grep vim
ramesh 7243 7222 9 22:43 pts/2 00:00:00 vim

$ kill -9 7243

More kill examples: 4 Ways to Kill a Process – kill, killall, pkill, xkill

27. rm command examples

Get confirmation before removing the file.

$ rm -i filename.txt

It is very useful while giving shell metacharacters in the file name argument.
Print the filename and get confirmation before removing the file.

$ rm -i file*

Following example recursively removes all files and directories under the example directory. This also removes the example directory itself.

$ rm -r example

28. cp command examples

Copy file1 to file2 preserving the mode, ownership and timestamp.

$ cp -p file1 file2

Copy file1 to file2. if file2 exists prompt for confirmation before overwritting it.

$ cp -i file1 file2

29. mv command examples

Rename file1 to file2. if file2 exists prompt for confirmation before overwritting it.

$ mv -i file1 file2

Note: mv -f is just the opposite, which will overwrite file2 without prompting.
mv -v will print what is happening during file rename, which is useful while specifying shell metacharacters in the file name argument.

$ mv -v file1 file2

30. cat command examples

You can view multiple files at the same time. Following example prints the content of file1 followed by file2 to stdout.

$ cat file1 file2

While displaying the file, following cat -n command will prepend the line number to each line of the output.

$ cat -n /etc/logrotate.conf
1 /var/log/btmp {
2 missingok
3 monthly
4 create 0660 root utmp
5 rotate 1
6 }

31. mount command examples

To mount a file system, you should first create a directory and mount it as shown below.

# mkdir /u01

# mount /dev/sdb1 /u01

You can also add this to the fstab for automatic mounting. i.e Anytime system is restarted, the filesystem will be mounted.

/dev/sdb1 /u01 ext2 defaults 0 2

32. chmod command examples

chmod command is used to change the permissions for a file or directory.
Give full access to user and group (i.e read, write and execute ) on a specific file.

$ chmod ug+rwx file.txt

Revoke all access for the group (i.e read, write and execute ) on a specific file.

$ chmod g-rwx file.txt

Apply the file permissions recursively to all the files in the sub-directories.

$ chmod -R ug+rwx file.txt

More chmod examples: 7 Chmod Command Examples for Beginners

33. chown command examples

chown command is used to change the owner and group of a file. \
To change owner to oracle and group to db on a file. i.e Change both owner and group at the same time.

$ chown oracle:dba

Use -R to change the ownership recursively.

$ chown -R oracle:dba /home/oracle

34. passwd command examples

Change your password from command line using passwd. This will prompt for the old password followed by the new password.

$ passwd

Super user can use passwd command to reset others password. This will not prompt for current password of the user.

# passwd USERNAME

Remove password for a specific user. Root user can disable password for a specific user. Once the password is disabled, the user can login without entering the password.

# passwd -d USERNAME

35. mkdir command examples

Following example creates a directory called temp under your home directory.

$ mkdir ~/temp

Create nested directories using one mkdir command. If any of these directories exist already, it will not display any error. If any of these directories doesn’t exist, it will create them.

$ mkdir -p dir1/dir2/dir3/dir4/

36. ifconfig command examples

Use ifconfig command to view or configure a network interface on the Linux system.
View all the interfaces along with status.

$ ifconfig -a

Start or stop a specific interface using up and down command as shown below.

$ ifconfig eth0 up

$ ifconfig eth0 down

More ifconfig examples: Ifconfig: 7 Examples To Configure Network Interface

37. uname command examples

Uname command displays important information about the system such as — Kernel name, Host name, Kernel release number,
Processor type, etc.,
Sample uname output from a Ubuntu laptop is shown below.

$ uname -a
Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

38. whereis command examples

When you want to find out where a specific Unix command exists (for example, where does ls command exists?), you can execute the following command.

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

When you want to search an executable from a path other than the whereis default path, you can use -B option and give path as argument to it. This searches for the executable lsmk in the /tmp directory, and displays it, if it is available.

$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

39. whatis command examples

Whatis command displays a single line description about a command.

$ whatis ls
ls (1) - list directory contents

$ whatis ifconfig
ifconfig (8) - configure a network interface

40. locate command examples

Using locate command you can quickly search for the location of a specific file (or group of files). Locate command uses the database created by updatedb.
The example below shows all files in the system that contains the word crontab in it.

$ locate crontab

41. man command examples

Display the man page of a specific command.

$ man crontab

When a man page for a command is located under more than one section, you can view the man page for that command from a specific section as shown below.

$ man SECTION-NUMBER commandname

Following 8 sections are available in the man page.

  1. General commands
  2. System calls
  3. C library functions
  4. Special files (usually devices, those found in /dev) and drivers
  5. File formats and conventions
  6. Games and screensavers
  7. Miscellaneous
  8. System administration commands and daemons

For example, when you do whatis crontab, you’ll notice that crontab has two man pages (section 1 and section 5). To view section 5 of crontab man page, do the following.

$ whatis crontab
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron

$ man 5 crontab

42. tail command examples

Print the last 10 lines of a file by default.

$ tail filename.txt

Print N number of lines from the file named filename.txt

$ tail -n N filename.txt

View the content of the file in real time using tail -f. This is useful to view the log files, that keeps growing. The command can be terminated using CTRL-C.

$ tail -f log-file

More tail examples: 3 Methods To View tail -f output of Multiple Log Files in One Terminal

43. less command examples

less is very efficient while viewing huge log files, as it doesn’t need to load the full file while opening.

$ less huge-log-file.log

One you open a file using less command, following two keys are very helpful.

CTRL+F – forward one window
CTRL+B – backward one window

More less examples: Unix Less Command: 10 Tips for Effective Navigation

44. su command examples

Switch to a different user account using su command. Super user can switch to any other user without entering their password.


Execute a single command from a different account name. In the following example, john can execute the ls command as raj username. Once the command is executed, it will come back to john’s account.

[john@dev-server]$ su - raj -c 'ls'


Login to a specified user account, and execute the specified shell instead of the default shell.


45. mysql command examples

mysql is probably the most widely used open source database on Linux. Even if you don’t run a mysql database on your server, you might end-up using the mysql command ( client ) to connect to a mysql database running on the remote server.
To connect to a remote mysql database. This will prompt for a password.

$ mysql -u root -p -h

To connect to a local mysql database.

$ mysql -u root -p

If you want to specify the mysql root password in the command line itself, enter it immediately after -p (without any space).

46. yum command examples

To install apache using yum.

$ yum install httpd

To upgrade apache using yum.

$ yum update httpd

To uninstall/remove apache using yum.

$ yum remove httpd

47. rpm command examples

To install apache using rpm.

# rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm

To upgrade apache using rpm.

# rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm

To uninstall/remove apache using rpm.

# rpm -ev httpd

More rpm examples: RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages

48. ping command examples

Ping a remote host by sending only 5 packets.

$ ping -c 5

More ping examples: Ping Tutorial: 15 Effective Ping Command Examples

49. date command examples

Set the system date:

# date -s "01/31/2010 23:59:53"

Once you’ve changed the system date, you should syncronize the hardware clock with the system date as shown below.

# hwclock –systohc

# hwclock --systohc –utc

50. wget command examples

The quick and effective method to download software, music, video from internet is using wget command.

$ wget

Download and store it with a different name.

$ wget -O

Installation of Xilinx ISE on Debian Linux, Fedora

Before the magic begins..

The Xilinx ISE is a powerful design suite for FPGAs/CPLDs manufactured by Xilinx. It consist of several tools that give possibility to design, debug, simulate and program the FPGAs. Unfortunately the Xilinx ISE is officially supported only on the one linux OS, namely, Rad Hat. However it does not mean that the Xilinx ISE would not work on other linux platforms, but requires additional postinstallation. The modifications, that you should make to force the tools work, depend on your OS and could be not trivial at all. The only help are tips’n’tricks on numerous FPGA forums and personal blogs, and I want to thank all of their authors. After spending of days for complete postinstallation I believe in importance of writing the following tutorial to save time of people that want to design FPGAs under linux.

First, I want to clarify software versions and installing path I have used. So take into account, that you could have something different:

OS Debian “Wheezy” 7.0.0 (64-bit)
ISE version 14.6 System Edition
path /opt/Xilinx/14.6/ISE_DS/

I will skip the description of installation procedure, because everything is simple there and anyway there is always am installation guide with nice step-to-step screenshots. The only thing that I want to point is that you should uncheck “Install cable drivers” and “Acquire or Manage a License Key” boxes because they will not help us anyway 🙂

If you install ISE to write protected folder (like me), then make sure that .xinstall folder is not write protected

$ sudo chmod -R 777 /opt/Xilinx/14.6/ISE_DS/.xinstall/

After finishing of installation process don’t hurry to launch ISE, you should first set the environment variables and launch settings64(32).sh script. There are different ways to manage it, I prefer it to be done during the boot of my OS by creating of the script in “/etc/profile.d”

$ sudo gedit /etc/profile.d/

and writing there

export XILINXD_LICENSE_FILE=”/opt/Xilinx/14.5/ISE_DS/Xilinx.lic”
export PATH=$PATH:$ISE_DS_PATH/ISE/bin/lin64:$ISE_DS_PATH/EDK/bin/lin64
export PATH=$PATH:$ISE_DS_PATH/ISE/sysgen/bin/lin64:$ISE_DS_PATH/ISE/sysgen/util
export PATH=$PATH:$ISE_DS_PATH/PlanAhead/bin
source $ISE_DS_PATH/

where one of variables sets the path to your license file or address of a server if you use float license. After next boot of your OS or restarting of profile.d scripts the ISE tools could be launched just by typing ise, impact, sysgen etc in a command line.

USB-JTAG cable drivers

If you try to write a firmware with use of Impact, he will not see your ISB-JTAG programmer and will give you an error where windrvr6 driver is mentioned, but Impact should use standard libusb driver. So, first install it

$ sudo apt-get install fxload libusb-0.1-4 libusb-dev
[For fedora the installation file is libusb.x86_64 and libusb-devel.x86_64]

then copy the rules-file from ISE directory

$ sudo cp /opt/Xilinx/14.6/ISE_DS/ISE/bin/lin64/xusbdfwu.rules /etc/udev/rules.d/xusbdfwu.rules

You need to edit it a bit by removing BUS==”usb , replacing SYSFS by ATTRS and $TEMPNODE by $tempnode

$ sudo sed -i -e ‘s/TEMPNODE/tempnode/’ -e ‘s/SYSFS/ATTRS/g’ -e ‘s/BUS/SUBSYSTEMS/’ /etc/udev/rules.d/xusbdfwu.rules

In this rules-file is written that if you plug the JTAG programmers with known VendorIDs and ProductIDs, then fxload will download proper firmwares from /usr/lib/ directory to programmers. Copy the usb firmware to the expected location

$ sudo cp /opt/Xilinx/14.6/ISE_DS/common/bin/lin64/xusb*.hex /usr/share

Create a link for the usb library, because Impact will search for libusb in /usr/lib/

$ sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib/

Restart udev and replug your programmer

$ sudo /etc/init.d/udev restart

If you use only ISE and Impact then the postinstallation is done for you and you can start design FPGAs. In next sections I will write about the changes you should make to work with other tools of the ISE suite.

ChipScope Analyzer

Analyzer uses bash features, however has #!/bin/sh which should be changed to #!/bin/bash

$ sudo sed -i -e ‘s/#!\/bin\/sh/#!\/bin\/bash/’ /opt/Xilinx/14.5/ISE_DS/ISE/bin/lin64/unwrapped/analyzer

System Generator

The same story with sysgen

$ sudo sed -i -e ‘s/#!\/bin\/sh/#!\/bin\/bash/’ /opt/Xilinx/14.5/ISE_DS/ISE/sysgen/util/sysgen

FPGA Editor

FPGA editor looks for library, so give it tom him

$ sudo apt-get install libmotif4 libstdc++5
$ sudo ln -s /usr/lib/ /usr/lib/

libstdc++ library fix

libstdc++ libraries are included with ISE suite, but are too old for other software and it leads to versions’ conflict, for example, when you work with ISim or some of ISE tools try to open internet links in browser. You should replace files with links to up-to-date libraries:

$ cd /opt/Xilinx/14.5/ISE_DS/common/lib/lin64
$ sudo sudo mv
$ sudo sudo mv
$ sudo sudo mv
$ sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.7/
$ sudo ln -s
$ sudo ln -s


XSDK looks for the gmake executable, you should readdress it to make

$ sudo ln -s /usr/bin/make /usr/bin/gmake

Bells and whistels

This improvement is not necessary, but makes ISE more user-friendly by adding of tools’ icons to menu and associating of .ise, .xise, .ipf etc filetypes to corresponding executables. I have prepared all icons, MIME-files and menu entities, so you can download all of them. In the archive you can also find script of the following content

# Script that installs icons, menu entities and MIME-types for Xilinx ISE

echo “Copying icons to /usr/share/icons/”
sudo cp xilinx.svg ise.svg impact.svg chipscope.svg xps.svg planAhead.svg sysgen.svg /usr/share/icons/hicolor/scalable/apps/

echo “Adding items to main menu”
sudo cp /usr/share/desktop-directories/
sudo cp /etc/xdg/menus/applications-merged/

echo “Updating icons”
sudo xdg-icon-resource forceupdate

echo “Registering MIME types”
xdg-mime install ise-mime.xml
xdg-mime install impact-mime.xml
xdg-mime install chipscope-mime.xml
xdg-mime install xps-mime.xml
xdg-mime install planAhead-mime.xml

echo “Installing icons for filetypes”
xdg-icon-resource install –context mimetypes –size 48 ise.png application-x-ise
xdg-icon-resource install –context mimetypes –size 32 impact.png application-x-impact
xdg-icon-resource install –context mimetypes –size 48 chipscope.png application-x-chipscope
xdg-icon-resource install –context mimetypes –size 64 xps.png application-x-xps
xdg-icon-resource install –context mimetypes –size 64 planAhead.png application-x-planAhead

echo “Installing menu items”
xdg-desktop-menu install –novendor ise.desktop
xdg-desktop-menu install –novendor impact.desktop
xdg-desktop-menu install –novendor impact-ipf.desktop
xdg-desktop-menu install –novendor chipscope.desktop
xdg-desktop-menu install –novendor chipscope-cpj.desktop
xdg-desktop-menu install –novendor xps.desktop
xdg-desktop-menu install –novendor sysgen.desktop
xdg-desktop-menu install –novendor planAhead.desktop

echo “Done!”

This script will make all business with adding of icons to main menu and registering of MIME-types. Of course, you can modify it for your needs, this is just an example. Finally, some pics of how it will look like

Git In Five Minutes

Many people consider Git to be too confusing or complex to be a choice for version control. Yet Git considers to grow in adoption, and many interesting things have grown up around it. This document is geared for someone wanted to get started with Git, often coming from a Subversion background. For most basic needs this document will cover 70 to 90 percent of your use.

Getting Started

To use Git you will have to setup a repository. You can take an existing directory to make a Git repository, or create an empty directory.
To make your current directory a Git repository we simply run init.

git init

To make a new directory that is a Git repository we just specify a directory.

git init newrepo

From here on out we’ll assume that you are in the root of the Git repository unless otherwise noted.

Adding New Files

So we have a repository, but nothing in it. You can add files with the add command.

git add filename

To add everything in your directory try git add ..

Committing a Version

Now that we’ve added these files, we want them to actually be stored in the Git repository. We do this by committing them to the repository.

git commit -m "Adding files"

If you leave off the -m you will be put into an editor to write the message yourself.

Editing Files

When you’ve made changes to some files, you can run git status to see what will happen on commit. You’ll notice a list of modified files, and a message:

no changes added to commit (use "git add" and/or "git commit -a")

So running git commit will do nothing unless you explicitly add files to the commit with git add. If you’re looking for the commit command to automatically commit local modifications we use the -a flag.

git commit -a -m "Changed some files"

Or if you’d like to have only certain files, but still not run git add we pass specific files.

git commit -m "change some files" file1 file2

Do note that -a will not cause new files to be committed, only modified.

Publishing Your Repository

To put your repository on a server we’ll start by making a “bare” repository, and upload it to a server.

cd /tmp
git clone --bare ~/your/repo/path project.git
scp -r project.git ssh://

Now if we have a couple of commits and want to push it up to that location:

git push ssh://

If you dislike typing the URI each time we can take advantage that a cloned project remembers where it came from.

cd ..
git clone ssh:// project

Now git push will push to the URI it was cloned from. You can do this manually by editing .git/config in your repository.

Get Upstream Changes

If you’re already setup for push as above:

git pull

Will bring changes down and merge them in. To pull from a non-default location just specify the URI.

git pull

More Than Five Minutes


You’ll have noticed that Git thinks in “commits.” These are uniquely identified by a hash. You can see the history and the hashes with git log. Each commit involves modifications, new files, and files being removed. add will put a file in a commit. git reset HEAD will remove everything from the planned commit, but not change files.


If you want to remove a file from the repository, removing it from future commits we use rm.

git rm file

Branching and Merging

Branches are done locally and are fast. To create a new branch we use the branch command.

git branch test

the branch command does not move us into the branch, just create one. So we use the checkout command to change branches.

git checkout test

The first branch, or main branch, is called “master.”

git checkout master

While in your branch you can commit changes that will not be reflected in the master branch. When you’re done, or want to push changes to master, switch back to master and use merge.

git checkout master
git merge test

And if you’re done with the branch you can delete with the branch command and pass the -d flag.

git branch -d test

Traveling Through Time

You can quickly very previous states of the repository using the checkout command again.

git checkout HASH

Uncommited changes will travel with you. Return to the preset with git checkout master as with normal branches. If you commit while in the past a branch is automatically created and your changes will have to be merged forward.

Sweeping Changes Under the Rug for Later

When moving between branches your local changes move with you. Sometimes you want to switch branches but not commit or take those changes with you. The Git command stash lets you put changes into a safe store.

git stash

You can retreive by passing an arguement of apply or pop.

git stash apply

The difference between apply and pop is simple. apply will take a stash state and apply it, but preserve that state in the stash. pop will take the stash state, apply it, and remove it from the stash. git stash clear empties the contents of the stash.

git – the simple guide

create a new repository

create a new directory, open it and perform a
git init
to create a new git repository.

checkout a repository

create a working copy of a local repository by running the command
git clone /path/to/repository
when using a remote server, your command will be
git clone username@host:/path/to/repository


your local repository consists of three “trees” maintained by git. the first one is your Working Directory which holds the actual files. the second one is the Index which acts as a staging area and finally the HEAD which points to the last commit you’ve made.

add & commit

You can propose changes (add it to the Index) using
git add
git add *
This is the first step in the basic git workflow. To actually commit these changes use
git commit -m "Commit message"
Now the file is committed to the HEAD, but not in your remote repository yet.

pushing changes

Your changes are now in the HEAD of your local working copy. To send those changes to your remote repository, execute
git push origin master
Change master to whatever branch you want to push your changes to.

If you have not cloned an existing repository and want to connect your repository to a remote server, you need to add it with
git remote add origin
Now you are able to push your changes to the selected remote server


Branches are used to develop features isolated from each other. The master branch is the “default” branch when you create a repository. Use other branches for development and merge them back to the master branch upon completion.
create a new branch named “feature_x” and switch to it using
git checkout -b feature_x
switch back to master
git checkout master
and delete the branch again
git branch -d feature_x
a branch is not available to others unless you push the branch to your remote repository
git push origin

update & merge

to update your local repository to the newest commit, execute
git pull
in your working directory to fetch and merge remote changes.
to merge another branch into your active branch (e.g. master), use
git merge
in both cases git tries to auto-merge changes. Unfortunately, this is not always possible and results in conflicts. You are responsible to merge those conflicts manually by editing the files shown by git. After changing, you need to mark them as merged with
git add
before merging changes, you can also preview them by using
git diff


it’s recommended to create tags for software releases. this is a known concept, which also exists in SVN. You can create a new tag named 1.0.0 by executing
git tag 1.0.0 1b2e1d63ff
the 1b2e1d63ff stands for the first 10 characters of the commit id you want to reference with your tag. You can get the commit id by looking at the…


in its simplest form, you can study repository history using.. git log
You can add a lot of parameters to make the log look like what you want. To see only the commits of a certain author:
git log --author=bob
To see a very compressed log where each commit is one line:
git log --pretty=oneline
Or mabe you want to see an ASCII art tree of all the branches, decorated with the names of tags and branches:
git log --graph --oneline --decorate --all
See only which files have changed:
git log --name-status
These are just a few of the possible parameters you can use. For more, see git log --help

replace local changes

In case you did something wrong (which for sure never happens 😉 you can replace local changes using the command
git checkout --
this replaces the changes in your working tree with the last content in HEAD. Changes already added to the index, as well as new files, will be kept.
If you instead want to drop all your local changes and commits, fetch the latest history from the server and point your local master branch at it like this
git fetch origin
git reset --hard origin/master

useful hints

built-in git GUI
use colorful git output
git config color.ui true
show log on just one line per commit
git config format.pretty oneline
use interactive adding
git add -i

links & resources

graphical clients


get help

How To Mount ISO Image Without Burning Them in Linux

For various reasons,you may want to use ISO images without burning them,and you just need to mount them in a easy way.

First,create a directory which you want to mount ISO images to by running following command in terminal:

sudo mkdir /media/ISOimage

Then,add the loop module to your kernel,so it is possible to mount a compressed filesystem file:

sudo modprobe loop

Change directory where ISO images located:

cd /iso-images-directory

Now,use following command to mount ISO image:

sudo mount iso-image-name.iso /media/ISOimage/ -t iso9660 -o loop

replace “iso-image-name.iso”to your ISO image.

And,use this command to umount ISO image:

sudo umount /media/ISOimage

Create a free website or blog at

Up ↑