1.主流UNIX系统:Solaris(SUN)、AIX(IBM)、HP-UX(HP)。 2.学习环境:SUN OS 5.9 3.UNIX系统组成:Kernel(管理硬件、进程、文件系统等)、Shell(承担解释器interpretor、翻译器translator的作用)、FileSystem(文件系统)。 4.目录: 根目录(/) bin目录(存放基本命令的可执行二进制文件) etc目录(存放所有管理文件和信息) usr目录(存放各种应用程序)lib(存放各种函数与程序库) dev(存放各种设备驱动程序) boot(启动相关) root(超级用户主目录) home(其他用户的主目录)…… 5.SHELL分类:Bourne Shell(sh)、C shell(csh)、K shell、Bash shell(bash)、T csh。 6.注意点:UNIX系统大小写敏感(case sensitive)。 常用SHELL命令 1.df:[-h -k]查看磁盘状况 Unix中的硬盘分区(slice)与windows不同,以标记s0-s7区分(其中s2不可用),如:c0t0d0s0 -h以人类可识别的容量标记,如K,M,G等。 -k全部以KB标记。 2.password:修改用户密码 重要文件:/etc/password /etc/shadow 3.id:查看用户UID,GID 4.pwd:当前目录 5.cd:改变目录 cd ~XXX(到环境变量PATH下寻找XXX目录,并将当前目录改变到寻找到的目录下) cd ~(到用户主目录) cd (到用户主目录) cd ..(到上级目录) 6.ps:查看进程 /usr/bin/ps -ef查看详细进程状态 /usr/bin/ps -al更详细(包括进程类型) /usr/ucb/ps -auwx更详细 7.ls:[-l -a -t -R -F -i]列出目录内容 -l详细内容(包括文件类型、权限、链接号、组、大小、修改时间、文件名) -a所有文件 -t以时间降序排列 -R子目录全部展开 -F文件类型标记(/表目录、*表可执行、@表链接) -i查看inode(inode是unix系统文件磁盘管理的唯一标记,即每个文件在磁盘上的inode唯一) 8.chmod:改变文件权限 用ls -l列出的文件权限如: - rwx r-- r-- 第一个“-”表示文件类型(-表示文件、d表示目录……) 接下来的9个符号分为3个一组,第一组表示文件拥有者(user or owner)的权限、第二组表示同组其他人权限、第三组表示其他人权限。 r 可读(1) w 可写(1) x 可执行(1) - 无权限(0) 每一组可以用一个八进制数表示,如:rwx 即 111 即 07 (以0开头的数表示八进制,0x开头表示十六进制) chmod 可以改变权限数 格式如下: chmod 744 file1 将file1的权限改为 rwx r-- r-- chmod u+x,g-w,o-r file2 将file2的权限改为第一组加上x,第二组减去w,第三组减去r chmod a+r file3 将file3的权限改为全部加上r 9.touch:建立新文件、或者将旧文件的access time和modification time更新 10.mkdir:建立新目录 mkdir -p dir/dirchld/dirgrandchld 可用-p建立子目录的子目录 11.rm:删除文件或目录 rm -f 强制删除不提示(只要对所在目录有w权限即可删除,不需对文件有权限) rm -i 提示 rm -r 删除目录 rmdir 删除目录(只能删除空目录)(不常用) 12.mv:移动文件或修改文件名字 mv source targetname mv source targetdir 13.cp:复制文件或目录 cp source targetfile 将source拷贝一份命名为targetfile cp source targetdir 将source拷贝一份到targetdir中 cp -r 拷贝目录 14.ln:建立链接 ln -s 建立软链接(软链接相当于快捷方式) 注意:inode表->datablock 15.man:帮助 man -k 模糊查找 man出来的文档,1表示系统命令,2表示系统调用,3C表示C语言标准库函数 16.Metacharacters(元字符) 在shell中有特定含义的字符 17.重定向符号:> >> < 18.管道(pipe):| 把前一个命令的输出作为后一个命令的输入(Unix命令强大的工具) 19.tee:分流命令 ls -l | tee -a ls.txt 屏幕显示,且存储到ls.txt中 20.cat:查看文件 21.head/tail:查看文件头/尾 -n 行数 tail -f 可以实时监控文件末尾 22.more:查看文件(或用管道使用,分屏显示) 23.users:查看登陆用户 /usr/ucb/users 24.who&w:查看登陆用户 25.who am i:查看登陆ID 26.whoami:查看有效ID(可以用su改变) /usr/ucb/whoami 27.find:查找 find 目录 -name -mtime -atime -user -size -perm -type find删除法(注意格式固定)(rm {} \;): find 目录 -name file1 -exec rm {} \; 28.grep:匹配特定字符串(常用来管道过滤) -i 忽略大小写 -v 反匹配(不包含) 29.xargs:切割 若搜索出来的文件多于1个,用管道xargs将搜索的结果分割成单个文件执行某个命令 ls file* | xargs rm 30.wc:统计出现次数 -l 行数 -w 词数 -C 字符数 31.du:查看目录或文件占有空间 -h -k -sh 当前目录占用的空间 32.kill:关闭进程或向某个进程发送信号(signal) kill pid kill -9 pid 可以强制杀死所有有权限的进程 pkill 进程名 pkill -HUP 进程名 (-HUP表示先关闭,再重启) 33.jobs:查看正在进行的工作 jobs -l 命令后加&可以直接后台运行 fg %n 将代号为n的工作前台运行 ctrl-z 挂起某个前台运行的工作 bg %n 将挂起的某个工作后台运行 stop %n 挂起某个后台运行的工作 kill %n 结束某个后台运行的工作 ctrl-c 结束某个前台进行的工作 34.vi/vim:最重要的UNIX文本编辑器 vi分为三个模式:Command mode, Entry mode(编辑状态,此时按Esc退回到Command mode), Last-line mode 进入vi后,默认的是Command mode, 此时的命令有: i 当前位置插入(进入Entry mode) a 当前位置后插入(进入Entry mode) o 在光标所在行下插入一行(进入Entry mode) b/B 后移光标 w/W 前移光标 $ 行尾 ^ 行首 G 文件尾 5G 到第5行 L 到屏幕最下 H 到屏幕最上 M 到屏幕中间 x 删除一个字符 dd 删除当前行(dd的内容进入粘贴板,可用来剪切) 5dd 删除5行 r 替换一个字符 cc 替换一行 C 替换从光标到行尾 yy 拷贝行 5yy 拷贝5行 p 粘贴粘贴板中的内容 J 连接当前行和下一行 /string 查找字符串 u 废除刚才操作 : 进入Last-line mode 下面介绍Last-line mode下的命令: :set nu 显示行号 :set nonu :5,10d 删除5-10行 :1,$d 删除所有行 :1,3co5 将1-3行拷贝到5行后 :1,3m5 将1-3行剪切到5行后 :1,$s/stringold/stringnew/g 将所有行中的旧字符串替换为新字符串 :nohlsearch 查找过的高亮显示去掉(只起一次作用) :q! 强制退出vi,不存盘 :wq 存盘退出vi :w newfilename 另存为 35.crontab:自动调度(定时执行某个程序) crontab -l 显示调度表 crontab -e 编辑一个调度 crontab -r 删除所有调度 编辑调度时候的格式为: minute(0-59) hour(0-23) day(1-31) month(1-12) weekday(0-6) filename 若不制定,可用*代替,如: 0,30 8-17 * * 1-5 a.sh 表示:周一到周五的8-17点每半个小时执行一次 36.alias:命令别名 csh下:alias c clear 可以用c代替clear bash下: alias c=clear 37.ifconfig:设置网络接口 /usr/sbin/ifconfig -a 38.netstat:网络状态 39.finger:查看某个用户情况 40.ping: [-s] 41:telnet:... 42:ftp:... lcd 改变本机目录 cd 改变服务器目录 ls/dir bin/asc 传输模式 hash 传输数据分段标志# prompt 是否提示 get/mget put/mput ! 暂时回到本机操作 exit 从本机操作再回到ftp操作 43.mailx:... 44.mesg: [-y -n] 是否接受信息 45.message command: wall 广播 write/talk 用户名 终端号 46.history:查看运行命令记录 !c 运行最近一次运行过的以c开头的命令 47.which:查看某个命令的第一个路径 48.whereis:查看某个命令所在的所有路径 49.Shell Scripting # 注释 #! /bin/bash 使用bash ★UNIX环境变量介绍 感觉刘春阳老师介绍环境变量时的比喻很形象,本来感觉环境变量很神秘,经他一说,感觉似乎不过如此,他说: 当你去一个小区买楼房时,你会问小区管理员,该小区的环境如何。然后小区管理员会说,“社区医院=出门左拐”,“社区小学=出门右拐”,“社区...=...”,……这些就是环境变量。UNIX中也一样,系统为了告诉某些程序一些应用程序或者文件存储位置,就使用诸如此类的一系列等式设置环境变量,如“PATH=/usr/bin:/bin:.”,“JAVA_HOME=...”等等。 最重要的环境变量PATH告知SHELL,应用程序应当到哪里去找。 在不同的SHELL中,环境变量的设置有所不同,以csh和bash为例介绍: 1.Csh中: 命令env可以列出所有的环境变量 setenv VAR abc 将VAR设置为abc(VAR为全局变量,在本SHELL的所有子SHELL中生效) set VAR abc 将局部环境变量设置为abc(此处VAR为局部变量,只在本SHELL中生效) set path=() 设置路径(csh中多个路径用空格隔开) echo $VAR 显示环境变量VAR 登陆csh时,系统从初始化文件(initialization files)中读取环境变量,csh的初始化文件为主目录下的.cshrc 修改过初始化文件后,source可以更新初始化 初始化文件.cshrc的其他内容: 创建目录或文件时的默认权限(umask=022时,建立目录时的权限为777-022=755,建立文件时为666-022=644) 缺省提示符(set prompt=csh%, 则提示符为csh%) 路径PATH( set path=(/usr/bin /bin .) ) 终端类型 一些命令(如alias c clear) 2.bash中: env 列出所有环境变量 VAR=abc 将环境变量VAR设置为abc(此处为局部变量) export VAR 将已经设置好的局部变量变为全局变量 登陆bash时,初始化文件为.bashrc(b shell的为.profile) 初始化文件.bashrc中的内容: 环境变量 umask 缺省提示符(PS1=bash>, 则提示符为bash> ,注意,这里使用的是PS1,表示提示符) PATH 一些命令(如alias c=clear, 注意,比csh多一个等号!) |