Linux 常用命令

tar

  • 创建一个新的 tar 文件
1
tar cvf archive_name.tar dirname/
  • 解压 tar 文件
1
tar xvf archive_name.tar
  • 查看 tar 文件
1
tar tvf archive_name.tar

更多示例:The Ultimate Tar Command Tutorial with 10 Practical Examples

grep

  • 在文件中查找字符串(不区分大小写)
1
grep -i "the" demo_file
  • 输出成功匹配的行,以及该行之后的三行
1
grep -A 3 -i "example" demo_text
  • 在一个文件夹中递归查询包含指定字符串的文件
1
grep -r "ramesh" *

更多示例:Get a Grip on the Grep! – 15 Practical Grep Command Examples

find

  • 查找指定文件名的文件(不区分大小写)
1
find -iname "MyProgram.c"
  • 对找到的文件执行某个命令
1
find -iname "MyProgram.c" -exec md5sum {} \;
  • 查找 home 目录下的所有空文件
1
find ~ -empty

更多示例:Mommy, I found it! — 15 Practical Linux Find Command Examples

ssh

  • 登录到远程主机
1
ssh -l jsmith remotehost.example.com
  • 调试 ssh 客户端
1
ssh -v -l jsmith remotehost.example.com
  • 显示 ssh 客户端版本
1
ssh -V

更多示例:5 Basic Linux SSH Client Commands

sed

  • 当你将 Dos 系统中的文件复制到 Unix/Linux 后,这个文件每行都会以\r\n 结尾,sed 可以轻易将其转换为 Unix 格式的文件,使用\n 结尾的文件
1
sed 's/./' filename
  • 反转文件内容并输出
1
sed -n '1!G; h; p' filename
  • 为非空行添加行号
1
sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

更多示例:Advanced Sed Substitution Examples

awk

  • 删除重复行
1
awk '!( in array) { array[]; print}' temp
  • 打印/etc/passwd 中所有包含同样的 uid 和 gid 的行
1
awk -F ':' '=' /etc/passwd
  • 打印文件中的指定部分的字段
1
awk '{print ,;}' employee.txt

更多示例:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

vim

  • 打开文件并跳到第 10 行
1
vim +10 filename.txt
  • 打开文件跳到第一个匹配的行
1
vim +/search-term filename.txt
  • 以只读模式打开文件
1
vim -R /etc/passwd

更多示例:How To Record and Play in Vim Editor

diff

  • 比较的时候忽略空白符
1
diff -w name_list.txt name_list_new.txt

sort

  • 以升序对文件内容排序
1
sort names.txt
  • 以降序对文件内容排序
1
sort -r names.txt
  • 以第三个字段对/etc/passwd 的内容排序
1
sort -t: -k 3n /etc/passwd | more

export

  • 输出跟字符串 oracle 匹配的环境变量
1
2
3
4
5
export | grep ORCALE
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"
  • 设置全局环境变量
1
export ORACLE_HOME=/u01/app/oracle/product/10.2.0

xargs

  • 将所有图片文件拷贝到外部驱动器
1
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
  • 将系统中所有 jpd 文件压缩打包
1
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
  • 下载文件中列出的所有 url 对应的页面
1
cat url-list.txt | xargs wget –c

ls

  • 以易读的方式显示文件大小(显示为 MB,GB…)
1
2
ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz
  • 以最后修改时间升序列出文件
1
ls -ltr
  • 在文件名后面显示文件类型
1
ls -F
  • 使用 ls -a(或)ls -A 显示隐藏的文件
1
2
3
4
5
6
7
ls -a
. Debian-Info.txt
.. CentOS-Info.txt
.bash_history Fedora-Info.txt
.bash_logout .lftp
.bash_profile libiconv-1.11.tar.tar
.bashrc libssh2-0.12-1.2.el4.rf.i386.rpm

更多示例:Unix LS Command: 15 Practical Examples

pwd

  • 输出当前工作目录
1
2
pwd
/Users/chenxiaobin

cd

  • cd -可以在最近工作的两个目录间切换
  • 使用 shopt -s cdspell 可以设置自动对 cd 命令进行拼写检查

更多示例:6 Awesome Linux cd command Hacks

gzip

  • 创建一个*.gz 的压缩文件
1
gzip test.txt
  • 解压*.gz 文件
1
gzip -d test.txt.gz
  • 显示压缩的比率
1
2
3
4
gzip -l *.gz

compressed uncompressed ratio uncompressed_name
23709 97975 75.8% asp-patch-rpms.txt

