| No comment yet

How to install Kernel PAE (Ubuntu)

(PAE) stand for Physical Address Extension. It's a feature of x86 and x86-64 processors that allows more than 4 Gigabytes of physical memory to be used in 32-bit systems.

Without PAE kernel, you should see something as follows:
root@penreturns:~$ free -m

Sample output:


To enable PAE, open terminal and type the following command:
root@penreturns:~$ sudo apt-get install linux-headers-server linux-image-server linux-server

Reboot your machine.

Now check again :
root@penreturns:~$ free -m

Sample output:


Enjoy!

*copy code without root@penreturns:~$
| No comment yet

Booth Malaysia Ubuntu LoCo Team di Kolej Matrikulasi Pulau Pinang


Tarikh: 18 Februari 2012
Masa: 8:00am - 5:00pm
Tempat: KMPP - Kolej Matrikulasi Pulau Pinang

Aktiviti:
- Memperkenalkan ubuntu kepada pengunjung yang terdiri daripada pelajar dan juga tenaga pengajar Kolej Matrikulasi Pulau Pinang.

More Picture at - Ubuntu Malaysia LoCo Team

*copy code without root@penreturns:~$
| No comment yet

Detecting ARP Poisoning with Wireshark (Ubuntu)

1. First, download Wireshark. Open your terminal and type:
root@penreturns:~$ sudo apt-get install wireshark

2. Run wireshark by typing this command:
root@penreturns:~$ gksudo wireshark &

ARP poisoning attacks are the most popular, they are extremely easy to do. The most common and effective method of doing this on a shared network segment is to ARP poison the target router, or entire subnet. This also makes it extremely easy to detect. Because an ARP poisoning attack works by repeatedly Re-ARPing the target it will occassionally collide with ARP frames sent by the ACTUAL host. We can detect this with Wireshark by filtering duplicate address ARP frames.




We simply start our capture and set our filter to “arp.duplicate-address-frame” When we examine the data provided by Wireshark we also see that the IP address 192.168.0.1 is being claimed by another MAC address. Under normal network operations two systems should not be claiming the same address on the same network segment, particularly the address of the gateway.


In my case, theres no duplicate address. That's mean im not under ARP Poisoning attack.

Enjoy!
*copy code without root@penreturns:~$
| No comment yet

How to install Metasploit Framework (Ubuntu)



1. First, open a terminal and type:
root@penreturns:~$ wget http://updates.metasploit.com/data/releases/framework-4.0.0-linux-full.run
This downloads the current version of the Metasploit framework via wget.

2. Before you can run the installer you need to make it executable.
root@penreturns:~$ chmod +x framework-4.*-linux-full.run

3. And now execute the installer.
root@penreturns:~$ sudo ./framework-4.*-linux-full.run

4. Get the latest Metasploit update
root@penreturns:~$ sudo msfupdate

5. Run Metasploit
root@penreturns:~$ msfconsole


Enjoy!

*copy code without root@penreturns:~$
| No comment yet

Upgrade your 11.10 to Ubuntu 12.04 (Precise Pangolin)


1. First, open a terminal and type:
root@penreturns:~$ sudo apt-get update && sudo apt-get upgrade
2. After updating your system, press Alt – F2 on your keyboard, then search for "update-manager -d"



3. Next, click "Upgrade" to begin upgrading your system.

4. Finish downloading and installing all 12.04 packages.

5. Reboot.
root@penreturns:~$ sudo reboot

And you’re done! Enjoy!

*copy code without root@penreturns:~$
| No comment yet

How to change your Hostname (Ubuntu)

1. First, open a terminal and type:
root@penreturns:~$ gksu gedit /etc/hostname
You should see a line stating your current hostname. For eg. iPad



2. Change the hostname to something you desired. Save and close the file.

3. Back in your terminal, type:
root@penreturns:~$ gksu gedit /etc/hosts
4. Change the line:
127.0.1.1 iPad

to

127.0.1.1 your-new-hostname

Save and close the file.
Reboot and your new hostname should appear in the terminal now.
*copy code without root@penreturns:~$
| No comment yet

Useful Commands in (Linux)

A comprehensive list of commands needed when using Ubuntu:

