前言
平常大家可能使用的都是预装Windows系统的电脑,毕竟Windows系统支持丰富的图形界面,在娱乐和办公方面比较有优势,易用性也较好。用惯了Windows的人,看到Linux那黝黑的命令行窗口,可能会头皮发麻,但其实Linux是被广泛用作服务器对外提供服务的,只不过普通大众不清楚而已,通常服务器是放在比较阴凉通风的地方的,服务器只需响应转发请求,不需要丰富的图形界面,在维护时再接个显示屏对其操作命令即可。在系统的流场性而言,Linux是胜出的,不需要很高的配置就能使用,而且它的安全性也是Windows无法比拟的,因为它的权限控制机制比Windows要好很多,Linux系统下连杀毒软件都没有,当然也不需要。
对于开发者而言,熟悉一些常用的Linux系统命令是必要的,以下将分类介绍,由于篇幅有限,命令的参数不可能都一一介绍,可以使用 man 命令了解详细信息,如:
[root@localhost yekong]# man ls
文件和目录操作的基本命令
pwd命令
pwd 命令代表“print working directory”(打印工作目录)。当你键入 pwd 时,你是在请你的 Linux 系统显示 你的当前位置。例如:
[root@localhost yekong]# pwd
/home/yekong
[root@localhost yekong]#
cd命令
cd 命令来改变工作目录。例如:
命令 | 功能 |
---|---|
cd ~ | 回到用户目录 |
cd / | 回到系统的根目录 |
cd /root | 根用户的主目录;必须是根用户才能访问该目录 |
cd /home | 去到 home 目录,用户的登陆目录 |
cd .. | 回到上一级目录 |
成cd /dir1/subdir | 无论在哪个目录,这个绝对路径会直接跳到subdir中 |
cd ../../ | 向上移动两级 |
ls命令
使用 ls 命令就可以显示你的当前目录的内容。ls 命令有许多可用的选项。要看到 ls 命令的所有选项,你可以 通过在 shell 提示下键入 man ls 来阅读其说明书页。下面是一个与 ls 一起使用的一些常用选项的简短列表。
参 数 | 功 能 |
---|---|
-a | 全部(all),列举目录中的全部文件,包括隐藏文件(.filename),位于这个列表起首处的 .. 和 . 依 次是指父目录和你的当前目录。 |
-l | 长(long)。列举目录内容的细节,包括权限(模式)、所有者、组群、大小、创建日期、文件是否是到 系统其它地方的链接,以及链接的指向。 |
-F | 文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括:/ 表明是一个目录;@ 表 明是到其它文件的符号链接;* 表明是一个可执行文件。 |
-r | 逆向(reverse)。从后向前地列举目录中的内容。 |
-R | 递归(recursive)。该选项递归地列举所有目录(在当前目录之下)的内容。 |
-S | 大小(size)。按文件大小排序 |
locate 命令
有时候,你知道某一文件或目录存在,但却不知该到哪里去找到它。你可以使用 locate 命令来搜寻文件或目录 。
使用 locate 命令,你将会看到每一个包括搜寻条件的目录或文件。譬如,如果你想搜寻所有名称中带有 finger 这个词的文件,如键入:
locate finger
locate 命令使用数据库来定位文件或目录名中带有 finger 这个词的文件和目录。这个搜寻结果可能会包括一个 叫做 finger.txt 的文件,一个叫做 pointerfinger.txt 的文件,一个被命名为 fingerthumbnails 的目录,诸如此类 。
clear命令
clear 命令用于清除终端窗口
cat命令
cat是 concatenate(连锁)的简写,意思是合并文件。该命令可以显示文件的内容(经常和more搭配使用), 或者是将多个文件合并成一个文件。
head命令
可以使用 head 命令来查看文件的开头部分。此项命令是:
head <filename>
按照默认设置, 使用head命令只能阅读文件的前十行,但你可以通过指定一个数字选项来改变要显示的行数,如下面的命令所示:
head -20 <filename>
tail命令
与 head 命令恰恰相反的是 tail 命令。使用 tail 命令,你可以查看文件结尾的十行。这有助于查看日志文件的 最后十行来阅读重要的系统消息。你还可以使用 tail 来观察日志文件被更新的过程。使用 -f 选项,tail 会自动实时地把打开文件中的新消息显示到屏幕上。
tail -f /var/log/yum.log
grep命令
grep 命令对于在文件中查找指定的字串很有用途。例如,如果你想在 example.txt 文件中查找每一个提到“ hello”的地方,你可以键入:
grep hello example.txt
你就会看到文件中带有“hello”的每一行。
chmod命令
chmod命令用于改变文件或目录的访问权限。
[root@localhost ~]# ls -l text.txt
-rw-r--r--. 1 root root 0 Aug 10 23:51 text.txt
从上面的信息可以看到谁能读取(r)和写入(w)文件,以及谁创建了这个文件(test),所有者 所在的组群(test)。在组群右侧的信息包括文件大小、创建的日期和时间,以及文件名。
第一列显示了当前的权限;它有十位。第一位代表文件类型。其余九位实际上是用于三组不同用户的三组权限 。
-(rw-)(r–)(r–). 1 root root
那三组是:文件的所有者,文件所属的组群,和“其他人”。
第一个项目指定文件类型,它可以显示以下几种:
d — 目录
-(短线)— 常规文件(而不是目录或链接)
l — 到系统上其它位置的另一个程序或文件的符号链接
在第一个项目之后的三组中,你可以看到下面几种类型:
r — 文件可以被读取
w — 文件可以被写入
x — 文件可以被执行(如果它是程序的话)
当你在所有者、组群、或其他人中看到一个短线(“-”),这意味着相应的权限还没有被授予。可以看出以下这句:
-rw-r--r--. 1 root root 0 Aug 10 23:51 text.txt
文件的所有者(即root)有读取和写入该文件的权限。组群root有读取的权限,其他群组有读取的权限,该文件不是一个可执行程序,因此所有者和群组都没有执行它的权限。
可用 chmod 来改变文件的权限,如下:
chmod o+2 text.txt
o+w 命令告诉系统你想给其他人写入文件 text.txt 的权限。查看结果,比上面多了个w(写权限):
[root@localhost ~]# ls -l text.txt
-rw-r--rw-. 1 root root 0 Aug 10 23:51 text.txt
要从 text.txt 中删除读写权限,使用 chmod 命令来取消读取和写入这两个的权限
chmod o-rw text.txt
通过键入 o-rw,将告诉系统删除文件 text.txt 中其他人的读取和写入权限。结果与下面的输出相似:
-rw-r-----. 1 root root 0 Aug 10 23:51 text.txt
当你想用 chmod 命令来改变权限时,把它们当做速记符号来记忆,因为你实际要做的只是记住几个符号而已 。下面是一个速记符号含义的列表:
身份 | 说明 |
---|---|
u | 拥有文件的用户(所有者) |
g | 所有者所在的群组 |
o | 其他人(不是所有者或所有者的群组) |
a | 每个人或全部(U、g 和 o) |
权限 | 说明 |
---|---|
r | 读取权限 |
w | 写入权限 |
x | 执行权限 |
符号 | 说明 |
---|---|
+ | 添加权限 |
- | 删除权限 |
= | 使它成为唯一权限 |
另外,也可以通过使用数字来改变权限。每种权限设置都可以用一个数值来代表:
r = 4, w = 2, x = 1, - = 0
当这些值被加在一起,它的总和便用来设立特定的权限。譬如,如果你想有读取和写入的权限,你会得到一个 值为 6 的总和;4(读取)+ 2(写入)= 6。
如text.txt 文件的数字权限设置如下:
- (rw-) (rw-) (r–)
4+2+0 4+2+0 4+0+0
所有者的总和为6,组群的总和为6,其他人的总和为4。这个权限设置读作 664。
给 text.txt 设置全权限,用数字来改变权限,例如:
[root@localhost ~]# chmod 777 text.txt
[root@localhost ~]# ls -l text.txt
-rwxrwxrwx. 1 root root 0 Aug 10 23:51 text.txt
cp命令
cp(copy)命令可以将文件或目录复制到其他目录中,就如同DOS下的copy命令一样,功能非常强大。在使用cp 命令时,只需要指定源文件名与目标文件名或目标目录即可。格式:cp <源> <目标>
mv命令
要移动文件,使用 mv 命令。mv 的常见选项包括:
-i — 互动。如果你选择的文件会覆盖目标中的现存文件,它会提示你。这是一个实用的选项,因为它象 cp 中 的 -i 选项一样,会给你一个确认替换已存文件的机会。
-f — 强制。它会超越互动模式,不提示地移动文件。除非你知道自己在干什么,这个选项很危险。在你对系统 信心十足之前,请谨慎使用这个选项。
-v — 详细。显示文件的移动进度。
如果你想把文件从你的主目录中移到另一个现存的目录中,键入以下命令(你需要位于你的主目录内):
mv text.txt temp
另外的方法是,用同一个命令,但使用绝对路径,如
mv text.txt /home/yekong/temp
mkdir命令
mkdir(make directory)命令用来建立目录。例如在系统中建立 data 子目录:
[root@localhost ~]# mkdir data
rm命令
对于系统中过时或无用的文件,用户可以用rm命令将其删除。该命令可以删除目录中的文件或目录本身,对于链接文件,只是删除了该链接,原有文件保持不变。删除文件和目录的选项包括:
-i — 互动。提示你确认删除。这个选项可以帮助你避免误删文件。
-f — 强制。代替互动模式,不提示地删除文件。除非你知道自己在干什么,使用这个选项通常不是明智之举。
-v — 详细。显示文件的删除进度。
-r — 删除目录
-r — 递归。将会删除某个目录及其中所有的文件和子目录
要使用 rm 命令来删除文件 text.txt,键入:
[root@localhost ~]# rm text.txt
使用 rm 命令来删除目录 data 及其目录下的所有文件键入:
rm -rf data
另一个比使用 rm 更安全的删除目录的命令是 rmdir 命令。这个命令不允许你使用递归删除,因此不能删除包 含文件的目录。
文件压缩和有关归档的命令
compress,uncompress命令
此命令用于压缩或解压缩数据
gzip,gunzip命令
此命令用于压缩或解压缩文件,其中gzip是在Linux系统中经常使用的压缩和解压缩命令。
rpm 命令
rpm命令用于启动RPM软件包管理操作。
tar命令
tar命令用于启动文件打包程序
unzip
该命令用于解压缩扩展名为.zip的文件,即可以在Linux下解压Windows中用Winzip压缩的文件。
zip命令
zip命令用于打包和压缩文件。
文件系统的命令
dd
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
edquota
此命令可用于设置用户与用户组的磁盘空间限制。
fdisk
此命令用于执行Linux下的磁盘分区。
mkfs
此命令用于建立一个Linux文件系统。
mount
该命令用于装配一个文件系统。
quota
此命令用于限制和显示用户可用的磁盘空间。
与系统管理相关的命令
free
该命令用于查看当前系统内存的使用情况,它可以显示系统中剩余及已用的物理内存、交换内存、共享内存和 内核缓冲区。
shutdown
该命令用于关机或进入单人维护模式。
date
data命令可以显示当前系统的日期和时间。clock命令也可以用于显示系统当前的日期与时间(默认情况下,普 通用户无法执行clock命令,必须用root帐号登录执行)。例如:
[root@localhost ~]# date
Sat Aug 11 00:38:53 CST 2018
[root@localhost ~]# clock
Sat 11 Aug 2018 12:38:57 AM CST -0.261170 seconds
cal
该命令可显示计算机中的月历或年历。例如:
[root@localhost ~]# cal
August 2018
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
write
该命令用来向系统中的某一个用户发送消息。用户如果想退出信息发送状态,按组合键Ctrl+C即可。例如:
[root@localhost ~]# write yekong
用户管理命令
groupadd
该命令用于创建新的用户组
groups
该命令用于显示当前用户所在的组。
passwd
passwd(password)命令可让用户修改帐户的密码。一般来说,设置帐户密码失败有几种情况:密码太简单、密 码太短、密码中的字符多数相同。
su
这个命令非常重要,它可以使一个一般用户拥有超级用户或其他用户的权限,也可以使超级用户以一般用户的 身份做些事情。但一般用户使用该命令时必须有超级用户或其他用户的口令。如果要退出当前用户的登录,可 以输入exit。
useradd
该命令是建立用户帐号最快最简单的方法。
userdel
该命令用来删除用户帐号及其相关文件。
##### who
该命令可以查看当前计算机有哪些用户登录,例如:
[root@localhost ~]# who
yekong :0 2018-08-10 22:13 (:0)
yekong pts/0 2018-08-10 22:13 (:0)
yekong pts/1 2018-08-10 22:14 (192.168.25.
##### whoami
该命令是用来查看当前用户的登录名。例如:
[root@localhost ~]# whoami
root
网络管理命令
finger
该命令可以用来查询用户信息,也能查看默认的用户环境。例如:
[root@localhost ~]# finger
Login Name Tty Idle Login Time Office Office Phone Host
yekong yekong *:0 Aug 10 22:13 (:0)
yekong yekong pts/0 2:33 Aug 10 22:13 (:0)
yekong yekong pts/1 Aug 10 22:14 (192.168.25.1)
[root@localhost ~]# finger -l root
Login: root Name: root
Directory: /root Shell: /bin/bash
Last login Fri Aug 10 22:16 (CST) on pts/1
No mail.
No Plan.
ftp
该命令是标准的文件传输协议的用户接口,是在 TCP/IP 网络上传输文件最简单有效的办法。
host
改命令用于 DNS 查询
hostname
该命令用于显示或设置系统的主机名
该命令用来发送和接收邮件
netstat
该命令用于显示网络连接、路由表和网络接口信息,用户可以知道目前有哪些网络连接正在运行。一般常用的参数有:
-a: 显示所有socket,包括正在监听的。
-c: 每隔1秒钟就重新显示一遍网络信息,直到用户中断它。
-I:显示所有网络接口的信息
-n: 以IP地址代替名称,显示网络连接信息。
-r: 显示核心路由表,格式同“route-e”命令。
-t: 显示TCP协议的连接信息。
-u: 显示UDP协议的连接信息。
-v: 显示正在进行的网络协议。
-p: 显示pid(进程号)。
[root@localhost ~]# netstat -nltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1360/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1140/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1141/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1300/master
tcp6 0 0 :::22 :::* LISTEN 1140/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1141/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1300/master
udp 0 0 0.0.0.0:5353 0.0.0.0:* 751/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 715/chronyd
udp 0 0 192.168.122.1:53 0.0.0.0:* 1360/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 1360/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 939/dhclient
udp 0 0 0.0.0.0:52337 0.0.0.0:* 751/avahi-daemon: r
udp6 0 0 ::1:323 :::* 715/chronyd
ping
该命令可用来测试计算机和网络上的其他计算机是否连通.例如:
[root@localhost ~]# ping baidu.com
PING baidu.com (123.125.115.110) 56(84) bytes of data.
64 bytes from baidu.com (123.125.115.110): icmp_seq=1 ttl=128 time=41.1 ms
64 bytes from baidu.com (123.125.115.110): icmp_seq=2 ttl=128 time=48.4 ms
64 bytes from baidu.com (123.125.115.110): icmp_seq=3 ttl=128 time=38.2 ms
rsh
rsh(remote shell) 命令是远程shell命令.该命令在指定的远程主机上启动一个shell并执行rsh命令,如果rsh没有 指定具体命令,就启用rlogin命令登录到远程主机上。
telnet
telnet 命令用于通过网络登录远程计算机,如同操作本地计算机一样。
wget
Wget命令用于Linux环境下从WWW上下载文件,支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,查找合乎要求的文件并下载到本地硬盘上,Wget命令可在后台运行,截获并忽略 HANGUP信号,因此在用户退出登录之后,仍可继续运行。
进程管理命令
kill
该命令用于终止一个程序。例如:
[root@localhost ~]# kill 4468
bash: kill: (4468) - No such process
ps
该命令用于显示程序的状态。例子如下:
[root@localhost ~]# ps
PID TTY TIME CMD
2763 pts/1 00:00:00 sudo
2769 pts/1 00:00:00 su
2770 pts/1 00:00:00 bash
5307 pts/1 00:00:00 ps
ps 命令可配合grep命令实现查找某一进程的信息,如:
[root@localhost ~]# ps -ef|grep java