Unix入门指南
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多一个等号!)
欢迎转载,请注明出处:亲亲宝宝