Thursday, October 23, 2014

Linux Bash Shell Cheat Sheet

Basic Terminal Shortcuts

CTRL L = Clear the terminal
CTRL D = Logout
CTRL A = Cursor to start of line
CTRL E = Cursor to the end of line
CTRL U = Delete left of the cursor
CTRL K = Delete right of the cursor
CTRL W = Delete word on the left
CTRL Y = Paste (after CTRL U, K or W)
CTRL R = Reverse search history
CTRL Z = Stops the current command

SHIFT Page Up/Down = Go Up/Down the terminal

TAB = Auto completion of file or command

!! = Repeat last command

Basic Terminal Navigation

ls -a = list all files and folders
ls <folderName> = list files in folde
ls -lh = Detailed list, Human readable
ls -l *.jpg = list jpeg files only
ls -lh <fileName> = Result for file only

cd <folderName> = change directory
                              if folder name has spaces use “ “
cd / = go to root
cd .. = go up one folder, tip: ../../../

du -h: Disk usage of folders, human readable
du -ah: “ “ “ files & folders, Human readable
du -sh: only show disc usage of folders

pwd = print working directory

man <command> = shows manual (RTFM)

Basic File Manipulation

cat <fileName> = show content of file (less, more)

head = from the top
             -n <#oflines> <fileName>

tail = from the bottom
            -n <#oflines> <fileName>

mkdir = create new folder
mkdir myStuff ..
mkdir myStuff/pictures/ ..

cp image.jpg newimage.jpg = copy and rename a file
cp image.jpg <folderName>/ = copy to folder
cp image.jpg folder/sameImageNewName.jpg
cp -R stuff otherStuff = copy and rename a folder
cp *.txt stuff/ = copy all of *<file type> to folder

mv file.txt Documents/ = move file to a folder
mv <folderName> <folderName2> = move folder in folder
mv filename.txt filename2.txt = rename file
mv <fileName> stuff/newfileName
mv <folderName>/ .. = move folder up in hierarchy

rm <fileName> .. = delete file (s)
rm -i <fileName> .. = ask for confirmation each file
rm -f <fileName> = force deletion of a file
rm -r <foldername>/ = delete folder

touch <fileName> = create or update a file

ln file1 file2 = physical link
ln -s file1 file2 = symbolic link

Researching Files

The slow method (sometimes very slow):

locate <text> = search the content of all the files
locate <fileName> = search for a file
sudo updatedb = update database of files

find = the best file search tool (fast)
find -name “<fileName>”
find -name “text” = search for files who start with the word text
find -name “*text” = “ “ “ “ end “ “ “ “

Advanced Search:

Search from file Size (in ~)
             find ~ -size +10M = search files bigger than.. (M,K,G)

Search from last access
           find -name “<filetype>” -atime -5
                   ('-' = less than, '+' = more than and nothing = exactly)

Search only files or directory’s
            find -type d --> ex: find /var/log -name "syslog" -type d
            find -type f = files
 More info: man find, man locate

Extract, sort and filter data

grep <someText> <fileName> = search for text in file
            -i = Doesn't consider uppercase words
            -I = exclude binary files
grep -r <text> <folderName>/ = search for file names with occurrence of the text

With regular expressions:

grep -E ^<text> <fileName> = search start of lines with the word text
grep -E <0-4> <fileName> =shows lines containing numbers 0-4
grep -E <a-zA-Z> <fileName> = retrieve all lines with alphabetical letters

sort = sort the content of files
sort <fileName> = sort alphabetically
sort -o <file> <outputFile> = write result to a file
sort -r <fileName> = sort in reverse
sort -R <fileName> = sort randomly
sort -n <fileName> = sort numbers

wc = word count
wc <fileName> = nbr of line, nbr of words, byte size -l (lines), -w (words), -c (byte size), -m (number of characters)