Command privileges.
root@penreturns:~$ sudo command - run command as root
root@penreturns:~$ sudo su – root shell open
root@penreturns:~$ sudo su user – open shell as a user
root@penreturns:~$ sudo -k – forget your password sudo
root@penreturns:~$ gksudo command – sudo visual dialog (GNOME)
root@penreturns:~$ kdesudo command – sudo visual dialog (KDE)
root@penreturns:~$ sudo visudo – edit / etc / sudoers
root@penreturns:~$ gksudo nautilus – root file manager (GNOME)
root@penreturns:~$ kdesudo konqueror – root file manager (KDE)
root@penreturns:~$ passwd – change your password

Command Network.
root@penreturns:~$ ifconfig – displays information network
root@penreturns:~$ iwconfig – displays information from wireless
root@penreturns:~$ sudo iwlist scan – scan wireless networks
root@penreturns:~$ sudo /etc/init.d/networking restart – reset the network
root@penreturns:~$ (file) /etc/network/interfaces – manual configuration
root@penreturns:~$ ifup interface – bring online interface
root@penreturns:~$ ifdown interface – disable interface

Commands Display
root@penreturns:~$ sudo /etc/init.d/gdm restart – reset X (Gnome)
root@penreturns:~$ sudo /etc/init.d/kdm restart – reset X (KDE)
root@penreturns:~$ (file) /etc/X11/xorg.conf – show Configuration
root@penreturns:~$ sudo dpkg-reconfigure - reconfigure xserver-xorg-phigh - reset configuration X
Ctrl+Alt+Bksp – X display reset if frozen
Ctrl+Alt+FN – switch to tty N
Ctrl+Alt+F7 – switch back to X display

Commands Service System.
root@penreturns:~$ start service – service to start work (Upstart)
root@penreturns:~$ stop service – service to stop working (Upstart)
root@penreturns:~$ status service – check if service is running (Upstart)
root@penreturns:~$ /etc/init.d/service start – start service (SysV)
root@penreturns:~$ /etc/init.d/service stop – stop service (SysV)
root@penreturns:~$ /etc/init.d/service status – check service (SysV)
root@penreturns:~$ /etc/init.d/service restart – reset service (SysV)
root@penreturns:~$ runlevel – get current runlevel

Commands for Firewall.
root@penreturns:~$ ufw enable – turn on the firewall
root@penreturns:~$ ufw disable – turn off the firewall
root@penreturns:~$ ufw default allow – allow all connections by default
root@penreturns:~$ ufw default deny – drop all connections by default
root@penreturns:~$ ufw status – current rules and
root@penreturns:~$ ufw allow port – to allow traffic on port
root@penreturns:~$ ufw deny port – port block
root@penreturns:~$ ufw deny from ip – ip block

Command System.
root@penreturns:~$ lsb_release -a – get the version of Ubuntu
root@penreturns:~$ uname -r – get kernel version
root@penreturns:~$ uname -a – get all the information kernel

Commands for Package Manager.
root@penreturns:~$ sudo apt-get update – refresh updates available
root@penreturns:~$ sudo apt-get upgrade – update all packages
root@penreturns:~$ sudo apt-get dist-upgrade – version update
root@penreturns:~$ sudo apt-get install pkg – installing pkg
root@penreturns:~$ sudo apt-get remove pkg – uninstall pkg
root@penreturns:~$ sudo apt-get autoremove – removing packages obsotletos
root@penreturns:~$ sudo apt-get -f install – try to fix packages
root@penreturns:~$ dpkg –configure -a – try to fix a broken package
root@penreturns:~$ dpkg -i pkg.deb – install file pkg.deb
root@penreturns:~$ (file) /etc/apt/sources.list – list of repositories APT

Special Packages For commands.
ubuntu-desktop – Setting the standard Ubuntu
kubuntu-desktop – KDE Desktop
xubuntu-desktop – desktop XFCE
ubuntu-minimal – core earnings Ubuntu
ubuntu-standard – the standard utilities Ubuntu
ubuntu-restricted-extras – not free, but useful
kubuntu-restricted-extras – ditto KDE
xubuntu-restricted-extras – ditto XFCE
build-essential – packages used to compile
linux-image-generic – latest generic kernel image
linux-headers-generic – latest headlines