bzip2

  • 创建*.bz2 压缩文件
1
bzip2 test.txt
  • 解压*.bz2 文件
1
bzip2 -d test.txt.bz2

更多示例:BZ is Eazy! bzip2, bzgrep, bzcmp, bzdiff, bzcat, bzless, bzmore examples

uzip

  • 解压*.zip 文件
1
unzip test.zip
  • 查看*.zip 文件的内容
1
2
3
4
5
6
7
8
unzip -l jasper.zip
Archive: jasper.zip
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

shutdown

  • 关闭系统并立即关机
1
shutdown -h now
  • 10 分钟后关机
1
shutdown -h +10
  • 重启
1
shutdown -r now
  • 重启期间强制进行系统检查
1
shutdown -Fr now

ftp

  • ftp 命令和 sftp 命令的用法基本相似连接 ftp 服务器并下载多个文件
1
2
ftp IP/hostname
ftp> mget *.html
  • 显示远程主机上文件列表
1
2
3
4
5
6
ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

更多示例:FTP and SFTP Beginners Guide with 10 Examples

crontab

  • 查看某个用户的 crontab 入口
1
crontab -u john -l
  • 设置一个每十分钟执行一次的计划任务
1
*/10 * * * * /home/ramesh/check-disk-space

更多示例:Linux Crontab: 15 Awesome Cron Job Examples

service

service 命令用于运行 System V init 脚本,这些脚本一般位于/etc/init.d 文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径

  • 查看服务状态
1
service ssh status
  • 查看所有服务状态
1
service --status-all
  • 重启服务
1
service ssh restart

ps

ps 命令用于显示正在运行中的进程的信息,ps 命令有很多选项,这里只列出了几个

  • 查看当前正在运行的所有进程
1
ps -ef | more
  • 以树状结构显示当前正在运行的进程,H 选项表示显示进程的层次结构
1
ps -efH | more

free

这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况

  • 默认情况下 free 会以字节为单位输出内存的使用量
1
2
3
4
5
free
total used free shared buffers cached
Mem: 3566408 1580220 1986188 0 203988 902960
-/+ buffers/cache: 473272 3093136
Swap: 4000176 0 4000176
  • 如果你想以其他单位输出内存的使用量,需要加一个选项,-g 为 GB,-m 为 MB,-k 为 KB,-b 为字节
1
2
3
4
5
free -g
total used free shared buffers cached
Mem: 3 1 1 0 0 0
-/+ buffers/cache: 0 2
Swap: 3 0 3
  • 如果你想查看所有内存的汇总,请使用-t 选项,使用这个选项会在输出中加一个汇总行
1
2
3
4
5
6
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

top

top 命令会显示当前系统中占用资源最多的一些进程(默认以 CPU 占用率排序)如果你想改变排序方式,可以在结果列表中点击 O(大写字母 O)会显示所有可用于排序的列,这个时候你就可以选择你想排序的列

1
2
3
4
5
6
7
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
........
  • 如果只想显示某个特定用户的进程,可以使用-u 选项
1
top -u oracle

更多示例:Can You Top This? 15 Practical Linux Top Command Examples

df

  • 显示文件系统的磁盘使用情况,默认情况下 df -k ,将以字节为单位输出磁盘的使用量
1
2
3
4
df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 29530400 3233104 24797232 12% /
/dev/sda2 120367992 50171596 64082060 44% /home
  • 使用-h 选项可以以更符合阅读习惯的方式显示磁盘使用量
1
2
3
4
5
6
7
8
df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 232Gi 84Gi 148Gi 37% 21998562 38864868 36% /
devfs 187Ki 187Ki 0Bi 100% 648 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk0s4 466Gi 45Gi 421Gi 10% 112774 440997174 0% /Volumes/BOOTCAMP
//app@izenesoft.cn/public 2.7Ti 1.3Ti 1.4Ti 48% 0 18446744073709551615 0% /Volumes/public
  • 使用-T 选项显示文件系统类型
1
2
3
4
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

kill

  • kill 用于终止一个进程。一般我们会先用 ps -ef 查找某个进程得到它的进程号,然后再使用 kill -9 进程号终止该进程。你还可以使用killallpkillxkill来终止进程
1
2
3
4
ps -ef | grep vim
ramesh 7243 7222 9 22:43 pts/2 00:00:00 vim

kill -9 7243

更多示例:4 Ways to Kill a Process – kill, killall, pkill, xkill