cut = cut a part of a file
-c --> ex: cut -c 2-5 names.txt (cut the characters 2 to 5 of each line)
-d (delimiter) (-d & -f good for .csv files)
-f (# of field to cut)

more info: man cut, man sort, man grep

Time settings

date = view & modify time (on your computer)

View:
date “+%H” --> If it's 9 am, then it will show 09 -r
date “+%H:%M:%Ss” = (hours, minutes, seconds)
%Y = years

Modify:
MMDDhhmmYYYY
Month | Day | Hours | Minutes | Year

sudo date 031423421997 = March 14th 1997, 23:42

Execute programs at another time

use 'at' to execute programs in the future

Step 1, write in the terminal: at <timeOfExecution> ENTER
 ex --> at 16:45 or at 13:43 7/23/11 (to be more precise)
or after a certain delay:
at now +5 minutes (hours,days, weeks, months, years)

Step 2: <ENTER COMMAND> ENTER
           repeat step 2 as many times you need

Step 3: CTRL D to close input

atq = show a list of jobs waiting to be executed

atrm = delete a job n°<x>

ex (delete job #42) --> atrm 42

sleep = pause between commands
             with ';' you can chain commands, ex: touch file; rm file you can make a pause between commands (minutes, hours, days)
ex --> touch file; sleep 10; rm file <-- 10 seconds

crontab = execute a command regularly
             -e = modify the crontab
             -l = view current crontab
             -r = delete you crontab
In crontab the syntax is
<Minutes> <Hours> <Day of month> <Day of week (0-6, 0 = Sunday)> <COMMAND>

ex, create the file movies.txt every day at 15:47:
47 15 * * * touch /home/bob/movies.txt
* * * * * --> every minute
at 5:30 in the morning, from the 1st to 15th each month:
30 5 1-15 * *
at midnight on Mondays, Wednesdays and Thursdays:
0 0 * * 1,3,4
every two hours:
0 */2 * * *
every 10 minutes Monday to Friday:
*/10 * * * 1-5

Execute programs in the background

Add a '&' at the end of a command
ex --> cp bigMovieFile.mp4 &

nohup: ignores the HUP signal when closing the console
(process will still run if the terminal is closed)
ex --> nohup cp bigMovieFile.mp4

jobs = know what is running in the background

fg = put a background process to foreground
ex: fg (process 1), f%2 (process 2) f%3, ...

Process Management

w = who is logged on and what they are doing

tload = graphic representation of system load average (quit with CTRL C)

ps = Static process list
         -ef --> ex: ps -ef | less
         -ejH --> show process hierarchy
         -u --> process's from current user

Dynamic process list
While in top:
• q to close top
• h to show the help
• k to kill a process

CTRL C to top a current terminal process

kill = kill a process
You need the PID # of the process
ps -u <AccountName> | grep <Application>
Then
kill <PID> .. .. ..
kill -9 <PID> = violent kill

killall = kill multiple process's
ex --> killall locate

extras:
sudo halt <-- to close computer
sudo reboot <-- to reboot

Create and modify user accounts

sudo adduser bob = root creates new user
sudo passwd <AccountName> = change a user's password
sudo deluser <AccountName> = delete an account

addgroup friends = create a new user group
delgroup friends = delete a user group

usermod -g friends <Account> = add user to a group
usermod -g bob boby = change account name
usermod -aG friends bob = add groups to a user without loosing the ones he's already in

File Permissions

chown = change the owner of a file. ex --> chown bob hello.txt
chown user:bob report.txt = changes the user owning report.txt to 'user' and the group owning it to 'bob'
-R = recursively affect all the sub folders. ex --> chown -R bob:bob /home/Daniel

chmod = modify user access/permission – simple way
        u = user
        g = group
        o = other
        d = directory (if element is a directory)
         l = link (if element is a file link)
         r = read (read permissions)
        w = write (write permissions)
        x = eXecute (only useful for scripts and programs)

'+' means add a right
'-' means delete a right
'=' means affect a right

ex --> chmod g+w someFile.txt (add to current group the right to modify someFile.txt)

more info: man chmod

Flow redirection

Redirect results of commands:
'>' at the end of a command to redirect the result to a file. ex --> ps -ejH > process.txt
'>>' to redirect the result to the end of a file

Redirect errors:
'2>' at the end of the command to redirect the result to a file. ex --> cut -d , -f 1 file.csv > file 2> errors.log
'2>&1' to redirect the errors the same way as the standard output

Read progressively from the keyboard
             <Command> << <wordToTerminateInput>
ex --> sort << END <-- This can be anything you want
       > Hello
       > Alex
       > Cinema
       > Game
       > Code
       > Ubuntu
       > END
terminal output:
Alex
Cinema
Game
Code
Ubuntu

Another example --> wc -m << END

Chain commands

'|' at the end of a command to enter another one. ex --> du | sort -nr | less

Archive and compress data

Archive and compress data the long way:

Step 1, put all the files you want to compress in the same folder: ex --> mv *.txt folder/
Step 2, Create the tar file:
tar -cvf my_archive.tar folder/
-c : creates a .tar archive
-v : tells you what is happening (verbose)
-f : assembles the archive into one file

Step 3.1, create gzip file (most current):
gzip my_archive.tar
to decompress: gunzip my_archive.tar.gz

Step 3.2, or create a bzip2 file (more powerful but slow):
bzip2 my_archive.tar
to decompress: bunzip2 my_archive.tar.bz2

step 4, to decompress the .tar file:
tar -xvf archive.tar archive.tar

Archive and compress data the fast way:

gzip: tar -zcvf my_archive.tar.gz folder/
decompress: tar -zcvf my_archive.tar.gz Documents/

bzip2: tar -jcvf my_archive.tar.gz folder/
decompress: tar -jxvf archive.tar.bz2 Documents/

Show the content of .tar, .gz or .bz2 without decompressing it:

gzip:
gzip -ztf archive.tar.gz

bzip2:
bzip2 -jtf archive.tar.bz2

tar:
tar -tf archive.tar

tar extra:
 tar -rvf archive.tar file.txt = add a file to the .tar

You can also directly compress a single file and view the file without decompressing:

Step 1, use gzip or bzip2 to compress the file:
gzip numbers.txt

Step 2, view the file without decompressing it:
zcat = view the entire file in the console (same as cat)
zmore = view one screen at a time the content of the file (same as more)
zless = view one line of the file at a time (same as less)

Installing software

When software is available in the repositories:
sudo apt-get install <nameOfSoftware>
ex--> sudo apt-get install aptitude

If you download it from the Internets in .gz format (or bz2) - “Compiling from source”

Step 1, create a folder to place the file:
mkdir /home/username/src <-- then cd to it

Step 2, with 'ls' verify that the file is there
(if not, mv ../file.tar.gz /home/username/src/)

Step 3, decompress the file (if .zip: unzip <file>)

Step 4, use 'ls', you should see a new directory

Step 5, cd to the new directory

Step 6.1, use ls to verify you have an INSTALL file, then: more INSTALL

If you don't have an INSTALL file:
Step 6.2, execute ./configure <-- creates a makefile
Step 6.2.1, run make <-- builds application binaries
Step 6.2.2 : switch to root --> su
Step 6.2.3 : make install <-- installs the software
Step 7, read the readme file

Reference
http://cli.learncodethehardway.org/bash_cheat_sheet.pdf

Wednesday, October 22, 2014

Install Ubuntu Dengan Virtual Box

Virtual Box adalah software yang digunakan untuk membuat virtual komputer, sehingga memungkinkan kita bisa menginstall lebih dari satu OS dalam komputer tanpa menjadikannya menjadi dual boot.

Langkah-langkah untuk menginstall OS di Virtual Box adalah sebagai berikut:
1. Buka aplikasi Virtual Box yang sebelumnya sudah di install lalu klik New.


2. Muncul dialog box sebagai berikut, klik Next.


3. Isi text box nama virtual machine dan pilih OS yang diinginkan lalu klik Next.


4. Tentukan besar RAM untuk Virtual Box nya.



5. Pilih Create New Harddisk


6. Pilih File Type VDI.


7. Pilih Dynamically allocated agar virtual disk file bisa diubah lalu klik Next.


8. Tentukan besar ukuran file.


9. Klik Create.


10. Klik Create.


11. Klik Start.


12. Klik Next.


13. Pilih media installasi.


14. Klik Start.


15. Tunggu beberapa saat.


16. Pilih Install Ubuntu.


17. Pilih tipe install yang diinginkan.


18. Klik New Partition Table


19. Pilih Continue.


20. Tentukan partisi sebagai berikut:



21. Jika sudah, klik Install Now


22. Tentukan zona waktu dan pilih layout keyboard yang diinginkan.



23. Isi Username dan Password lalu klik Continue.


24. Tunggu sampai proses Install selesai.


25. Jika sudah selesai Restart PC.


26. Ini tampilan Desktop Ubuntu di Virtual Box.


Pilih Dynamically alocated sehingga ukuran virtual disk file bisa diubah – ubah, jika ingin tetap pilih fixed size. Kemudian klik next. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpuf
Virtualbox adalah salah satu software yang digunakan untuk membuat virtual komputer, sehingga dimungkinkan kita bisa menginstall lebih dari 1 OS dalam 1 komputer. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpufV
Virtualbox adalah salah satu software yang digunakan untuk membuat virtual komputer, sehingga dimungkinkan kita bisa menginstall lebih dari 1 OS dalam 1 komputer. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpuf
Virtualbox adalah salah satu software yang digunakan untuk membuat virtual komputer, sehingga dimungkinkan kita bisa menginstall lebih dari 1 OS dalam 1 komputer. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpuf
Virtualbox adalah salah satu software yang digunakan untuk membuat virtual komputer, sehingga dimungkinkan kita bisa menginstall lebih dari 1 OS dalam 1 komputer. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpuf
Virtualbox adalah salah satu software yang digunakan untuk membuat virtual komputer, sehingga dimungkinkan kita bisa menginstall lebih dari 1 OS dalam 1 komputer. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpuf
Virtualbox adalah salah satu software yang digunakan untuk membuat virtual komputer, sehingga dimungkinkan kita bisa menginstall lebih dari 1 OS dalam 1 komputer. - See more at: file:///C:/Users/ghita%20marshelina/Downloads/Cara%20Atau%20Langkah-Langkah%20Install%20Linux%20dengan%20Virtualbox%20_%20Pentium%20Blog.htm#sthash.EpbU1SZ5.dpuf

Thursday, October 9, 2014

Bluemix by IBM

IBM adalah perusahaan yang bergerak di biang teknologi sejak 103 tahun yang lalu. Sedangkan di Indonesia baru berumur 75 tahun dengan pelanggan pertama yaitu PT. KAI.

IBM juga mengembangkan Cloud Computing, yaitu metoda komputasi di mana kapabilitas terkait teknologi informasi disajikan sebagai suatu layanan sehingga pengguna dapat mengaksesnya lewat internet.

Layanan yang terdapat pada Cloud Computing ada 3, yaitu:
1. Infrastructure as a Service (IaaS)
Menyediakan code, data, runtime, middleware, OS. Produk dari IBM yaitu SoftLayer dengan salah satu penggunanya adalah Path.
2. Platform as a Service (PaaS)
Menyediakan code dan data. Produk dari IBM yaitu Bluemix.
3. Software as a Service (SaaS)
Vendor memanajemen di cloud yaitu applications, data, runtime, middleware, O/S, virtualization, servers, storage dan networking.

Kenapa menggunakan Bluemix?
1. Safe money and time
2. Continuously deliver

Kelebihannya?
1. Support semua bahasa pemrograman
2. Coding via online atau outline (dengan sublime, eclipse, atau dngan cloud foundry command line)
3. Bisa memonitor aplikasi
4. Ada tools untuk melindungi aplikasi

Cara menggunakannya:
1. Sign Up di http://www.bluemix.net
2. Install Cloud Foundry
3. Log In ke Bluemix dengan menggunakan Cloud Foundry command line
4. Install runtime (jika diperlukan)
4. Develop project