Applications commands.
nautilus – File Manager (GNOME)
dolphin – File Manager (KDE)
konqueror – Web browser (KDE)
kate – text editor (KDE)
gedit – text editor (GNOME)

*copy code without root@penreturns:~$
| 1 comment

Shutdown computer using terminal (Ubuntu)

Shutdown command

Enter the command below:
root@penreturns:~$ sudo shutdown -h now
or
root@penreturns:~$ sudo shutdown -h 0
Shutdown computer at a scheduled time

if you want to shutdown command at a scheduled time enter the following command

root@penreturns:~$ sudo shutdown -h 12:00 "System is shutting down"
This will shutdown your computer on 12pm with sending this message to all user.

You can also use power off or halt command to do this.
root@penreturns:~$ sudo halt
or
root@penreturns:~$ sudo poweroff

Reboot computer

Enter the command below:
root@penreturns:~$ sudo reboot
or
root@penreturns:~$ sudo shutdown -r 0
Enjoy! Rccool !
*copy code without root@penreturns:~$
| No comment yet

How to install Slingshot on (Ubuntu) 11.10


First you need to install dependencies and tools that are need to compile Slingshot.
Using terminal and paste this command :
root@penreturns:~$ sudo add-apt-repository ppa:vala-team/ppa
root@penreturns:~$ sudo apt-get update
root@penreturns:~$ sudo apt-get install bzr
root@penreturns:~$ sudo apt-get install build-essential libgtk2.0-dev libgnome-menu-dev

Configure shortcut key by adding Custom Shortcut> Slingshot and add your shortcut key




Enjoy!


*copy code without root@penreturns:~$
| No comment yet

How to restore missing unity launcher & dash (Ubuntu)


Open terminal and type this command:
root@penreturns:~$ sudo apt-get install --reinstall unity && sudo reboot
You can also reinstall Unity with this command:
root@penreturns:~$ sudo aptitude reinstall unity
root@penreturns:~$ sudo reboot
Enjoy!

*copy code without root@penreturns:~$
| No comment yet

Boost apt-get download speed - Apt-Proz (Ubuntu)


Open terminal and type this command:
root@penreturns:~$ sudo add-apt-repository ppa:tldm217/tahutek.net
root@penreturns:~$ sudo apt-get update
root@penreturns:~$ sudo apt-get install apt-proz


How to use? :
root@penreturns:~$ sudo apt-proz install package_name
or
root@penreturns:~$ sudo apt-proz upgrade

Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

Fbcmd: Use Facebook using terminal (Ubuntu)

Installing required components
Fbcmd created with PHP programming language, so we need PHP interpreter to run this application:
root@penreturns:~$ sudo apt-get install php5 php5-cli
Check whether everything is installed correctly by typing the following command:
root@penreturns:~$ php -r "echo phpversion();"
Now, please make sure that PHP is configured correctly, especially "allow_url_fopen" variable in php.ini must be set to "On".
root@penreturns:~$ cat /etc/php5/cli/php.ini | grep allow_url

If the value of "allow_url_fopen" is still "Off" set it to "On"!

Installing Fbcmd
Please download Fbcmd zipped package here, then type the following commands to install it:
root@penreturns:~$ unzip fbcmd.zip
root@penreturns:~$ cd fbcmd
root@penreturns:~$ sudo php fbcmd_update.php
root@penreturns:~$ sudo php fbcmd_update.php install
It needs some times to install because it will search for update on the Internet. Once installed, please type "fbcmd" on Terminal the check wheter Fbcmd is installed correctly.


One-Time Configuration
The purpose of this step is to gain access to your Facebook account, so please be patient if there will a lot of commands to run. Don't worry, you should run this step only once!
Please make sure, you have logged into your Facebook account:
root@penreturns:~$ fbcmd go access
A window of web browser will be opened and you will be prompted to give "initial" permission to Fbcmd accessing your account (for Auth Code generation process). Now, Fbcmd needs to generate Auth Code (or One-time code) from your account, simply type the following command:
root@penreturns:~$ fbcmd go auth
A web browser window will be opened again and you need to "Generate" one-time code which will be entered to Fbcmd application in order to gain "full" access to your Facebook account. Please, generate the code and remember, copy, or save the unique code.

