命令 |
功能说明 |
线上查询及帮助命令 (2 个) |
|
man |
查看命令帮助,命令的词典,更复杂的还有 info,但不常用。 |
help |
查看 Linux 内置命令的帮助,比如 cd 命令。 |
文件和目录操作命令 (18 个) |
|
ls |
全拼 list,功能是列出目录的内容及其内容属性信息。 |
cd |
全拼 change directory,功能是从当前工作目录切换到指定的工作目录。 |
cp |
全拼 copy,其功能为复制文件或目录。 |
find |
查找的意思,用于查找目录及目录下的文件。 |
mkdir |
全拼 make directories,其功能是创建目录。 |
mv |
全拼 move,其功能是移动或重命名文件。 |
pwd |
全拼 print working directory,其功能是显示当前工作目录的绝对路径。 |
rename |
用于重命名文件。 |
rm |
全拼 remove,其功能是删除一个或多个文件或目录。 |
rmdir |
全拼 remove empty directories,功能是删除空目录。 |
touch |
创建新的空文件,改变已有文件的时间戳属性。 |
tree |
功能是以树形结构显示目录下的内容。 |
basename |
显示文件名或目录名。 |
dirname |
显示文件或目录路径。 |
chattr |
改变文件的扩展属性。 |
lsattr |
查看文件扩展属性。 |
file |
显示文件的类型。 |
md5sum |
计算和校验文件的 MD5 值。 |
查看文件及内容处理命令(21 个) |
|
cat |
全拼 concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。 |
tac |
tac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。 |
more |
分页显示文件内容。 |
less |
分页显示文件内容,more 命令的相反用法。 |
head |
显示文件内容的头部。 |
tail |
显示文件内容的尾部。 |
cut |
将文件的每一行按指定分隔符分割并输出。 |
split |
分割文件为不同的小片段。 |
paste |
按行合并文件内容。 |
sort |
对文件的文本内容排序。 |
uniq |
去除重复行。oldboy |
wc |
统计文件的行数、单词数或字节数。 |
iconv |
转换文件的编码格式。 |
dos2unix |
将 DOS 格式文件转换成 UNIX 格式。 |
diff |
全拼 difference,比较文件的差异,常用于文本文件。 |
vimdiff |
命令行可视化文件比较工具,常用于文本文件。 |
rev |
反向输出文件内容。 |
grep/egrep |
过滤字符串,三剑客老三。 |
join |
按两个文件的相同字段合并。 |
tr |
替换或删除字符。 |
vi/vim |
命令行文本编辑器。 |
文件压缩及解压缩命令(4 个) |
|
tar |
打包压缩。oldboy |
unzip |
解压文件。 |
gzip |
gzip 压缩工具。 |
zip |
压缩工具。 |
信息显示命令(11 个) |
|
uname |
显示操作系统相关信息的命令。 |
hostname |
显示或者设置当前系统的主机名。 |
dmesg |
显示开机信息,用于诊断系统故障。 |
uptime |
显示系统运行时间及负载。 |
stat |
显示文件或文件系统的状态。 |
du |
计算磁盘空间使用情况。 |
df |
报告文件系统磁盘空间的使用情况。 |
top |
实时显示系统资源使用情况。 |
free |
查看系统内存。 |
date |
显示与设置系统时间。 |
cal |
查看日历等时间信息。 |
搜索文件命令(4 个) |
|
which |
查找二进制命令,按环境变量 PATH 路径查找。 |
find |
从磁盘遍历查找文件或目录。 |
whereis |
查找二进制命令,按环境变量 PATH 路径查找。 |
locate |
从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。 |
用户管理命令(10 个) |
|
useradd |
添加用户。 |
usermod |
修改系统已经存在的用户属性。 |
userdel |
删除用户。 |
groupadd |
添加用户组。 |
passwd |
修改用户密码。 |
chage |
修改用户密码有效期限。 |
id |
查看用户的 uid,gid 及归属的用户组。 |
su |
切换用户身份。 |
visudo |
编辑 / etc/sudoers 文件的专属命令。 |
sudo |
以另外一个用户身份(默认 root 用户)执行事先在 sudoers 文件允许的命令。 |
基础网络操作命令(11 个) |
|
telnet |
使用 TELNET 协议远程登录。 |
ssh |
使用 SSH 加密协议远程登录。 |
scp |
全拼 secure copy,用于不同主机之间复制文件。 |
wget |
命令行下载文件。 |
ping |
测试主机之间网络的连通性。 |
route |
显示和设置 linux 系统的路由表。 |
ifconfig |
查看、配置、启用或禁用网络接口的命令。 |
ifup |
启动网卡。 |
ifdown |
关闭网卡。 |
netstat |
查看网络状态。 |
ss |
查看网络状态。 |
深入网络操作命令(9 个) |
|
nmap |
网络扫描命令。 |
lsof |
全名 list open files,也就是列举系统中已经被打开的文件。 |
|
发送和接收邮件。 |
mutt |
邮件管理命令。 |
nslookup |
交互式查询互联网 DNS 服务器的命令。 |
dig |
查找 DNS 解析过程。 |
host |
查询 DNS 的命令。 |
traceroute |
追踪数据传输路由状况。 |
tcpdump |
命令行的抓包工具。 |
有关磁盘与文件系统的命令(16 个) |
|
mount |
挂载文件系统。 |
umount |
卸载文件系统。 |
fsck |
检查并修复 Linux 文件系统。 |
dd |
转换或复制文件。 |
dumpe2fs |
导出 ext2/ext3/ext4 文件系统信息。 |
dump |
ext2/3/4 文件系统备份工具。 |
fdisk |
磁盘分区命令,适用于 2TB 以下磁盘分区。 |
parted |
磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。 |
mkfs |
格式化创建 Linux 文件系统。 |
partprobe |
更新内核的硬盘分区表信息。 |
e2fsck |
检查 ext2/ext3/ext4 类型文件系统。 |
mkswap |
创建 Linux 交换分区。 |
swapon |
启用交换分区。 |
swapoff |
关闭交换分区。 |
sync |
将内存缓冲区内的数据写入磁盘。 |
resize2fs |
调整 ext2/ext3/ext4 文件系统大小。 |
系统权限及用户授权相关命令(4 个) |
|
chmod |
改变文件或目录权限。 |
chown |
改变文件或目录的属主和属组。 |
chgrp |
更改文件用户组。 |
umask |
显示或设置权限掩码。 |
查看系统用户登陆信息的命令(7 个) |
|
whoami |
显示当前有效的用户名称,相当于执行 id -un 命令。 |
who |
显示目前登录系统的用户信息。 |
w |
显示已经登陆系统的用户列表,并显示用户正在执行的指令。 |
last |
显示登入系统的用户。 |
lastlog |
显示系统中所有用户最近一次登录信息。 |
users |
显示当前登录系统的所有用户的用户列表。 |
finger |
查找并显示用户信息。 |
内置命令及其它(19 个) |
|
echo |
打印变量,或直接输出指定的字符串 |
printf |
将结果格式化输出到标准输出。 |
rpm |
管理 rpm 包的命令。 |
yum |
自动化简单化地管理 rpm 包的命令。 |
watch |
周期性的执行给定的命令,并将命令的输出以全屏方式显示。 |
alias |
设置系统别名。 |
unalias |
取消系统别名。 |
date |
查看或设置系统时间。 |
clear |
清除屏幕,简称清屏。 |
history |
查看命令执行的历史纪录。 |
eject |
弹出光驱。 |
time |
计算命令执行时间。 |
nc |
功能强大的网络工具。 |
xargs |
将标准输入转换成命令行参数。 |
exec |
调用并执行指令的命令。 |
export |
设置或者显示环境变量。 |
unset |
删除变量或函数。 |
type |
用于判断另外一个命令是否是内置命令。 |
bc |
命令行科学计算器 |
系统管理与性能监视命令 (9 个) |
|
chkconfig |
管理 Linux 系统开机启动项。 |
vmstat |
虚拟内存统计。 |
mpstat |
显示各个可用 CPU 的状态统计。 |
iostat |
统计系统 IO。 |
sar |
全面地获取系统的 CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU 中断和网络等性能数据。 |
ipcs |
用于报告 Linux 中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。 |
ipcrm |
用来删除一个或更多的消息队列、信号量集或者共享内存标识。 |
strace |
用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 |
ltrace |
命令会跟踪进程的库函数调用, 它会显现出哪个库函数被调用。 |
关机 / 重启 / 注销和查看系统信息的命令(6 个) |
|
shutdown |
关机。 |
halt |
关机。 |
poweroff |
关闭电源。 |
logout |
退出当前登录的 Shell。 |
exit |
退出当前登录的 Shell。 |
Ctrl+d |
退出当前登录的 Shell 的快捷键。 |
进程管理相关命令(15 个) |
|
bg |
将一个在后台暂停的命令,变成继续执行 (在后台执行)。 |
fg |
将后台中的命令调至前台继续运行。 |
jobs |
查看当前有多少在后台运行的命令。 |
kill |
终止进程。 |
killall |
通过进程名终止进程。 |
pkill |
通过进程名终止进程。 |
crontab |
定时任务命令。 |
ps |
显示进程的快照。 |
pstree |
树形显示进程。 |
nice/renice |
调整程序运行的优先级。 |
nohup |
忽略挂起信号运行指定的命令。 |
pgrep |
查找匹配条件的进程。 |
runlevel |
查看系统当前运行级别。 |
init |
切换运行级别。 |
service |
启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 |
十个你不知道的 Linux 命令大盘点
1)pgrep
pgrep 名字前有个 p,我们可以猜到这和进程相关,又是 grep,当然这是进程相关的 grep 命令。不过,这个命令主要是用来列举进程 ID 的。如:
-
$ pgrep -u hchen
-
22441
-
22444
这个命令相当于:
-
1 ps -ef | egrep '^hchen' | awk '{print $2}'
2)pstree
这个命令可以以树形的方式列出进程。如下所示:
-
[hchen@RHELSVR5 ~]$ pstree
-
init-+-acpid
-
|-auditd-+-python
-
| `-{auditd}
-
|-automount---4*[{automount}]
-
|-backup.sh---sleep
-
|-dbus-daemon
-
|-events/0
-
|-events/1
-
|-hald---hald-runner---hald-addon-acpi
-
|-httpd---10*[httpd]
-
|-irqbalance
-
|-khelper
-
|-klogd
-
|-ksoftirqd/0
-
|-ksoftirqd/1
-
|-kthread-+-aio/0
-
|-aio/1
-
|-ata/0
-
|-ata/1
-
|-ata_aux
-
|-cqueue/0
-
|-cqueue/1
-
|-kacpid
-
|-kauditd
-
|-kblockd/0
-
|-kblockd/1
-
|-kedac
-
|-khubd
-
|-6*[kjournald]
-
|-kmirrord
-
|-kpsmoused
-
|-kseriod
-
|-kswapd0
-
|-2*[pdflush]
-
|-scsi_eh_0
-
|-scsi_eh_1
-
|-xenbus
-
| `-xenwatch
-
|-migration/0
-
|-migration/1
-
|-6*[mingetty]
-
|-3*[multilog]
-
|-mysqld_safe---mysqld---9*[{mysqld}]
-
|-smartd
-
|-sshd---sshd---sshd---bash---pstree
-
|-svscanboot---svscan-+-3*[supervise---run]
-
|-supervise---qmail-send-+-qmail-clean
-
|-qmail-lspawn
-
| `-qmail-rspawn
-
| `-2*[supervise---tcpserver]
-
|-syslogd
-
|-udevd
-
|-watchdog/0
-
|-watchdog/1
-
-xinetd
3)bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用 bc 命令写的一个脚本(文件名:sqrt)
-
#!/bin/bash
-
if [ $# -ne 1 ]
-
then
-
echo 'Usage: sqrt number'
-
exit1
-
else
-
echo -e "sqrt($1) quit " | bc -q -i
-
fi
于是,我们可以这样使用这个脚本进行平方根运算:
-
[hchen@RHELSVR5]$ ./sqrt 36
-
[hchen@RHELSVR5]$ ./sqrt 2.0000
-
1.4142
-
[hchen@RHELSVR5]$ ./sqrt 10.0000
4)split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。
-
[hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
-
-rw-r--r-- 1 hchen hchen 43677477404-1702:00 largefile.tar.gz
-
[hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_
-
[hchen@RHELSVR5]# ls -l LF_*
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_aa
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ab
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ac
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ad
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ae
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:35 LF_af
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:35 LF_ag
-
-rw-r--r-- 1 hchen hchen 5242880005-1018:35 LF_ah
-
-rw-r--r-- 1 hchen hchen 1734437405-1018:35 LF_ai
文件合并只需要使用简单的合并就行了,如:
-
1 [hchen@RHELSVR5]# cat LF_* >largefile.tar.gz
5)nl
nl 命令其它和 cat 命令很像,只不过它会打上行号。如下所示:
-
[hchen@RHELSVR5 include]# nl stdio.h | head -n 10
-
1/* Define ISO C stdio on top of C++ iostreams.
-
2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
-
3 This file is part of the GNU C Library.
-
4 The GNU C Library is free software; you can redistribute it and/or
-
5 modify it under the terms of the GNU Lesser General Public
-
6 License as published by the Free Software Foundation; either
-
7 version 2.1 of the License, or (at your option) any later version.
-
8 The GNU C Library is distributed in the hope that it will be useful,
6)mkfifo
熟悉 Unix 的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线 “|” 把命令串起来是使用无命管道。而我们使用 mkfifo 则使用的是有名管道。下面是示例:
下面是创建一个有名管道:
-
[hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
-
[hchen@RHELSVR5 ~]# ls -l /tmp
-
prw-rw-r-- 1 hchen hchen 005-1018:58 hchenpipe
然后,我们在一个 shell 中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
-
[hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)
-
01 [hchen@RHELSVR5 ~]# head /tmp/hchenpipe
-
02 drwx------ 8 hchen hchen 409605-1018:27 .
-
03 drwxr-xr-x 7 root root 409603-0500:06 ..
-
04 drwxr-xr-x 3 hchen hchen 409603-0118:13 backup
-
05 -rw------- 1 hchen hchen 72105-0522:12 .bash_history
-
06 -rw-r--r-- 1 hchen hchen 2402-2822:20 .bash_logout
-
07 -rw-r--r-- 1 hchen hchen 17602-2822:20 .bash_profile
-
08 -rw-r--r-- 1 hchen hchen 12402-2822:20 .bashrc
-
09 -rw-r--r-- 1 root root 1400203-0700:29 index.htm
-
10 -rw-r--r-- 1 hchen hchen 3146503-0123:48 index.php
7)ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库。如:
-
01 [hchen@RHELSVR5 ~]# ldd /usr/bin/java
-
02 linux-gate.so.1 => (0x00cd9000)
-
03 libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
-
04 libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
-
05 libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
-
06 librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
-
07 libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
-
08 libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
-
09 libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
-
10 libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
-
11 libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
-
12 /lib/ld-linux.so.2 (0x00214000)
8)col
这个命令可以让你把 man 文件转成纯文本文件。如下示例:
-
# PAGER=cat
-
# man less | col -b > less.txt
9)xmlwf
这个命令可以让你检查一下一个 XML 文档是否是所有的 tag 都是正常的。如:
-
1 [hchen@RHELSVR5 ~]# curl 'http://coolshell.cn/?feed=rss2' > cocre.xml
-
2 % Total % Received % XferdAverageSpeedTimeTimeTimeCurrent
-
3DloadUploadTotalSpentLeftSpeed
-
41006488206488200864550 --:--:-- --:--:-- --:--:-- 2073k
-
5 [hchen@RHELSVR5 ~]# xmlwf cocre.xml
-
6 [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
-
7 [hchen@RHELSVR5 ~]# xmlwf cocre.xml
-
8 cocre.xml:13:23: mismatched tag
10)lsof
可以列出打开了的文件。
-
01 [root@RHELSVR5 ~]# lsof | grep TCP
-
02 httpd 548 apache 4uIPv614300967 TCP *:http (LISTEN)
-
03 httpd 548 apache 6uIPv614300972 TCP *:https (LISTEN)
-
04 httpd 561 apache 4uIPv614300967 TCP *:http (LISTEN)
-
05 httpd 561 apache 6uIPv614300972 TCP *:https (LISTEN)
-
06 sshd 1764 root 3uIPv64993 TCP *:ssh (LISTEN)
-
07 tcpserver 8965 root 3uIPv4153795500 TCP *:pop3 (LISTEN)
-
08 mysqld 10202 mysql 10uIPv473819697 TCP *:mysql (LISTEN)
-
09 sshd 10735 root 3uIPv6160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
-
10 sshd 10767 hchen 3uIPv6160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
-
11 vsftpd 11095 root 3uIPv4152157957 TCP *:ftp (LISTEN)