小蜜锋 - 云代码空间
—— 技术宅拯救世界!
在Linux早期的版本中,由于不支持图形化操作,用户基本上都是使用命令行方式来对系统进行操作。掌握常用的一些Linux命令是非常有必要的,下面将分类进行介绍。由于篇幅有限,在这里我们介绍命令时有些不带参数,有些只介绍部分参数。如果用户对某一个命令详细的了解的话,可以使用Man命令。例如,想了解ls命令的详细信息,那么命令行书写格式如下:
[root @teacher root]# man ls
注:在Linux中命令是区分大小写的,如:Ls 跟 ls 是不一样的。
1.4.1 文件和目录操作的基本命令
1、pwd命令
pwd 命令代表“print working directory”(打印工作目录)。当你键入 pwd 时,你是在请你的 Linux 系统显示你的当前位置。例如:
[root@teacher apache]# pwd
/tmp/apache
表明你当前正处在/tmp/apache目录中。
2、cd命令
cd 命令来改变工作目录。例如:
命令 |
功能 |
cd ~ |
会把你送回到你的登录目录 |
cd / |
把你带到整个系统的根目录 |
cd /root |
把你带到根用户的主目录;你必须是根用户才能访问该目录 |
cd /home |
把你带到home目录,用户的登录目录通常贮存在此处 |
cd .. |
向上移动一级目录 |
cd /dir1/subdirfoo |
无论你在哪一个目录中,这个绝对路径都会把你直接带到subdirfoo中,即dir1的子目录 |
cd ../../dir3/dir2 |
这个相对路径会把你向上移动两级,转换到根目录,然后转到dir3,然后转到dir2目录中去 |
3、ls命令
使用 ls 命令就可以显示你的当前目录的内容。ls 命令有许多可用的选项。要看到 ls 命令的所有选项,你可以通过在 shell 提示下键入 man ls 来阅读其说明书页。下面是一个与 ls 一起使用的一些常用选项的简短列表。
-a — 全部(all)。列举目录中的全部文件,包括隐藏文件(.filename)。位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录。
-l — 长(long)。列举目录内容的细节,包括权限(模式)、所有者、组群、大小、创建日期、文件是否是到系统其它地方的链接,以及链接的指向。
-F — 文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括:/ 表明是一个目录;@ 表明是到其它文件的符号链接;* 表明是一个可执行文件。
-r — 逆向(reverse)。从后向前地列举目录中的内容。
-R — 递归(recursive)。该选项递归地列举所有目录(在当前目录之下)的内容。
-S — 大小(size)。按文件大小排序
4、locate 命令
有时候,你知道某一文件或目录存在,但却不知该到哪里去找到它。你可以使用 locate 命令来搜寻文件或目录。
使用 locate 命令,你将会看到每一个包括搜寻条件的目录或文件。譬如,如果你想搜寻所有名称中带有 finger 这个词的文件,键入:
locate finger
locate 命令使用数据库来定位文件或目录名中带有 finger 这个词的文件和目录。这个搜寻结果可能会包括一个叫做 finger.txt 的文件,一个叫做 pointerfinger.txt 的文件,一个被命名为 fingerthumbnails 的目录,诸如此类。
5、clear 命令
clear 命令用于清除终端窗口。
6、cat命令
cat是 concatenate(连锁)的简写,意思是合并文件。该命令可以显示文件的内容(经常和more搭配使用),或者是将多个文件合并成一个文件。
7、head 命令
你可以使用 head 命令来查看文件的开头部分。此项命令是:
head <filename>
head 是一个有用的命令,但是由于它只限于文件的最初几行,你看不到文件实际上有多长。按照默认设置,你只能阅读文件的前十行。你可以通过指定一个数字选项来改变要显示的行数,如下面的命令所示:
head -20 <filename>
8、tail 命令
与 head 命令恰恰相反的是 tail 命令。使用 tail 命令,你可以查看文件结尾的十行。这有助于查看日志文件的最后十行来阅读重要的系统消息。你还可以使用 tail 来观察日志文件被更新的过程。使用 -f 选项,tail 会自动实时地把打开文件中的新消息显示到屏幕上。例如,要即时观察 /var/log/messages的变化,以根用户身份在 shell 提示下键入以下命令:
tail -f /var/log/messages
9、grep 命令
grep 命令对于在文件中查找指定的字串很有用途。例如,如果你想在 sneakers.txt 文件中查找每一个提到“coffee”的地方,你可以键入:
grep coffee sneakers.txt
你就会看到文件中带有“coffee”的每一行。
10、chmod命令
chmod命令用于改变文件或目录的访问权限。
让我们先来看一看这个文件。在 shell 提示下,键入:
ls -l sneakers.txt
前面的命令显示了这个文件信息:
-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt
这里提供了许多细节。你可以看到谁能读取(r)和写入(w)文件,以及谁创建了这个文件(test),所有者所在的组群(test)。在组群右侧的信息包括文件大小、创建的日期和时间,以及文件名。
第一列显示了当前的权限;它有十位。第一位代表文件类型。其余九位实际上是用于三组不同用户的三组权限。
那三组是:文件的所有者,文件所属的组群,和“其他人”,这是前面没有包括的用户和组群。
- (rw-) (rw-) (r--) 1 test test
| | | |
类型 所有者 组群 其他人
第一个项目指定文件类型,它可以显示以下几种:
d — 目录
-(短线)— 常规文件(而不是目录或链接)
l — 到系统上其它位置的另一个程序或文件的符号链接
在第一个项目之后的三组中,你可以看到下面几种类型:
r — 文件可以被读取
w — 文件可以被写入
x — 文件可以被执行(如果它是程序的话)
当你在所有者、组群、或其他人中看到一个短线(“-”),这意味着相应的权限还没有被授予。可以看出以下这句
-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt
文件的所有者(这个情况下是 test)有读取和写入该文件的权限。组群 test 也有读取和写入 sneakers.txt 的权限,其他组群没任何权限。它不是一个程序,因此所有者和组群都没有执行它的权限。
接下来我们用chmod来改变文件的权限,键入下面的命令:
chmod o+w sneakers.txt
o+w 命令告诉系统你想给其它人写入文件 sneakers.txt 的权限。要查看结果,再次列出文件的细节。现在,这个文件看起来与下面的输出相仿:
-rw-rw-rw- 1 test test 39 3月 11 12:04 sneakers.txt
现在,每个人都可以读取和写入这个文件。
要从 sneakers.txt 中删除读写权限,使用 chmod 命令来取消读取和写入这两个的权限。
chmod go-rw sneakers.txt
通过键入 go-rw,你在告诉系统删除文件 sneakers.txt 中组群和其它人的读取和写入权限。结果与下面的输出相似:
-rw------- 1 test test 39 3月 11 12:04 sneakers.txt
当你想用 chmod 命令来改变权限时,把它们当做速记符号来记忆,因为你实际要做的只是记住几个符号而已。
下面是一个速记符号含义的列表:
身份
u — 拥有文件的用户(所有者)
g — 所有者所在的组群
o — 其他人(不是所有者或所有者的组群)
a — 每个人或全部(u、g、和 o)
权限
r — 读取权
w — 写入权
x — 执行权
行动
+ — 添加权限
- — 删除权限
= — 使它成为唯一权限
另外,也可以通过使用数字来改变权限。
每种权限设置都可以用一个数值来代表:
r = 4
w = 2
x = 1
- = 0
当这些值被加在一起,它的总和便用来设立特定的权限。譬如,如果你想有读取和写入的权限,你会得到一个值为 6 的总和;4(读取)+ 2(写入)= 6。
sneakers.txt 文件的数字权限设置如下:
- (rw-) (rw-) (r--)
| | |
4+2+0 4+2+0 4+0+0
所有者的总和为6,组群的总和为6,其他人的总和为4。这个权限设置读作 664。
如果你想改变 sneakers.txt 文件的权限,因此你的组群中的人没有写入权,但是仍旧能够读取文件的话,从这组数字中减掉2就可以删除写入权限了。
然后,这组数值就变成644。
要实现这些新设置,键入:
chmod 644 sneakers.txt
现在,列举这个文件来校验改变。键入:
ls -l sneakers.txt
输出应为:
-rw-r--r-- 1 test test 39 3月 11 12:04 sneakers.txt
现在,组群和其他人都没有了到文件 sneakers.txt 的写入权。
这里是一个某些常用设置、数值、以及它们的含义的列表:
-rw------- (600) — 只有所有者才有读取和写入的权限。
-rw-r--r-- (644) — 只有所有者才有读取和写入的权限;组群和其他人只有读取的权限。
-rwx------ (700) — 只有所有者才有读取、写入、和执行的权限。
-rwxr-xr-x (755) — 所有者有读取、写入、和执行的权限;组群和其他人只有读取和执行的权限。
-rwx--x--x (711) — 所有者有读取、写入、和执行权限;组群和其他人只有执行权限。
-rw-rw-rw- (666) — 每个人都能够读取和写入文件。(请谨慎使用这些权限。)
-rwxrwxrwx (777) — 每个人都能够读取、写入、和执行。(再重申一次,这种权限设置可能会很危险。)
下面列举了一些对目录的常见设置:
drwx------ (700) — 只有所有者能在目录中读取、写入。
drwxr-xr-x (755) — 每个人都能够读取目录,但是其中的内容却只能被所有者改变。
11、cp命令
cp(copy)命令可以将文件或目录复制到其他目录中,就如同DOS下的copy命令一样,功能非常强大。在使用cp命令时,只需要指定源文件名与目标文件名或目标目录即可。格式:
cp <源> <目标>
12、mv 命令
要移动文件,使用 mv 命令。mv 的常见选项包括:
-i — 互动。如果你选择的文件会覆盖目标中的现存文件,它会提示你。这是一个实用的选项,因为它象 cp 中的 -i 选项一样,会给你一个确认替换已存文件的机会。
-f — 强制。它会超越互动模式,不提示地移动文件。除非你知道自己在干什么,这个选项很危险。在你对系统信心十足之前,请谨慎使用这个选项。
-v — 详细。显示文件的移动进度。
如果你想把文件从你的主目录中移到另一个现存的目录中,键入以下命令(你需要位于你的主目录内):
mv sneakers.txt tigger
另外的方法是,用同一个命令,但使用绝对路径,如:
mv sneakers.txt /home/newuser/sneakers.txt /home/newuser/tigger
13.mkdir命令
mkdir(make directory)命令用来建立目录。例如在系统中建立datal 子目录:
[root@teacher tmp]#mkdir datal
14.rm命令
在Liunx中创建文件是很容易,这样系统中随时会有过时或无用的文件,用户可以用rm命令将其删除。该命令可以删除目录中的文件或目录本身,对于链接文件,只是删除了该链接,原有文件保持不变。删除文件和目录的选项包括:
-i — 互动。提示你确认删除。这个选项可以帮助你避免误删文件。
-f — 强制。代替互动模式,不提示地删除文件。除非你知道自己在干什么,使用这个选项通常不是明智之举。
-v — 详细。显示文件的删除进度。
-r — 递归。将会删除某个目录及其中所有的文件和子目录。
要使用 rm 命令来删除文件 piglet.txt,键入:
rm piglet.txt
另一个比使用 rm 更安全的删除目录的命令是 rmdir 命令。这个命令不允许你使用递归删除,因此不能删除包含文件的目录。
1.4.2 文件压缩和有关归档的命令
compress,uncompress
此命令用于压缩或解压缩数据。
gzip,gunzip
此命令用于压缩或解压缩文件,其中gzip是在Linux系统中经常使用的压缩和解压缩命令,很好用。
rpm
rpm命令用于启动RPM软件包管理操作。
tar
tar命令用于启动文件打包程序。
unzip
该命令用于解压缩扩展名为.zip的文件,即可以在Linux下解压Windows中用Winzip压缩的文件。
zip
zip命令用于打包和压缩文件。
1.4.3 文件系统的命令
1.dd
dd命令用于复制一个文件。
2.edquota
此命令可用于设置用户与用户组的磁盘空间限制。
3. fdisk
此命令用于执行Linux下的磁盘分区。
4.mkfs
此命令用于建立一个Linux文件系统。
5.mount
该命令用于装配一个文件系统。
6.quota
此命令用于限制和显示用户可用的磁盘空间。
1.4.4 与系统管理相关的命令
1.free
该命令用于查看当前系统内存的使用情况,它可以显示系统中剩余及已用的物理内存、交换内存、共享内存和内核缓冲区。
2.shutdown
该命令用于关机或进入单人维护模式。
3.data
data命令可以显示当前系统的日期和时间。clock命令也可以用于显示系统当前的日期与时间(默认情况下,普通用户无法执行clock命令,必须用root帐号登录执行)。例如:
[root@teacher root]$ date
星期一 6月23 09:18:37 CST 2003 标准时间(Central Standard Time)
[root@teacher root]$ clock
2003年06月23日 星期一 09时18分43秒 -0.832323 seconds
4.cal
该命令可显示计算机中的月历或年历。例如:
[root@teacher root]# cal
六月 2003
日 一 二 三 四 五 六
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
[root@teacher root]# cal –y 参数y显示年历
5.write
该命令用来向系统中的某一个用户发送消息。用户如果想退出信息发送状态,按组合键Ctrl+C即可。例如:
[root@teacher etc]# write root
Message from root@teacheron pts/0 at 08:50…
whar are you doing?
whar are you doing?
EOF
1.4.5 用户管理命令
1.groupadd
该命令用于创建新的用户组。
2.groupmod
该命令用于修改组的属性。
3.groups
该命令用于显示当前用户所在的组。
4.passwd
passwd(password)命令可让用户修改帐户的密码。一般来说,设置帐户密码失败有几种情况:密码太简单、密码太短、密码中的字符多数相同。例如:
[root@teacher root]$ passwd
Changing password for user zjz.
Changing password for zjz
(current) UNIX password:
New password:
BAD PASSWORD:it’s WAY too short
New password:
BAD PASSWORD:is too simple
New password:
BAD PASSWORD:it does not contain enough DIFFERENT characters
Retype new password:
passwd: all authentication tokens updated successfully.
5.su
这个命令非常重要,它可以使一个一般用户拥有超级用户或其他用户的权限,也可以使超级用户以一般用户的身份做些事情。但一般用户使用该命令时必须有超级用户或其他用户的口令。如果要退出当前用户的登录,可以输入exit。
6.useradd
该命令是建立用户帐号最快最简单的方法。
7.userdel
该命令用来删除用户帐号及其相关文件。
8.who
该命令可以查看当前计算机有哪些用户登录,例如:
[root@teacher root]$ who
root :0 Jun23 08:22
root pts/0 Jun23 08:53 (:0.0)- show who is logged on
9.whoami
该命令是用来查看当前用户的登录名。例如:
[root@teacher root]$ whoami
root
1.4.6 网络管理命令
finger
该命令可以用来查询用户信息,也能查看默认的用户环境。例如:
[root@teacherroot]# finger -1 root
Login: root →Name:root
Directory:/root →shell:/bin/bash
On since Mon Jun 23 08:22(CST)on :0(messages off)
On since Mon Jun 23 09:41(CST) on pts/0 from :0.0
Mail last read Mon Jun 23 09:33 2003 (CST)
No Plan.
ftp
该命令是标准的文件传输协议的用户接口,是在TCP/IP网络上传输文件最简单有效的方法。
3.host
该命令用于DNS查询。
4.hostname
该命令用于显示或设置系统的主机名。
5.mail
mail命令用来发送和接收邮件。
6.netstat
该命令用于显示网络连接、路由表和网络接口信息,用户可以知道目前有哪些网络连接正在运行。一般常用的参数有:
-a: 显示所有socket,包括正在监听的。
-c: 每隔1秒钟就重新显示一遍网络信息,直到用户中断它。
-I:显示所有网络接口的信息,格式同“ifconfig-e”命令。
-n: 以IP地址代替名称,显示网络连接信息。
-r: 显示核心路由表,格式同“route-e”命令。
-t: 显示TCP协议的连接信息。
-u: 显示UDP协议的连接信息。
-v: 显示正在进行的网络协议。
7.ping
该命令可用来测试计算机和网络上的其他计算机是否连通.例如:
[root@teacherroot]# ping 192.168.5.7
PING 192.168.5.7 (192.168.5.7)56(84) bytes of data.
From 192.168.5.14 icmp_sep=1 Destination Host Unreachable
From 192.168.5.14 icmp_sep=2 Destination Host Unreachable
From 192.168.5.14 icmp_sep=3 Destination Host Unreachable
---192.168.5.7 ping statistics---
5 packets transmitted, 0 received,+3 errors,100% packet loss, time 4010ms, pipe 3
8.rsh
rsh(remote shell) 命令是远程shell命令.该命令在指定的远程主机上启动一个shell并执行rsh命令,如果rsh没有指定具体命令,就启用rlogin命令登录到远程主机上。
9.telnet
telnet 命令用于通过网络登录远程计算机,如同操作本地计算机一样。
10.wget
Wget命令用于Linux环境下从WWW上下载文件,支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,查找合乎要求的文件并下载到本地硬盘上,Wget命令可在后台运行,截获并忽略HANGUP信号,因此在用户退出登录之后,仍可继续运行。
1.4.7 进程管理命令
kill
该命令用于终止一个程序。例如:
[root@teacherroot]# kill 3793
Base: kill:(3793)- 没有那个进程
ps
该命令用于显示程序的状态。例子如下:
[root@teacherroot]# ps
PID TTY TIME CMD
3644 pts/0 00:00:00 bash
3852 pts/0 00:00:00 ps
[root@teacher root]# ps –aux ︱grep “hong”
Root 3793 0.0 0.5 4812 636 pts/0 S 11:01 0:00 grep hong