| 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 [email protected] $ 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 查找匹配的下一个字符串 |