Once, One-time code successfully generated, run this command to enter it to the application:
root@penreturns:~$ fbcmd auth XXXXXX
Replace "XXXXXX" with your unique code. There is one more step to give Fbcmd "full" access to your Facebook account:
root@penreturns:~$ fbcmd addperm
You've done! Now you can use Fbcmd as you wish. I'll give an example on how to post status update using Fbcmd:
root@penreturns:~$ fbcmd status "This is a test status update using Fbcmd"
There are still a lot of commands of Fbcmd, you can read all of them including the examples here.

Source 

*copy code without root@penreturns:~$ 
| No comment yet

Ubuntu Business Desktop Remix

Ubuntu Business Desktop Remix is a starting point for large-scale corporate desktop deployments. It is inspired by a review of common changes made by IT departments deploying Ubuntu at scale.


Ubuntu Business Desktop Remix is the newest enterprise ready spin of Ubuntu announced today by Mark Shuttleworth on his website.

Ubuntu Business Desktop Remix is built with enterprise oriented software such as VMWare, OpenJDk, Adobe Flash and getting rid with unnecessary software such as games, file sharing and social networking apps like Gwibber etc. The first release of Ubuntu Business Desktop Remix is based on 11.10 Onieric Ocelot.


Ubuntu Business Desktop Remix is created for the purpose of Evaluation in Enterprise and Institutes. 
According to Mark Shuttleworth,

"This remix takes the most common changes we’ve observed among institutional users and bundles them into one CD which can be installed directly or used as a basis for further customization. Before anyone gets all worked up and conspiratorial: everything in the remix is available from the standard Software Centre.  Packages out, packages in. No secret sauce for customers only; we’re not creating a RHEL, we already have an enterprise-quality release cadence called LTS and we like it just the way it is. This is a convenience for anyone who wants it. Having a common starting point, or booting straight into a business-oriented image makes it easier for institutional users to evaluate Ubuntu Desktop for their specific needs."
 Download of the remix image requires registration (because of EULAs). For more information head over to ubuntu.com/business/desktop/remix 

Source
| No comment yet

DJ software mixxx (Ubuntu)


Download:


Ubuntu PPA: 10.04 (Lucid) through 11.10 (Oneiric):
Open a terminal, and enter:
root@penreturns:~$ sudo add-apt-repository ppa:mixxx/mixxx
root@penreturns:~$ sudo apt-get update
root@penreturns:~$ sudo apt-get install mixxx libportaudio2
This will install the latest version of Mixxx from the Mixxx PPA on Launchpad.

Enjoy! Happy Dj's!

*copy code without root@penreturns:~$ 
| No comment yet

How to add Force Quit icon to Unity Launcher (Ubuntu)

Using Terminal type this command :
root@penreturns:~$ wget http://dl.dropbox.com/u/51497732/Force_Quit.desktop
root@penreturns:~$ mv Force_Quit.desktop ~/.local/share/applications/
root@penreturns:~$ nautilus ~/.local/share/applications/
Then drag and drop the Force_Quit.desktop file into the launcher.

Thats it! Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

How to upgrade to kernel 3.3.0-999-generic-pae (Ubuntu) 11.10

Using terminal, type the following code :

For i386
root@penreturns:~$ mkdir kernel
root@penreturns:~$ cd kernel
root@penreturns:~$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-headers-3.3.0-999-generic-pae_3.3.0-999.201202190405_i386.deb
root@penreturns:~$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-headers-3.3.0-999_3.3.0-999.201202190405_all.deb
root@penreturns:~$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-image-3.3.0-999-generic-pae_3.3.0-999.201202190405_i386.deb

Installation

root@penreturns:~$ sudo dpkg -i linux-headers-3.3.0-999-generic-pae_3.3.0-999.201202190405_i386.deb linux-headers-3.3.0-999_3.3.0-999.201202190405_all.deb linux-image-3.3.0-999-generic-pae_3.3.0-999.201202190405_i386.deb

Check your bootloader if the newly installed Ubuntu 11.10 kernel is the default one, for grub check the file /boot/grub/menu.lst or if you run grub2 check /boot/grub/grub.cfg