rm

  • 删除文件前先确认
1
rm -i filename.txt
  • 在文件名中使用 shell 的元字符会非常有用。删除文件前先打印文件名并进行确认
1
rm -i file*
  • 递归删除文件夹下所有文件,并删除该文件夹
1
rm -r example

cp

  • 拷贝文件 1 到文件 2,并保持文件的权限、属主和时间戳
1
cp -p file1 file2
  • 拷贝 file1 到 file2,如果 file2 存在会提示是否覆盖
1
cp -i file1 file2

mv

  • 将文件名 file1 重命名为 file2,如果 file2 存在则提示是否覆盖
1
mv -i file1 file2

注意: 如果使用-f 选项则不会进行提示

  • -v 会输出重命名的过程,当文件名中包含通配符时,这个选项会非常方便
1
mv -v file1 file2

cat

  • 你可以一次查看多个文件的内容,下面的命令会先打印 file1 的内容,然后打印 file2 的内容
1
cat file1 file2
  • -n 命令可以在每行的前面加上行号
1
2
3
4
5
6
7
cat -n /etc/logrotate.conf
1 /var/log/btmp {
2 missingok
3 monthly
4 create 0660 root utmp
5 rotate 1
6 }

mount

  • 如果要挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上
1
2
3
# mkdir /u01

# mount /dev/sdb1 /u01
  • 也可以把它添加到 fstab 中进行自动挂载,这样任何时候系统重启的时候,文件系统都会被加载
1
/dev/sdb1 /u01 ext2 defaults 0 2

chmod

  • chmod 用于改变文件和目录的权限,给指定文件的属主和属组所有权限(包括读、写、执行)
1
chmod ug+rwx file.txt
  • 删除指定文件的属组的所有权限
1
chmod g-rwx file.txt
  • 修改目录的权限,以及递归修改目录下面所有文件和子目录的权限
1
chmod -R ug+rwx file.txt

更多示例:7 Chmod Command Examples for Beginners

chown

  • chown 用于改变文件属主和属组,同时将某个文件的属主改为 oracle,属组改为 db
1
chown oracle:dba dbora.sh
  • 使用-R 选项对目录和目录下的文件进行递归修改
1
chown -R oracle:dba /home/oracle

passwd

  • passwd 用于在命令行修改密码,使用这个命令会要求你先输入旧密码,然后输入新密码
1
passwd
  • 超级用户可以用这个命令修改其他用户的密码,这个时候不需要输入用户的密码
1
# passwd USERNAME
  • passwd 还可以删除某个用户的密码,这个命令只有 root 用户才能操作,删除密码后,这个用户不需要输入密码就可以登录到系统
1
# passwd -d USERNAME

mkdir

  • 在 home 目录下创建一个名为 temp 的目录
1
mkdir ~/temp
  • 使用-p 选项可以创建一个路径上所有不存在的目录
1
mkdir -p dir1/dir2/dir3/dir4/

ifconfig

ifconfig 用于查看和配置 Linux 系统的网络接口

  • 查看所有网络接口及其状态
1
ifconfig -a

使用 up 和 down 命令启动或停止某个接口

1
2
ifconfig eth0 up
ifconfig eth0 down

更多示例:Ifconfig: 7 Examples To Configure Network Interface

uname

  • uname 可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息
1
2
uname -a
Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

whereis

  • 当你不知道某个命令的位置时可以使用 whereis 命令,下面使用 whereis 查找 ls 的位置
1
2
whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
  • 当你想查找某个可执行程序的位置,但这个程序又不在 whereis 的默认目录下,你可以使用-B 选项,并指定目录作为这个选项的参数。下面的命令在/tmp 目录下查找 lsmk 命令
1
2
whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

whatis

  • wathis 显示某个命令的描述信息
1
2
3
4
5
whatis ls
ls (1) - list directory contents

whatis ifconfig
ifconfig (8) - configure a network interface

locate

  • locate 命名可以显示某个指定文件(或一组文件)的路径,它会使用由 updatedb 创建的数据库

下面的命令会显示系统中所有包含 crontab 字符串的文件

1
2
3
4
5
6
7
8
9
locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim

man

  • 显示某个命令的 man 页面
1
man crontab
  • 有些命令可能会有多个 man 页面,每个 man 页面对应一种命令类型
