Regular commands I use every day in Linux plus a few eclectic ones. Basically geared to the new user. Tips or thoughts, please let me know.
Man pages
In Linux there is a manual for just about anything. Learn about almost everything by “man command” in the terminal. (e.g. man ls). Or type “command –help” for a basic description. Also, many man pages also cover configuration files (man resolv.conf).
Basic Commands
Navigating:
- Up key– Command History
- Tab – Auto-completion, nice and handy for completing file-names, directory names, and commands.
- Commands are in this form: command -arguments
Files ( + directories )
ls
( list ), -l ( long ), -a ( shows hidden )cp
( copy )mv
( move or rename ), mv filename1 filename2rm
( remove ) Very dangerous to use as root. Use with caution. -r ( recursive ) -f ( force – needed to remove a link)
Wildcards to expand definitions:
*
(matches any character), cp *.txt ~/Desktop?
(matches any single character), cp file?.txt ~/Desktop[characters]
(Matches a range/set of characters), cp [a-n]*.txt ~/Desktop</li>
- [!characters] (Matches any character that is not a member of the set characters)
Directories
cd #( change directory ) pwd #( print working directory ) mkdir #( make directory )
A name followed by a /
means it’s a directory, bash will figure it out if you don’t use it but some apps don’t. A safe syntax would be cd myfiles/
Command Output to Text (Standard Output)
ls /usr/bin > /home/user/Desktop/programs.txt
Add to an existing text file (append):
ls /sbin >> /home/user/Desktop/programs.txt
Pipes ( | )
Useful for using programs in conjunction with others:
ls -l | less
Filters
Popular filters used after piping:
sort
– alpha-numeric orderinguniq
– removes duplicate lines of datagrep
– returns the output of a specified pattern of charactershead, tail
– outputs the first of last lines of outputtr
– translates characters – can be used for upper/lower case conversion
Use grep to extract patterns from files
grep EE /var/log/Xorg.0.log ls ~/Documents | grep recipe glxinfo | grep -i direct
Files and File Permissions
View file permissions
List the files in “long” view:
ls -l -rwxr--r-- 1 user user 225444 2007-05-01 21:58 abc.pdf || | | | | || | world | group name || group owner name |owner/user directory
r = read = 4 w = write = 2 x = executable = 1
Change File Permissions
owner = rwx = 4+2+1 = 7; group = r = 4 ...
The above file’s permissions numerically is 744. To change permissions of the above file:
chmod 750 abc.pdf
Change Ownership
chown user:group /home/user/document.txt
Lazy way of make a file executable ;)
chmod +x ~/.scripts/example
File Systems
Show all partitions and their types:
sudo fdisk -l
Show mounted partitions used/available space:
df -h | grep ^/dev
See all file systems mounted::
cat /proc/mounts
Sort Directories by How much space they consume:
du | sort -nr
Define Disks and Partitions and how they mount
sudo mkdir /mnt/USB-Drive
sudo mount -t vfat -o rw /mnt/USB-Drive
types include hfsplus, vfat…
The fstab file defines how to mount available disks/partitions that can automatically be mounted it at boot: Enter in /etc/fstab
:
/dev/sda2 /mnt/OSX hfsplus ro,exec,auto,users 0 0 /dev/sda4 /mnt/Shared_Disk vfat users,auto,uid=1000,gid=100,umask=007 0 0
ro – read-only, rw – read-write, auto mounts filesystem on boot
If the disk will resemble another disk it is better to use a unique device ID (UUID) rather than /dev/disk
:
sudo blkid /dev/disk
Unmount all possible file systems:
umount -a
File System Check
Only filesystems that are able to be unmounted can have the filesystem checked.
Reboot immediately and check for errors:
sudo shutdown -Fr now
For specific mounted filesystems they can be check on next boot by placing a forcefsck
file at the root of the disk/partition:
sudo touch /forcefsck sudo touch /home/forcefsck
This will not run a file system check though if the file system is marked clean. For this boot a rescue disk and run fsck -f
to do this.
Change how often fsck runs at boot (-c
= count boots, -i
= time interval):
sudo tune2fs -c 30 -i 6m /dev/disk
Check and mark bad blocks on damaged drives:
fsck -vcck /dev/disk
Mounted file systems should be checked from the Installer CD/DVD or on boot.
Swap
Create swapfile
dd if=/dev/zero of=/swapfile bs=1024 count=2097152
Swap is recommended to be 1-1/2 to 2x the value of the RAM to use for hibernation.
1 GB = 1024 MB = 1024 x 1024 kB = 1048576 kB = 1048576 kB x 1024 bytes/kB = 1,073,741,800 bytes10
mkswap /swapfile swapon /swapfile
Add to /etc/fstab:
/swapfile swap none defaults
Controlling Swap
Turn off swap:
swapoff -a /swapfile
Swapiness is the input/output priority of swap. To measure the current value:
cat /proc/sys/vm/swappiness
To change the swap priority (higher value means more swapping):
sudo sysctl vm.swappiness=10
to use this value permanently add it to /etc/sysctl.conf
(vm.swappiness=0
). Values of 20 or lower are better for laptops.
File Compression
Pack:
tar gunzip: tar cvpzf /AreaToSaveTo/yourcompressedfile.tgz --exclude=/this/folderorfile /CompressionStarts/Here
tar.bz2(tbz2) (block sorted, better compression): tar -cvjf files.tar.bz2 fileorfolder bzcat linux-2.6.XX.tar.bz2 | tar x
Unpack:
tar xvf file.tgz
unrar e file.part01.rar
Span Multiple Volumes
Create:
tar -c -M --tape-length=2294900 --file=part1.tar too-large-archive.tgz
Extract:
tar -x -M --file=part1.tar too-large-archive.tgz
At prompt specify new (n),
then specify volume name (e.g. n part2.tar)
tape-length is 1024 bytes measurement or (1 computer kilo)
Or use “split” to break a large volume (2m = 2 megabytes, LF is the prefix for new name):
split -b 2m largefile LF_
tar -cvj /full/path/to/mybigfile | split -b 650m
Put back together:
cat file* > newfile
Backup and Restore
Tar – From Install CD
cd /mnt/distro tar -czpvf /mnt/distro/macbook_distro_date.tgz *
Rsync – Full Backup
rsync -avtp --delete --exclude=/home/user/somedir /source/dir /destination/dir
-a
archive,-v
verbose-t
preserve modification times,-p
permissions--delete
removes destination file if has been removed from source--links
recreate symlinks-z
compress from source to destination – good for slow connections.- use “
-a e ssh source name@hostname:dest
” for ssh
Users
Add user
useradd -m -G adm,audio,cdrom,cdrw,cron,games,plugdev,portage,shutdown,usb,users,video,wheel -s /bin/bash user
Groups may vary some per distribution. Some groups will not be available until a certain program is installed.
Add/delete user to group:
gpasswd -a user plugdev gpasswd -d user plugdev
See what groups user belongs to:
id
Remove user:
userdel username
CD/DVD
Writing to CD/DVD with Rock-Ridge support
Rock-ridge support add Unix file extensions and attributes for iso9660 standard disks.
DVD are marked as 4.7GB capacity but thats just the marketing measure. In terms the computer understand the space on a DVD is 4.368 GB’s (1 GB = 1048576 kB x 1024 bytes/kB). DVD +R at 4x or 8x for best performance
DVD
growisofs -Z -lrJ -joliet-long /path/to/files
-Z
means to start at the beginning of the dvd- –
l
allows long filenames (breaks DOS compatability) - –
r
Rock-ridge support -J
Add Joiliet support-joliet-long
– allows Joliet filenames to be 103 characters long instead of 64 – breaks joliet compatibility but works in most cases.
CD
mkisofs -o my.iso -lrJ /path/to/files
Then burn iso to CD (not sure if I can write directly to CD, from what I’ve seen it would seem that I can’t).
Blanking a Disk
If you want to blank a disk or it already has a file-system on it you’ll see an error like “WARNING /dev/hda
already carries isofs!” then reinitialize the filesystem:
DVD
dvd+rw-format -f /dev/sr0 growisofs -Z /dev/hda=/dev/zero
CD
cdrecord -v dev=/dev/hda blank=fast cdrecord -v dev=/dev/hda speed=2 blank=fast cdrecord -vv dev=1,0 blank=all
ISO
Write ISO to CD/Drive:
dd if=name.iso of=/dev/sdb1
Mount ISO:
mount -t iso9660 -o loop,ro name.iso
Create an ISO from a DVD or CD:
dd if=/dev/sr0 of=name.iso
Create and ISO from a file/directory:
mkisofs -o name.iso /path/to/file_or_directory
CDRWin (.bin
/.cue
) images to ISO:
bchunk name.bin name.cue name.iso bin2iso name.cue
Converting CloneCD images to ISO:
ccd2iso name.img name.iso
Converting nrg
(Nero) images to ISO:
nrg2iso name.nrg name.iso
Support for writting large file sizes
ISO has file size limit of 4GB (untested -udf
support is still in alpha):
mkisofs -o my.iso -lrJ -allow-limited-size -udf file-or-pathtofiles growisofo -Z /dev/sr0 -lrJ -allow-limited-size -udf file-or-pathtofiles
Mouse/Keyboard
Change keymaps:
setxkbmap dvorak
Map pointer buttons to keyboard:
xmodmap -e 'keycode 116 = Pointer_Button2' xmodmap -e 'keycode 108 = Pointer_Button3' xkbset exp m
Hardware Info
Kernel messages about hardware
dmesg | less
Cpu info:
cat /proc/cpuinfo
List all PCI/USB devices
lspci lsusb
Detect hardware as it’s plugged in
sudo tail -f /var/log/messages
lshal –monitor # more detail
Icons / Cursors / Fonts …
Reset Icon Cache
gtk-update-icon-cache -f /usr/share/icons/hicolor/
Convert Windows Icons to Linux
Reset cache for fonts:
fc-cache -vf
Build font info per directory:
mkfontscale mkfontdir
Take screenshot of selected area
import filename.png
Set gamma
If you have ability to calibrate your own icc profile (Macintosh’s do) copy the icc profile to Linux and use “xcalib icc.profile
“, otherwise a basic gamma can be set:
xgamma -bgamma 0.925 -ggamma 0.925 -rgamma 0.925
System
Shutdown at a specific time
shutdown -h 22:33 shutdown -P now
date
Use “date” to check date and to set system clock:
date MonthDayHourMinuteYear
Find out kernel version:
uname -r
Start Program that isn’t in the Systems Path
Only programs that are in a system’s $PATH
setting can be started by typing the command, otherwise:
./program
Disable Touchpad whilest Typing
syndaemon -d -t -i 2
Networking
Samba
Change or add password to smbconf:
sudo smbpasswd -L -a user
Mount SMB share to folder:
sudo smbmount //192.168.1.105/user/ mnt/directory -o username=username,password=pass,uid=1000,mask=000
Mount all Samba Shares in fstab:
mount -a -t smbfs
SSH/SCP
Remote login with SSH with username (diferent than the one you’re using):
ssh -l username 192.168.1.101
Copy remote file to local file:
scp -p user@192.168.1.101:~/Desktop/file.name file.name
Download entire website:
wget -r http://www.example.com/
Advanced
Bash
The Bash configuration file (~/.bashrc
) file:
Adding PATHs to the ~/.bashrc file will make the system aware of another folder that has executables and shortcuts can be created for common commands:
export PATH=$PATH:/home/user/.scripts: alias capscreen="import ~/Desktop/screen.png"
To see the preset variables already defined for bash:
set
Search History
ctrl-r
Cron
Cron is the system program scheduler. It checks every minute for commands to run. To edit a crontab (cron jobs):
crontab -e # minute (0-59), # | hour (0-23), # | | day of the month (1-31), # | | | month of the year (1-12), # | | | | day of the week (0-6 with 0=Sunday). # | | | | | user
43 08 * * * env DISPLAY=:0.0 audacious /home/user/My\ Music/Other/Alarms/301gq.mp3
chroot – (changing root)
Userful for logging into your current Linux from an installtion CD:
su mkdir /mnt/osname mount /dev/sda3 /mnt/osname mount -t proc none /mnt/osname/proc mount -o bind /dev /mnt/osname/dev chroot /mnt/osname /bin/bash
Compile Kernel
make oldconfig make menuconfig make clean zImage modules modules_install install
For PPC “make pmac32_defconfig
” will generate a basic config.
Find Kernel Modules:
find /lib/modules/*Kernel-Version* -type f -iname '*.o*' -or -iname '*.ko*'
Add the screen program to be able to background a terminal process
screen command (CTRL + A + D to background it, to return it: screen -r
).
Use noup
to continue a process even if you log out
noup command
Unsorted/Less Used
sudo echo >> no work
echo "my text" | sudo tee /etc/portage/package.use
See whats taking up ram:
ps auxf --sort size
Allow window executables to run directly (will need Wine and misc. binaries enabled in kernel)
In /etc/sysctl.conf
add:
fs.binfmt_misc.register = :WINEXE:M::MZ::/usr/bin/wine:
and add to fstab:
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0
Re-size Images from the command line
Requires imagemagick to be installed (convert writes new image, mogrify overwrites):
convert image.jpg --resize 800x600 newresized.png mogrify -geometry 1024x768 *.png
Copy ALL Files (+invisible, hard links, softlinks)
find . -depth -print0 | cpio -null -sparse -pvd /mnt/newhome/
Create random numbers, hex letters
dd if=/dev/random bs=1 count=5 2>/dev/null | xxd -ps
Run programs sequentially or concurrently
program1 && program2 program1 & program2
A simple web server
Share files in directory and all subfolders:
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
View at http://localhost:8000 or http://your_ip:8000/.
Debian Specific:
drive space show taken by installed packages
dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
Rebuild Font Directory
dpkg-reconfigure fontconfig
Wow, nice little round up. Sure a lot of people will benefit from that post.
by far one of the best and well put together command references i have found. Excellent job and thank you for talking the time to put this together and share.
Yes indeed , Thanks !