所有基础技能都隐藏在每日操作当中。对于每一位 Unix/Linux 使用者而言,熟练掌握核心命令往往比追求炫酷的技巧更为关键。以下这二十多个命令几乎覆盖了日常工作的全部场景,每个都值得花时间深入掌握。
(一)基本命令
先从使用频率最高的命令说起。如果你用过 DOS,对它们应该不陌生,不过 Unix 的规则和习惯还是有一些差异。
1. ls —— 显示文件名,相当于 DOS 的 dir 命令
命令格式:ls [option] file
常用选项:
-l显示详细列表(包括文件类型与权限、连接数、所有者、用户组、文件长度、修改日期、文件名)-a显示所有文件,包括隐藏文件(以.开头的文件)-R递归显示文件及所有子目录-F显示文件(后跟*)和目录(后跟/)-d与-l配合使用,显示目录本身而非其内容
2. cd —— 切换目录,与 DOS 的 cd 类似
注意:目录分隔符为/,与 DOS 正好相反。
命令格式:cd dirname
3. pwd —— 显示当前工作路径。清楚自己所在位置,是一个良好的习惯。
4. cat —— 显示文本文件内容,相当于 DOS 的 type
命令格式:cat filename
5. more 或 pg —— 分页查看长文本文件,便于逐屏阅读
命令格式:more filename
6. rm —— 删除文件或目录
命令格式:rm [-r] filename(filename 支持通配符)
看几个示例就明白了:
rm file1删除名为 file1 的文件rm file?删除文件名长度为五个字符、且前四个字符为 file 的所有文件rm f*删除所有以 f 开头的文件rm -r dir1删除目录 dir1 及其下的所有文件和子目录
7. mkdir —— 创建新目录
命令格式:mkdir [-p] directory-name
例如:mkdir dir1(新建目录 dir1),mkdir -p dir/subdir(一次性创建多级目录)
8. rmdir —— 删除空目录(目录必须为空才能删除)
命令格式:rmdir directory
9. cp —— 复制文件,cp -r 复制目录
命令格式:cp [-r] source destination
几种典型用法:
cp -i file1 file2将 file1 复制为 file2(-i选项会在覆盖前提示确认)cp file1 dir1将 file1 复制到目录 dir1 下,文件名保持不变cp /tmp/file1 .将 /tmp 下的 file1 复制到当前目录,文件名不变cp /tmp/file1 file2将 /tmp 下的 file1 复制到当前目录并重命名为 file2cp -r dir1 dir2递归复制整个目录。若 dir2 不存在,则将 dir1 及其所有内容复制为 dir2
10. mv —— 移动文件或重命名
命令格式:mv source destination
mv file1 file2将 file1 重命名为 file2mv file1 dir1将 file1 移动到目录 dir1 下,文件名不变mv dir1 dir2若 dir2 不存在,则将 dir1 及其全部内容移过去,新目录名为 dir1;若 dir2 已存在,则将 dir1 整个移动到 dir2 下
11. du —— 查看目录占用的磁盘空间
命令格式:du [-sk] directory
du dir1显示目录 dir1 的总容量及其子目录的容量du -sk dir1仅显示目录 dir1 的总容量,以 KB 为单位
12. find —— 查找文件或目录
命令格式:find dir -name filename command
实用场景:
find . -name hello -print在当前目录及所有子目录中查找名为 hello 的文件find . -ctime +7 -print找出七天内未被修改过的文件find . -size +2000m -print找出大小超过 2000 字节的文件find /tmp -user b1234567 -print在 /tmp 下查找属于用户 b1234567 的文件find . -name '*.c' -exec rm {}删除所有 .c 文件find . -name test\* -print显示当前目录及子目录中文件名前四位为 test 的文件
13. vi —— 文本编辑器
vi 的功能非常丰富,但掌握常用的操作就足够了:
命令模式下的移动操作:
j,k,h,l上下左右移动光标0移动到行首,$移动到行尾i,I插入(i 在当前光标处,I 在行首)a,A追加(a 在当前光标后,A 在行末)o,O打开新行(o 在当前行下方,O 在上方)r,R替换(r 替换当前字符,R 连续替换)数字s替换指定数量的字符x删除光标所在字符dd删除当前行d0删除从光标到行首,d$删除从光标到行尾ctrl+f向下翻页,ctrl+b向上翻页G跳转到文件末尾,数字G跳转到指定行/string搜索字符串,n继续向下搜索,N反向搜索%查找匹配的括号u撤销上一次操作
Ex 命令状态(按:进入):
:set number显示行号:0跳到文件开头:1,5 copy 7将第 1 到 5 行复制到第 7 行之后:1,5 del删除第 1 到 5 行:1,5 move 7将第 1 到 5 行移动到第 7 行之后:1,$s/string1/string2/g在全文范围内查找并替换字符串:wq!保存退出
14. dtpad 或 txetedit —— 类似 Windows 的记事本,不习惯 vi 的新手可以先用这个工具
15. head -5 filename 显示文件的前 5 行;tail -5 filename 显示文件的最后 5 行
16. sort —— 对文件内容进行排序显示
17. hostname —— 显示当前主机名
18. lp —— 打印文件
19. unix2dos —— 转换文件格式(Unix 换行符转换为 DOS 格式)
20. echo —— 输出文本信息
21. date —— 显示当前日期与时间
22. script —— 记录一个 Solaris 会话。在做实验或记录操作步骤时,这个命令特别实用
(二)增强命令
基础掌握之后,再来学习一些更“进阶”的命令。它们能帮你成倍提升工作效率。
1. ln —— 创建文件链接
命令格式:ln -s oldname newname(软链接)
简单来说,就是为同一个文件赋予多个名称。例如 ln -s file1 file2,将名称 file2 链接到文件 file1。这在管理共享库或配置文件时非常常用。
2. grep —— 搜索字符串或模式
命令格式:grep string filename
下面是一些经典的模式匹配用法,值得记住:
^M以 M 开头的行M$以 M 结尾的行^[0-9]以数字开头的行^[124ab]以 1、2、4、a 或 b 开头的行^b.503句点表示任意一个字符*星号表示零个或多个字符+加号表示一个或多个字符\.反斜线用于转义特殊字符
举个例子:grep '^b.503' passwd 可以找到电机系各年级的申请者,grep '^\.' myfile.txt 可以列出所有以句点开头的行。
3. fgrep —— 快速搜索固定字符串
命令格式:fgrep string file。它比 grep 速度更快,但不能使用正则表达式。
4. file —— 显示文件的实际类型
命令格式:file fileall
它会告诉你文件是 shell 脚本、ELF 可执行文件、ASCII 文本、数据文件还是 tar 包。这在处理来源不明的文件时特别有帮助。
5. diff —— 比较文件或目录之间的差异
命令格式:diff [-r] name1 name2(name1 和 name2 可以是文件名或目录名)
diff file1 file2逐行比较 file1 和 file2 的不同之处diff -r dir1 dir2比较两个目录下所有文件的差异
6. cmp —— 比较文件相同部分,快速判断是否完全一致
命令格式:cmp file1 file2。它只报告第一个不同的字节位置,适合快速判断两个文件是否完全相同。
7. ftp —— 远程文件传输
命令格式:ftp [hostname|IP address]
常用的 ftp 子命令:
ascii设为文本模式(传输文本文件)binary设为二进制模式(传输可执行文件、压缩包、镜像文件)cd remote-directory改变远程主机的工作目录lcd [directory]改变本机的工作目录ls [remote-directory] [local-file]列出远程目录中的文件get remote-file [local-file]从远程下载文件mget remote-files使用通配符批量下载put local-file [remote-file]上传文件到远程mput local-files使用通配符批量上传mkdir directory-name在远程创建目录prompt切换交互模式(开启时每个文件传输都会询问确认)quit/bye退出 ftp
后台执行 ftp 可以这样操作:先编写一个 ftp 命令脚本,再配合 .netrc 文件自动登录,最后用 nohup ftp remote < ftp_command > message & 在后台执行。
8. telnet —— 远程终端访问
命令格式:telnet [hostname|IP address]
9. IO 重新导向
Unix 的 I/O 重定向是核心技能,掌握这几条,很多操作会变得非常简便:
< filename更改标准输入,从文件读取数据> filename更改标准输出,将屏幕输出写入文件(覆盖原有内容)>> filename同上,但新内容追加到文件末尾|管道,将前一个命令的输出作为后一个命令的输入
举个例子:ls -l > /tmp/ls.out 将目录列表保存到文件,ls | more 分页查看当前目录内容,ls | wc -l 统计当前目录的文件数量。
五、用户管理(重点)
用户管理是系统管理的核心,这部分值得仔细阅读,尤其是刚开始接触 Unix 的时候。
(一)用户基本知识
1. 文件信息
ls -l 输出中,第一列为 drwxrwxrwx,其中:
- 第一个字符表示文件类型:
-普通文件,b块设备(硬盘、CDROM),c字符设备,l符号链接,p管道,d目录 - 后面九位每三位一组,分别对应所有者(u)、用户组(g)、其他用户(o)的权限:
r读,w写,x执行
2. 缺省权限
新建文件和目录时,系统会自动赋予默认权限。这个默认值由 umask 控制。你可以通过 umask 命令查看当前值,用 umask maskvalue 来修改。例如 umask 为 022 时,新建文件属主拥有读写权限,用户组和其他用户只有读权限。
3. 系统安全文件
以下几个文件是用户管理的命脉:
/etc/passwd/etc/shadow/etc/group/etc/default/login
(二)相关命令
1. chmod —— 改变文件或目录的访问权限
命令格式:chmod [-R] mode name(mode 可用三位八进制数字,或用字母表示)
chmod 755 dir1所有用户都有读和执行权限,只有拥有者可以修改chmod 700 file1只有拥有者可以读、写和执行chmod o+x file2为其他用户增加执行权限chmod g+x file3为用户组增加执行权限chmod o-r file4移除其他用户的读权限
2. chown —— 改变文件或目录的拥有者
命令格式:chown [-R] username name
chown Karen file1将 file1 的拥有者改为 Karenchown -R luhua dir1递归修改整个目录的拥有者
3. chgrp —— 改变文件或目录的用户组
命令格式:chgrp [-R] groupname name
chgrp PSI file1将 file1 的用户组改为 PSIchgrp -R oracle dir1递归修改整个目录的用户组
4. touch —— 更新文件或目录的最后修改时间
命令格式:touch name。如果文件不存在,touch 会创建一个空文件。
5. who —— 查看当前登录系统的用户
who am i显示当前用户信息finger列出所有用户列表w显示更详细的用户活动信息
6. id —— 查看当前用户的用户 ID 和组 ID
7. passwd —— 修改用户密码
命令格式:passwd username。如果不加参数,则修改当前用户的密码。
8. su —— 切换用户
命令格式:su [-] username。不加用户参数则切换到超级用户。加上 - 会同时加载目标用户的环境变量。
六、文件系统管理
(一)硬盘和文件资源
硬盘和 CD-ROM 设备使用块设备接口。设备文件存放在 /dev 目录下,字符设备文件在 rdsk 子目录,块设备文件在 dsk 子目录。
逻辑硬盘设备命名规则:/dev/[r]dsk/cwtxdysz
c:控制器号(cn),如 c0 代表第一个硬盘控制器t:目标号(tn),位于控制器内的地址d:硬盘号(dn),d0 代表第一个硬盘s:片或分区号(sn),标识硬盘分区
dmesg 命令可以帮你查看连接到系统上的设备信息,包括实例名、物理设备名、硬盘规格等。
(二)硬盘分区
硬盘通过分区来访问,分区也叫“片”。Sun 提供的硬盘分区最多 8 个,用 1-7 标识。分区 2 通常代表整个硬盘,分区 5 对应 /opt 文件系统,分区 6 对应 /usr,分区 7 对应 /export/home。
format 实用程序是系统管理员的硬盘维护工具,用来重新格式化硬盘、改变分区大小、修理分析坏道。它会显示分区号(Part)、分区标签(Tag)、访问权限标志(Flag)、柱面范围(Cylinders)、大小(Size)和块数(Blocks)。
newfs 用来创建文件系统。命令格式:newfs raw-device,例如 newfs /dev/rdsk/c0t1d0s0。
fsck 用来修复文件系统。命令格式:fsck raw-device,例如 fsck /dev/rdsk/c0t1d0s0。
(三)挂接文件资源
mount 用来挂接文件系统。挂接点目录必须事先存在。不带选项的 mount 命令会显示当前已挂接的文件资源。
df -k 以 KB 为单位显示硬盘空间,包括总容量、已用、可用和挂接点。注意大约 10% 的空间是系统预留的,在输出中没有体现。
umount 用来卸载文件资源。挂接点目录如果有活动(比如有进程在使用),就不能卸载,最好先 cd 到根目录再执行。
(四)自动挂接文件资源
系统启动时通过读取 /etc/vfstab 文件来自动挂接文件资源。这个文件包含本地和远程文件系统的登记信息,包括设备名、挂接点、文件系统类型、检查顺序等。
(五)NFS 资源
NFS 允许网络上的机器共享资源。相关操作包括:share(共享目录)、dfshares(显示远程共享资源)、mount(挂接远程资源)。
(六)卷管理
/etc/init.d/volmgt [start|stop] 启动或停止卷管理。volcheck 检查软盘并挂接到 floppy 目录。eject [cdrom|floppy] 弹出设备。
七、进程管理
ps -ef 显示所有进程的详细信息。kill -9 pid 强制终止指定进程。nohup 让程序在退出终端后继续运行。
八、软件包管理
pkginfo 查看软件包信息,用 -l 选项查看详细信息。pkgadd 安装软件包,例如 pkgadd -d /cdrom/solaris_2_2/s0/Solaris_2.2 SUNWaudio。pkgchk 验证软件包安装是否完整。pkgrm 删除软件包,注意有依赖关系的包需要先处理。
软件包还支持 Spooling 功能:把安装包先拷贝到 /var/spool/pkg 暂存而不安装,等需要时再从本地安装。删除 Spooled 软件包要用 pkgrm -s。
与软件包管理相关的关键目录:/var/sadm(系统记录文件)、/opt(第三方软件推荐目录)、/var/sadm/install/contents(全系统软件包映象)。
九、数据备份和传输工具
(一)数据设备名
常见的磁带设备类型:8mm 磁带(容量 5G-20G),4mm DDS(1.3G-12G)。设备名如 /dev/rmt/0,加 n 表示不倒带。软盘设备名为 /dev/fd0。
(二)数据备份命令
Solaris 下备份主要有三个命令:
ufsdump:适合系统管理员做完全或增量转储。等级 0 是完全转储,1-9 是增量。备份前建议将系统转入单用户模式。
ufsrestore:从备份磁带上恢复文件,支持单个或批量恢复。
tar:用户级备份命令,支持多卷备份。tar cvf /dev/rmt/0 * 备份所有文件到磁带,tar xvf /dev/rmt/0 恢复。还可以用管道跨主机备份:tar cvf - mydir | rsh remote tar xvf -。
cpio:支持多卷备份,比 tar 慢但更灵活。find . -depth -print | cpio -ov > /dev/rmt/0 备份到磁带,cpio -iv < /dev/rmt/0 恢复。
compress / uncompress / zcat:文件压缩解压工具。gzip / gunzip 是更现代的替代方案。
mt:磁带控制命令,如 mt status 查看状态,mt rew 倒带,mt fsf 1 前进一段。
dd:低级别数据复制工具,dd if=/dev/rmt/0 of=/tmp/file bs=1024。
十、改变运行等级
系统的运行等级决定了它处于什么状态。Solaris 有 8 个运行等级,核心的是以下几个:
- 等级3:完全多用户模式,系统默认状态
- 等级s/S:单用户模式,适合做维护和备份
- 等级0:关闭系统至 PROM 等级,可以安全断电
- 等级5:关闭系统至关电源状态
- 等级6:关闭系统并重新引导至等级 3
who -r 可以查看当前运行等级及历史记录。关闭系统的方式有 shutdown、halt、init 0,紧急情况下可以按 Stop+A 进入 PROM 监控等级。
实际场景中,增加新硬件需要先 touch /reconfigure 再重启;系统挂起时按 Stop+A 进入 PROM,执行 sync 后重新引导;忘记 root 密码时可以用 CD-ROM 引导进入单用户模式后修改 shadow 文件。
十一、网络应用配置
(一)网络基本配置文件
/etc/hosts:主机名解析/etc/defaultrouter:默认网关/etc/nsswitch.conf:名称查询服务顺序/etc/resolv.conf:域名和域名服务器配置/etc/hostname.hme0:网络接口名称/etc/netmasks:子网掩码/etc/inetd.conf:服务项目定义
(二)远程访问命令
rlogin 在远程主机上注册登录,rsh 在远程主机上执行命令,rcp 在远程系统之间复制文件。
(三)访问鉴别相关文件
/etc/passwd 和 /home/.rhosts 控制哪些主机和用户可以免密登录。/etc/hosts.equiv 类似,但针对整个系统(超级用户除外)。
(四)网络监控
rusers 查看网络上注册的用户,rup 查看远程主机状态,ping -s 持续检测主机连通性,spray 使用高层协议测试网络,netstat -r 查看路由信息,ifconfig -a 查看网络接口配置。
接口类型中,lo0 是本地回环接口,le0 是 10M 接口,hme0 是 100M 接口,hme1 是第二个 100M 接口。route 命令用来设置路由,arp 用来查看或修改 ARP 缓存。
十二、图形窗口配置
(本节作为了解,不作重点要求)
双屏配置可以通过 /usr/openwin/bin/openwin -dev /dev/fb0 -dev /dev/fb1 或修改 /usr/dt/config/Xservers 来实现。ffbconfig 用来调整分辨率,只针对 creator/creator3D 显卡。xwininfo 确认当前分辨率,xhost + 允许其他客户端的显示。窗口初始化文件包括 openwin-init 和 dtwmrc,终端控制字符可通过 stty 命令定义。