1
man SECTION-NUMBER commandname
  • man 页面一般可以分为 8 种命令类型:
    1. 用户命令
    1. 系统调用
    1. c 库函数
    1. 设备与网络接口
    1. 文件格式
    1. 游戏与屏保
    1. 环境、表、宏
    1. 系统管理员命令和后台运行命令例如,我们执行 whatis crontab,你可以看到 crontab 有两个命令类型 1 和 5,所以我们可以通过下面的命令查看命令类型 5 的 man 页面。
1
2
3
4
5
whatis crontab
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron

man 5 crontab

tail

  • tail 命令默认显示文件最后的 10 行文本
1
tail filename.txt
  • 你可以使用-n 选项指定要显示的行数
1
tail -n N filename.txt
  • 你也可以使用-f 选项进行实时查看,这个命令执行后会等待,如果有新行添加到文件尾部,它会继续输出新的行,在查看日志时这个选项会非常有用。你可以通过 CTRL-C 终止命令的执行
1
tail -f log-file

更多示例:3 Methods To View tail -f output of Multiple Log Files in One Terminal

less

  • 这个命名可以在不加载整个文件的前提下显示文件内容,在查看大型日志文件的时候这个命令会非常有用
1
less huge-log-file.log
  • 当你用 less 命令打开某个文件时,下面两个按键会给你带来很多帮助,他们用于向前和向后滚屏
1
2
CTRL+F – forward one window
CTRL+B – backward one window

更多示例:Unix Less Command: 10 Tips for Effective Navigation

su

su 命令用于切换用户账号,超级用户使用这个命令可以切换到任何其他用户而不用输入密码

1
su - USERNAME
  • 用另外一个用户名执行一个命令下面的示例中用户 john 使用 raj 用户名执行 ls 命令,执行完后返回 john 的账号
1
su - raj -c 'ls'
  • 用指定用户登录,并且使用指定的 shell 程序,而不用默认的
1
su -s 'SHELLNAME' USERNAME

mysql

mysql 可能是 Linux 上使用最广泛的数据库,即使你没有在你的服务器上安装 mysql,你也可以使用 mysql 客户端连接到远程的 mysql 服务器

  • 连接一个远程数据库,需要输入密码
1
mysql -u root -p -h 192.168.1.2
  • 连接本地数据库
1
mysql -u root -p

你也可以在命令行中输入数据库密码,只需要在-p 后面加上密码作为参数,可以直接写在 p 后面而不用加空格

yum

  • 使用 yum 安装 apache
1
yum install httpd
  • 更新 apache
1
yum update httpd
  • 删除 apache
1
yum remove httpd

rpm

  • 使用 rpm 安装 apache
1
# rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm
  • 更新 apache
1
# rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm
  • 卸载/删除 apache
1
# rpm -ev httpd

更多示例:RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages

ping

  • ping 一个远程主机,只发 5 个数据包
1
ping -c 5 gmail.com

更多示例:Ping Tutorial: 15 Effective Ping Command Examples

date

  • 设置系统日期
1
# date -s "01/31/2010 23:59:53"
  • 当你修改了系统时间,你需要同步硬件时间和系统时间
1
2
3
# hwclock –systohc

# hwclock --systohc –utc

wget

  • 使用 wget 从网上下载软件、音乐、视频
1
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
  • 下载文件并以指定的文件名保存文件
1
wget -O taglist.zip

更多示例:http://www.vim.org/scripts/download_script.php?src_id=7701

文章目录
  1. 1. tar
  2. 2. grep
  3. 3. find
  4. 4. ssh
  5. 5. sed
  6. 6. awk
  7. 7. vim
  8. 8. diff
  9. 9. sort
  10. 10. export
  11. 11. xargs
  12. 12. ls
  13. 13. pwd
  14. 14. cd
  15. 15. gzip
  16. 16. bzip2
  17. 17. uzip
  18. 18. shutdown
  19. 19. ftp
  20. 20. crontab
  21. 21. service
  22. 22. ps
  23. 23. free
  24. 24. top
  25. 25. df
  26. 26. kill
  27. 27. rm
  28. 28. cp
  29. 29. mv
  30. 30. cat
  31. 31. mount
  32. 32. chmod
  33. 33. chown
  34. 34. passwd
  35. 35. mkdir
  36. 36. ifconfig
  37. 37. uname
  38. 38. whereis
  39. 39. whatis
  40. 40. locate
  41. 41. man
  42. 42. tail
  43. 43. less
  44. 44. su
  45. 45. mysql
  46. 46. yum
  47. 47. rpm
  48. 48. ping
  49. 49. date
  50. 50. wget
| 45.9k | |