Reboot and enjoy your newly installed Ubuntu 11.10 kernel.

Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

Extract audio from YouTube as MP3 using terminal (Ubuntu)

Using terminal type this code :
root@penreturns:~$ sudo apt-get install youtube-dl ffmpeg lame libavcodec-extra-53
To convert a YouTube video to mp3, use this command:


root@penreturns:~$ youtube-dl youtube-url --extract-audio --audio-format mp3
Replace youtube-url with any YouTube URL of your choice. Here is an example:
root@penreturns:~$ youtube-dl http://www.youtube.com/watch?v=acvIVA9-FMQ --extract-audio --audio-format mp3
Enjoy.

*copy code without root@penreturns:~$ 
| No comment yet

"Could not get lock /var/lib/apt/lists/lock" (Ubuntu)

1. Open the terminal and run one of these commands:
root@penreturns:~$ sudo rm /var/lib/apt/lists/lock
or
root@penreturns:~$ rm -f /var/lib/apt/lists/lock
or
root@penreturns:~$ killall -9 apt-get aptitude
Then make an update with this command:
root@penreturns:~$ sudo apt-get update

2. Also, If you receive this error:

E: Could not get lock /var/lib/dpkg/lock

Via the terminal, run this command to unlock it:
root@penreturns:~$ rm -f /var/lib/dpkg/lock
Then update with this command:
root@penreturns:~$ sudo apt-get update

If you have more solutions for this error, then add them in the comment form given below.

Enjoy.

*copy code without root@penreturns:~$ 
| No comment yet

Disable auto hide mode for The Unity 2D Launcher (Ubuntu)

Open the terminal and install Dconf-Tools with this command:
root@penreturns:~$ sudo apt-get install dconf-tools
Verify now the Unity 2D options using this command:
root@penreturns:~$ dconf list /com/canonical/unity-2d/launcher/
Here is the output you must get:


root@penreturns:~$ dconf list /com/canonical/unity-2d/launcher/
hide-mode
super-key-enable
use-strut

To disable the auto-hide mode, run this command from the terminal:
root@penreturns:~$ dconf write /com/canonical/unity-2d/launcher/use-strut true

To re-enable the auto-hide feature, run now this command:
root@penreturns:~$ dconf write /com/canonical/unity-2d/launcher/use-strut 0
Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

How to unpack rar, zip, tar.gz, bz2, tar.bz2 (Ubuntu)

Here are some commands that you can use via the terminal to extract the contents of the various archive file formats:

zip:
root@penreturns:~$ gunzip file_name.zip
rar:

First install "unrar" with this command:


root@penreturns:~$ sudo apt-get install unrar
Use now this command to unpack rar files:
root@penreturns:~$ unrar x file_name.rar
tar:
root@penreturns:~$ tar -xvf file_name.tar
tar.gz:
root@penreturns:~$ tar -vzxf file_name.tar.gz
bz2:
root@penreturns:~$ bunzip file_name.bz2
tar.bz2:
root@penreturns:~$ tar -jxvf file_name.tar.bz2

Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

How to install and enable the Faience icon (Ubuntu)


Open the terminal and run these commands to install the Faience icon theme and its variants:


root@penreturns:~$ cd /tmp
root@penreturns:~$ wget -O faience-icon-theme.zip http://goo.gl/aUFtm
root@penreturns:~$ unzip faience-icon-theme.zip
root@penreturns:~$ tar -xzvf Faience.tar.gz -C ~/.icons
root@penreturns:~$ tar -xzvf Faience-Azur.tar.gz -C ~/.icons
root@penreturns:~$ tar -xzvf Faience-Ocre.tar.gz -C ~/.icons
root@penreturns:~$ tar -xzvf Faience-Claire.tar.gz -C ~/.icons
Use Gnome Tweak Tool to enable this icon theme and its variants. You can instead enable the default Faience icon theme with this command:
root@penreturns:~$ gsettings set org.gnome.desktop.interface icon-theme 'Faience'
For Faience-Azur:
root@penreturns:~$ gsettings set org.gnome.desktop.interface icon-theme 'Faience-Azur'
For Faience-Ocre:
root@penreturns:~$ gsettings set org.gnome.desktop.interface icon-theme 'Faience-Ocre'
For Faience-Claire:
root@penreturns:~$ gsettings set org.gnome.desktop.interface icon-theme 'Faience-Claire'
Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

