Solaris的中文命令参考手册之二
find
#find . -name test.txt //搜索当前目录
#find dir -name test.txt
#find / -name test.txt
#find /export/home -name test.txt
#find ~ -name ‘*tif' //用户的主目录
#find /export -name core -exec rm {} / //搜索core文件并删除它们
#find dir -type d //文件类型
#find /export -type d -name test //文件夹名为test
#find /export -size +400 //文件大于400块的512byte =1 blocks
#find /export -name test.txt -exec rm {} /; //查找并删除
#find /export -name test.txt -ok rm {} /; //交互模式删除 y
#find /export -user keven //按用户查找
#find / -user UID -exec rm{} /; //查找该用户的文件并删除
#find / -name pfile -print>find.txt 2>null.txt&
//找到则放入find.txt,否则就放到null.txt 程序在后台运行
# find /export -name tex.txt -exec rm {} /; //{} /中间有一个空格
$ find ~ -name '*es' //es的前面为任意字符
搜索表达式 意义 定义
name filename 文件名 搜索所有匹配的给定的文件,可以接受元字符(如? *)
type filetype 文件类型 搜索匹配给定文件类型的文件(d为目录)
mtime [+|-]n 修改的时间 搜索所有修改时间或者大于,或小于给定时间的文件
atime[+|-]n 访问的时间 搜索所有访问时间或者大于,或者小于给定时间的文件
user loginid -group groupid 用户ID和属组ID 搜索所有匹配登陆ID的所有者或属组ID的文件
perm mode 权限 搜索所有匹配给定权限的文件(只允许八进制模式)
size[+|-]n[c] 搜索所有大小或者大于,小于n的文件,n以512字节每块计算,如果后面有ac,则以字符(字节)计算
-print 基将搜索结果输出到标准输出。该结果是一个全路径名的文件名 列表
-exec command{}/; exec选项必须通过/;来终止;这样使得find命令可以应用于指定命令中搜索准则中给出的每个文件
-ok command{}/; -exec的交互格式.这个选项用于要求来自用户的输入命令.如 rm -i
-ls 使用长列表格式打印当前路径.这个表达式最常用于链接一个输出,把它重定向到一个文件中,以便稍后进行检查
#grep root /etc/passwd //在passwd中查找root
#grep -i root /etc/passwd //忽略大小写
#grep -v root /etc/passwd //显示除了含有root的行
# grep -c root group //统计有多少行
10
# grep -l root passwd group hosts //查找文件中包含root的文件
passwd
group
正则表达式 功能 例子 结果
.(dot) 匹配任意字符可以多次使用,类似ls命令 grep chap.. file 显示所有包含chap,且之后还有两个字符的行
*(asterisk) 在模式上匹配0个或多个字符 grep chap* file 显示所有包含chap,且之后可以是任意字符
/(back slash) 告诉shell按照字面意思理解/之后的特殊字符 grep dollar/* file 显示所有包含dollar*的行./告诉shell按照字面意思理解*,而不是通配符
^ (caret) 匹配所有以指定模式打头的所有行 grep ^name file 显示所有以Name开头的行
$ 匹配所有以指定模式结尾的行 grep $800 file 显示所有以800结尾的行
[] 匹配模式中的一个字符 grep [64.128] 显示所有包含64MB或128MB的行
-i 忽略大小写
-v 反包含.除了该字符串之外的行
egrep
# egrep 'N(e|o)' /etc/passwd //查找以字母大N开头后面接e 或者o
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x Nobody:/:
$ egrep '(Network|uucp) Admin' /etc/passwd
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:
sort
#cat test.txt
oggg
aaa
ddkk
ddgfg
kk
11
34
22
#sort test.txt
11
22
34
aaa
ddgfg
ddkk
kk
oggg
# ls -ld t* >list
# cat list
-rw-r--r-- 1 keven user 32 10月 2 07:51 test.txt
-rw-r--r-- 1 keven user 0 9月 30 08:54 test1
-rw-r--r-- 1 keven user 0 9月 30 08:54 test2
-rw-r--r-- 1 keven user 0 9月 30 08:54 test3
# sort -rn +4 list -o tt.txt //翻转排序 头4个字符
# ls
list ok.txt ss test.txt test1 test2 test3 tt.txt
# cat tt.txt
-rw-r--r-- 1 keven user 32 10月 2 07:51 test.txt
-rw-r--r-- 1 keven user 0 9月 30 08:54 test3
-rw-r--r-- 1 keven user 0 9月 30 08:54 test2
-rw-r--r-- 1 keven user 0 9月 30 08:54 test1
#sort +5M +6n list -o up.txt
选项 描述
-n 进行数字排序,n可以单独和短横线连接,或者可以跟着一个区域参数
(+|-)n 以第n个分隔符的区域开始或结束。默认的分割符是空格
-r 翻转排序的顺序。r可以单独与短横线连用,或者可以跟着一个区域参数
-f 在排列中忽略大小写
+nM 把开始的三个字符做为月份名称的简写来排序
-d 使用字典排序,只用字母和空格排序,其它的符号忽略
-o filename 把所有输出放到文件名中
who
# who
root console 10月 2 19:23 (:0) (本地登陆)
wing pts/2 10月 2 19:22 (192.168.0.1)(远程登陆)
# who -q //登陆用户统计
root wing
# users=2
# who -r //运行级别
. run-level 3 10月 2 19:20 3 0 S
$ who -Hu
NAME LINE TIME IDLE PID COMMENTS
keven pts/2 10月 12 10:57 . 389 (192.168.0.1)
user pts/3 10月 12 10:16 0:52 368 (192.168.0.1)
PID为用户登陆上来的进程,#kill -9 368 把此用户踢出
$ who
root console 10月 3 19:21 (:0)
keven pts/6 10月 3 22:11 (192.168.0.1)
wing pts/2 10月 3 22:11 (192.168.0.1)
cole pts/3 10月 3 22:11 (192.168.0.1)
w
$w
下午11点01分 运行 3:43, 4 users, 平均负载:0.00, 0.00, 0.02
用户名 终端号 登入时间 闲置 JCPU PCPU 执行命令
root console 下午 7点21分 3:40 10 1 /usr/dt/bin/dtscreen -mode blank
keven pts/6 下午10点11分 -csh
wing pts/2 下午10点11分 5 w
cole pts/3 下午10点11分 50 -ksh
$ w keven
下午11点10分 运行 3:52, 4 users, 平均负载:0.00, 0.00, 0.02
用户名 终端号 登入时间 闲置 JCPU PCPU 执行命令
keven pts/6 下午10点11分 9 -csh
logins
# logins
root 0 other 1 Super-User
daemon 1 other 1
bin 2 bin 2
sys 3 sys 3
adm 4 adm 4 Admin
uucp 5 uucp 5 uucp Admin
nuucp 9 nuucp 9 uucp Admin
smmsp 25 smmsp 25 SendMail Message Submission Program
listen 37 adm 4 Network Admin
lp 71 lp 8 Line Printer Admin
wing 1001 adm 4 my wife
keven 1002 user 100
user1 1003 adm 4
user2 1004 adm 4
cole 1005 adm 4
nobody 60001 nobody 60001 Nobody
noaccess 60002 noaccess 60002 No Access User
nobody4 65534 nogroup 65534 SunOS 4.x Nobody
last
$ last //当前系统的使用历史使用模式
keven pts/2 192.168.0.1 Mon Oct 6 00:55 仍在登录状态
cole pts/6 192.168.0.1 Mon Oct 6 00:52 仍在登录状态
root console :0 Mon Oct 6 00:44 仍在登录状态
wing pts/3 192.168.0.1 Mon Oct 6 00:21 仍在登录状态
keven pts/2 192.168.0.1 Mon Oct 6 00:21 - 00:55 (00:34)
reboot system boot Mon Oct 6 00:20
keven pts/2 192.168.0.1 Sun Oct 5 19:47 - 20:02 (00:14)
reboot system boot Sun Oct 5 19:46
wing pts/1 192.168.0.1 Sun Oct 5 07:47 - 07:48 (00:00)
keven pts/1 192.168.0.1 Sun Oct 5 06:24 - 07:47 (01:23)
root console :0 Sun Oct 5 06:22 - 07:48 (01:25)
keven pts/1 192.168.0.1 Sun Oct 5 06:21 - 06:24 (00:02)
reboot system boot Sun Oct 5 06:21
cole pts/6 192.168.0.1 Sun Oct 5 01:58 - 03:09 (01:11)
wing pts/5 192.168.0.1 Sun Oct 5 01:58 - 03:10 (01:11)
finger
# finger
Login Name TTY Idle When Where
root Super-User console Thu 19:23 :0
wing my wife pts/2 Thu 19:22 192.168.0.1
$ finger -s keven //指定查看的用户
Login Name TTY Idle When Where
keven admin pts/6 11 Fri 22:11 192.168.0.1
$ finger @www //查看一台主机的登陆用户状况www为主机名
[www]
Login Name TTY Idle When Where
root Super-User console 1 Fri 19:21 :0
keven admin pts/6 13 Fri 22:11 192.168.0.1
#finger -s username@hostname
#finger @webserver.com
#finger username@webserver.com
$ finger -l keven //长格式显示
Login name: keven In real life: admin
Directory: /export/home/keven Shell: /bin/ksh
On since Oct 12 10:16:41 on pts/2 from 192.168.0.1
24 seconds Idle Time
No unread mail
No Plan.
# finger user1
Login name: user1 In real life:
Directory: /export/home/wing Shell: /bin/sh
On since Oct 12 11:11:33 on pts/3 from 192.168.0.1
4 minutes 8 seconds Idle Time
No unread mail
No Plan.
$ finger -m //只搜索登陆的用户名
# man -l uname //输出该命令的地址
uname (1) -M /usr/share/man
uname (2) -M /usr/share/man
NAME
man - find and display reference manual pages
SYNOPSIS
man [-] [-adFlrt] [-M path] [-T macro-package] [-s section]
name...
man [-M path] -k keyword...
man [-M path] -f file...
id
# id
uid=0(root) gid=1(other) //为当前用户的ID,而不是原始登陆ID
who i am
# who i am //真实的UID
root console Oct 2 19:23 (:0)
wing pts/2 Oct 2 19:41 (192.168.0.1)
df -k
# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0d0s0 63127 36137 20678 64% /
/dev/dsk/c0d0s6 1201014 768820 372144 68% /usr
/proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
fd 0 0 0 0% /dev/fd
/dev/dsk/c0d0s3 55047 25063 24480 51% /var
swap 608948 24 608924 1% /var/run
swap 609216 292 608924 1% /tmp
/dev/dsk/c0d0s5 24239 15 21801 1% /opt
/dev/dsk/c0d0s7 2691830 112 2637882 1% /export/home
/dev/dsk/c0d0s1 462639 306816 109560 74% /usr/openwin
du -k
#du -k /export //递归显示文件夹中的文件或文件夹
# du -sk /etc 查看目录的使用情况 总树统计
# du -k /etc 逐个查看
# du -k /export | sort -n 可以迅速发现那个目录是最大的。
vi
vi(文本输入模式)
命令 功能
a 在光标后追加文本
A 在行末追加文本
i 在光标前追加文本
o 在光标下插入新的一行
vi(末行模式)
命令 功能
:w 写缓冲区,保存更改继续在vi中工作
:w new_filename 把缓冲区写如new_filename
:wq 或 ZZ 写缓冲区,保存修改,然后退出vi
:q! 不保存修改而退出
:wq! 写缓冲区保存修改然后推出vi,如果你是文件的所有者将忽略只读属性
e! 取消自上次保存以来所做的修改
:x等价于:wq! wq
u 取消最近的一次编辑
vi(命令模式)
命令 功能
j(或向下箭头) 向下移动一行
k(或向上箭头) 向上移动一行
h(或向左箭头) 向后移动一个字符
l(或向右箭头) 向前移动一个字符
空格 向右移动一个字符
w 向前移动一个单词(包括标点)
b 向后移动一个单词(包括标点)
$ 移动到行末
0(零)或 ^ 移动到行首
回车 移动到下一行首
vi(命令模式和末行模式)
命令 功能
x (小写) 删除光标处字符
dw 删除单词
3dw 删除三个单词
dd 删除光标所在的行
3dd 删除三行
yy 拉出一行拷贝,放到剪贴板中
p(小写) 把拉出行放到当前之下
P(大写) 把拉出行放到当前之上
:set nu 显示行号
:set nonu 隐藏行号
:set showmode 显示当前操作模式(如用vedit将自动打开)
:set noshowmode 关闭模式显示
:set 显示所有vi变量
:set all 显示所有可能的vi变量和它们的当前的值
G 到达文件的最后一行
:21 到达第21行
/string 向前搜索字符串string
?string 向后搜索字符串string
n 查找匹配的下一个字符串