Open specific port using terminal (Ubuntu)

Getting Started

Open the terminal (Ctrl+Alt+T) and run this command (root privileges is required):
root@penreturns:~$ su

root@penreturns:~$ sudo iptables -A INPUT -p tcp -d 0/0 -s 0/0 --dport 80 -j ACCEPT


Replace 80 with the port you want to open.

That's it!

*copy code without root@penreturns:~$ 
| No comment yet

How to create a (.deb) from source (Ubuntu)


Let's first install these packages needed for the compilation of source:
root@penreturns:~$ sudo apt-get install checkinstall autotools-dev build-essential


Now download your source and extract it to any folder of your choice, then open the terminal and cd to this folder:
root@penreturns:~$ cd source-directory
Run now these commands to compile and create the .deb package:
root@penreturns:~$ ./configure
root@penreturns:~$ make
root@penreturns:~$ sudo checkinstall
You will be prompted to enter some details for your .deb package. At the end, the Debian package will be created in your source directory.

That's it! Enjoy!

*copy code without root@penreturns:~$ 
| No comment yet

How to use apt-get (Ubuntu)

apt-get (apt stands for advanced packaging tool) is used to install the packages on your system.

To install a package use (in terminal):
root@penreturns:~$ sudo apt-get install
To remove:


root@penreturns:~$ sudo apt-get remove
where is the name of the package you need to install.

Once I install the new Ubuntu, I usually do:

root@penreturns:~$ sudo apt-get update
and
root@penreturns:~$ sudo apt-get upgrade
which updates the local package list and upgrades to the latest versions from Ubuntu repositories.

You can also upgrade the entire distribution of your Ubuntu by typing:
root@penreturns:~$ sudo apt-get dist-upgrade
if you need more information, type
root@penreturns:~$ sudo apt-get help

Enjoy.

*copy code without root@penreturns:~$ 
| No comment yet

Using tar (Ubuntu)

Tar is pretty common command for archiving the files in Linux. It is pretty much the same across the distributions. You can type in the commands listed below in the Ubuntu terminal window.

Of course you can do:
root@penreturns:~$ man tar



and see all the flags and how to use, but hopefully this post will save you the effort.

To create an archive I usually do:
root@penreturns:~$ tar czf directory_name.tar.gz directory_name/

where “c” means create, “z” for gzip compression and “f” for file.

You can also do:
root@penreturns:~$ tar cjf directory_name.tar.bz2 directory_name/

for bzip compression or just:
root@penreturns:~$ tar cf directory_name.tar directory_name/

for a regular .tar

Basically, we specify the command with flags, type a file name that we want to create and pick a directory or file that we want to add to archive. These commands create an archive leaving the directory untouched.

Similarly, we extract these types of files using the “x” flag like this:
root@penreturns:~$ tar xf directory_name.tar
root@penreturns:~$ tar xzf directory_name.tar.gz
root@penreturns:~$ tar xjf directory_name.tar.bz2
Enjoy.

*copy code without root@penreturns:~$ 
| No comment yet

How to restore Unity when it disappears (Ubuntu)

Well, after playing around the compizConfig Setting Manager I somehow screwed up the whole system. Unity along with any kind of menu was gone. Terminal Windows did not come up when pressing ALT+F# and even ctrl+alt+delete were not working. The only way terminal was able to come up was by pressing Ctrl+Alt+T . I did
root@penreturns:~$ unity --reset
but it did not work, use this :


root@penreturns:~$ ccsm
and enabling it again, disabling everything else that was conflicting. Hope this helps in case you are looking for the solution.

Enjoy

*copy code without root@penreturns:~$ 
| No comment yet

How to install git (Ubuntu)

Open the terminal and type:

root@penreturns:~$ sudo apt-get install git-core

Thats’s it. Short and up to the point. You can now check the version to make sure it is installed:



root@penreturns:~$ git --version

Enjoy.

*copy code without root@penreturns:~$