`
panenfei
  • 浏览: 7890 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

unix大全

阅读更多
一.unix系统
1、 发展历史:
 第一阶段为Unix的初始发展阶段
1969年KeThompson在AT&T贝尔实验室创造了Unix操作系统,此时,UNIX是用汇编语言编写的。
1973年,UNIX作者用C语言对其源代码进行了重写,并且发布了源代码
 第二阶段为80年代,这是Unix的丰富发展时期
AT&T继续发展内部使用的Unix版本7 ,同时也发展了一个对外发行的版本,但改用System加罗马字母作版本号来称呼它。System III和System V都是相当重要的Unix版本
其他厂商,以及科研机构都纷纷改进Unix,其中以加州大学伯克利分校的BSD版本最为著名,从4.2BSD中也派 生出了多种商业Unix版本比如Solaris、HP-UX、IRIX 、AIX、SCO等等
SunOS是基于4.2BSD开发的,直到SunOS 4。但是在此之后,Sun将操作系统的开发工作转向了System V,这个新版本为Solaris 2,或者称为SunOS 5,因此也可以将SunOS 4称为Solaris 1.0,但是SunOS 4与Solaris 2分属两个流派,其中的差别就比较大了。值得一提的是Sun的版本号比较有趣,从Solaris 2.6之后,Solaris 2.7的版本号直接变成了Solaris 7.0,
 第三阶段是Unix的完善阶段,从90年代开始到现在。
当AT&T推出System V Release 4(第五版本的第四次正式发布产品)之后,它和伯克利的4.3BSD已经形成了当前Unix的两大流派。此时,AT&T认识到了Unix价值,因 此他起诉包括伯克利在内的很多厂商,伯克利不得不推出不包含任何AT&T源代码的4.4BSD Lite,这次司法起诉也使很多Unix厂商从BSD转向了System V流派。


2、 .user-->shell-->kernel-->HardWare
Shell解析器和翻译器
Kernel是管理设备、激活进程

2.根目录下分为了8个目录,其中一个不可以使用
opt放第三方软件或程序
  etc配置文件
  dev操作系统命令
  usr操作系统命令
  kernel内核信息
  var日志信息、临时文件
  export(导出目录)各个用户的工作目录

3.在unix/linux中都是以文件存储的

二.基本操作
1.登录到系统中需要提供用户名和密码,这些信息存在/etc/passwd和/etc/shadow中
/etc/passwd中存储的登录名:口令占位符:uid:组id :注释字段:起始目录:shell程序
/etc/shadow中存储的+登录名:加密口令
passwd改变密码
2.clear
  pwd显示绝对路径
3. cd
cd /user/yangxp  相对路径
cd dir1cd ./dir1
cd ../..
cd
cd ~
cd ~别的用户名 到别的用户的主目录中

命令 空格 参数 空格
注意:~回车,显示当前工作目录
  ~username回车,显示其他人的工作目录
4. ls
ls –l   显示详细信息
文件类型-拥有者权限-同组人权限-其他人权限 硬连接数 拥有者 拥有组 大小 最后修改时间 文件名
ls –a在ls基础上显示隐藏文件,即以“ .”开头的文件
ls –t在ls 基础上以时间排序,最近的在最上面。不写这一项是以ascii码排序
ls –F在名称后面加显示文件类型:@是二进制文件,/是目录,*是可执行文件,文本文件什么都显示
ls –R在ls基础上显示目录及目录下的文件
5.file * 查看所有的文件的类型
6.chmod一般用法:chmod 755 a.txt
chmod 可以用于文件与目录
文件 目录
r-读权限 (可以查看该目录下文件)
w-写权限 (可以该目录底下创建、删除文件)
x-执行权限 (是否可以进入该目录)
u 拥有者
g 同组人
o 其他人
a 所有人
chmod u-r, g+w, o-x  a.txt
chmod ugo-w a.txt
chmod a+x a.txt
chmod 777 a.txt  (数字表示的权限见图说明)

7.touch创建新的文件,如果文件已经存在,则改变文件的时间戳
  touch  filename
      touch  yanglj/filename
8.mkdir创建目录 (可以根相对路径与绝对路径)
mkdir dir1/dir2前提是dir1必须存在
mkdir dir1 dir2创建多个目录
mkdir ~/dir1 在主目录下创建dir1
mkdir –p dir1/dir2 创建新的目录层次(递归创建)
9.cp 将一个或多个档案复制成另一个档案或者是将其复制到另一个目录去。
cp f1 f2 : 将档名为 f1 的档案复制一份为档名为 f2 的档案。
cp f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都以相同的档名复制一份放到目录 dir 里面。
cp -r dir1 dir2 : 将 dir1 的全部内容全部复制到 dir2 里面。

cp 也有一些参数,如下:

-i : 交互是否覆盖

-r : 此参数是用来做递归复制用,可将一整个子树都复制到另一个目录中。

注意:将父目录拷入子目录中会造成死循环

10.mv剪切文件/目录、将一文件改名。如同 cp ,它也有三种格式:

mv f1 f2 : 将档名为 f1 的档案变更成档名为 f2 的档案。
mv dir1 dir2 : 将档名为 dir1 的目录变更成档名为 dir2 的目录。
mv f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都移至目录 dir 里面。

mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 interactive询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要搬过去,所有其他的参数遇到 -f 均会失效。

12.rm & rmdir用来删除的指令。
rm 的格式如下:

rm f1 f2 f3 .....

而 rm 的参数比较常用的有几个: -f , -i , 与 -r

-f : 在删除时,不显示系统提出的任何警告讯息。
-i : 交互是否真要删除。
-r : 递归式的删除。

注意:小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪"......

13.ln
ln a.txt b.txt为a.txt建立硬连接b.txt,目标文件事先不能存在。链接是文件/目录的别名
ln –s d5 d6为目录d5建立软连接,若cd d6然后pwd,显示的是d5目录

软链接 硬链接
是产生一个特殊的文件,该文件的内容是指向另外一个文件的位置 是指一个文件可以有多个名称
存储空间不变,只是建立了一个指针;
而copy需要开辟新的data block
ln –s dir1 dir2 ln a.txt b.txt
可以跨越不同的文件系统 只能存在于一个文件系统中
inode不同 inode相同
针对目录 针对文件
直接删源文件时,link还存在,但是打不开了 删除一个链接,只是将link number -1,除非全部删除link,才真正删除;
无所谓哪个是link或源文件

查看节点号加-i,ls –il/ls -i可看到inode

不能给目录做硬链接,但可以做软链接
特点:
硬链接:具有相同的iNode号,源文件与链接文件没有主次之分,不能给不存在的文件创建链接,不能跨文件系统
软链接,不同的iNode号,源与链接有主次之分,可以给不存在的文件创建链接,能跨文件系统,

14.man 命令/函数
man –k keyword(一般是函数)
回车-------下一行
空格-------下一页
q--------退出
/string 查找关键字

三.元字符
1.* 匹配0到多个字符
2.?匹配一个字符
3.[] 匹配一组或一个范围的字符
ls [a-f]h
ls [dD]f
4.;连接多条命令
5.> 输出重定向到非标准输出设备(终端),以覆盖的方式
6.< 输入重定向从非标准输入设备(键盘)
7.>> 输出重定向以追加的方式,若源文件不存在则创建新的
*8. | 管道是将前面的输出作为下一个命令的输入

注意:①现在有一个目录为d2,要模糊查找这个目录时,用ls *2,只能显示出来d2目录下面的内容;这种情况下要使用find *2,才能显示d2的名称等
  ②lp 打印机打印
例:cal 1 2007 | lp
  ③如果需要输出分屏,则在命令后面加“ | more ”
  ④tee实现即在屏幕上输出又在文件中输出
cal | tee a.txt
cal 1 2007 | tee a.txt覆盖原文件内容
cal 1 2007 | tee -a a.txt追加

四.文本操作
1.cat查看文件内容、合并文件
全部显示到终端或加>重定向到文件中;-n加行号显示
cat适合查看小文件,一般用作将很多小文件连成一个大文件:cat file* >newFile
cat /dev/null>filename 清空一个文件

2.more是分屏显示,适合于看大文件
3.head -3 a.txt显示最上面的3行。缺省是10行
4.tail -3 a.txt显示最下面的3行,一般用作查看日志信息
tail –f a.txt可以动态查看文件的最新内容

注意:①/dev/null表示控设备,cal > /dev/null表示将输出的内容扔掉
  ②cat /etc/passwd | awk –F: ‘{print $1 “\t” $6}’\
| sort >~/userinfo
awk做格式化输出
-F格式定义,定义在后面的‘{}’中
Print打印到屏幕上
$1第一列。每列以::分隔
“\t”制表符,tab键
\换行符,表示命令换行
Sort排序,默认是将ascII码排序
目的:将/etc/passwd文件中的第一个字段和第六个字段提取出来并排序,存入~/userinfo文件中
  ③
总结:①创建文件的方式:
vi / touch / cat / > / >>
  ②显示
cat / more / head / tail
*五.Vi  文本编辑 vi
    配置文件、网页、程序源代码等所有基于文本的文本阅读器对编辑器

1. cat
    将一个文本文件的内容显示在屏幕上
    也经常用于将两个或多个文件到一个大文件中
    cat (一个或多个)文件名    cat file* > newfile
    $cat /etc/passwd > /dev/null  (将一个文件的内容不显示在屏幕上而输出到另外一处的文件中)
    cat /dev/null > file           (清空file)
    $cat /etc/passwd | awk -F:'{print $1 "\t" $6}'\ | sort > ~/userinfo   (先显示一个文件的内容,然后对其进行,awk脚本代码,不懂!)
     cat   输入重定向
2. more
    一次显示一个文本文件的内容一屏幕
    more (一个或多个)文件名
    空格键   一次滚动手册一页
    回车键   一次滚动手册一行
    b        移到上一屏
   f      移到下一屏
    h         显示more功能的帮助页面
   q         退出返回外壳提示
   /string   查找含有字符串的信息
   n      寻找一下个出现的字符串
       
3. 头和尾巴
    显示第一行或后n行的一个或多个文件,
    默认显示第一行或到后10行。
    head [-n] (一个或多个)文件名
    tail [-n] (一个或多个)文件名 tail -f 时时更新
    $tail -30 /usr/dict/words
  
4. 调用vi
    vi 文件名            打开或新建一个文件
    vi                  打开一个新的以后命名的文件
    view 文件名          以只读方式打开一个文件

5. 位置
    向上 k
    向下 j
    向左 h
    向右 l
    注:▲ 均指控制光标

6. 输入    输入 删除 撤消和更改 复制和粘贴 保存和退出 高级编辑选项
    i    在光标当前位置插入
    a    在光标所在位置后插入
    l    在行头插入
    A    在行尾插入
    o    在光标所在行下插入一空行
    O    在光标所在行上插入一空行
    <Esc>  退出插入状态

7. 删除文本                    ——单位,个数
    x    删除一个字符
    dw    删除当前词
    3dw    删除三个词
    dd    删除当前行
    5dd    删除五行
    :5,10d ==5G 5dd

8. 撤消和更改文本
    r    替换一个字符
    cw    替换一个单词
    cc    替换一行
    C    替换从光标至行尾
    J    把当前行和下一行连起来
    u    废除刚才的编辑操作(即undo)
    ~    改变大小写

9. 复制和粘贴文本
    yy    拷贝行(或Y)
    yw    拷贝词
    p    当前行下粘贴
    P    当前行上粘贴
    :1,2co3 拷贝行1,行2在行3之后
    :4,5m6 移动行4,行5在行6之后

10. 保存和退出文件
    :w           存盘
    :w newfile    新文件存成新文件
    :wq           存盘退出vi(或ZZ,或:x)
    :q!           强行退出不存盘

11. 高级编辑选项
    :set nu 显示行代码(:set nonu 隐藏行号)
   number) 光标停在指定行,如:21或21G
    G 到文件尾行(1G到文件头行)
    ^                   文件行头
    $                   文件行尾
    L                   屏尾
    M
    H
    ctrl+f  ctrl+b     
    /串 从当前行往下查找
    ?串 从当前行往上查找
    n 查找继续
    :1,$s/旧串/新串/g 替换全文(或:%s/旧串/新串/g)
    :r<文件名> 在光标所在位置插入另一个文件
    :1,$ s/^/#          在每行首加#
六.查找
1.id
id显示自己的uid和gid
id root显示用户root的uid和gid
id –a root显示用户root在各个组里的别名
2.users当前系统由哪些用户登录了/usr/ucb/whoami
3.who 看登录用户的详细信息,who | more
登录名(可重复) 伪终端号(只能唯一)  登录时间 登录ip
   一个用户是可以多次登录的,但是每次登录的终端号是不可能重复的
w 比上述的命令更详细
用户名 终端号 登入时间 闲置时间。。。。
4.whoami显示登陆本机的用户信息,相当于id,但是su之后,显示的是root
5.who am i显示当前有效用户身份,比如su - username改变身份后,仍然显示真正的用户。但如果是使用了su username那就是改变了登陆的用户,使用 who am i 后就不一样了。
6.find找文件:find 路径 查询条件;
Find是精确匹配: find . –name file1
如果要模糊匹配:find . –name “file*” -使用通配符要用双引号
-name 按文件名查找
-mtime 10修改时间距今10天那天的文件,-10表10天以内,+10表超过10天的
-user 0表userid=0的文件,即root的文件 (按用户查找)
-size +400表文件大小超过400个blok,一个blok是512字节的文件,即200K
-print 打印
-perm 777 权限是777的文件 (按文件权限查找)
-type f 只查普通文件,(按文件类型查找)
-atime +365访问时间超过一年的 (按访问时间查找)
-exec rm {}执行删除操作,{}表示将前面的结果作为rm的参数

7. grep过滤不包含
-v 寻找所有不匹配字符串的行
-i    当搜索时忽略字符串的大小写
xargs 组参数
ls   *.cc |xargs grep count

8. wc 对单词进行统计
-l 以行为单位统计
-w以单词为单位统计
-c以字母为单位统计
who | wc –l  当前登陆的用户数
wc -l /etc/passwd 当前注册的用户数
grep asd0801 /etc/password | wc -l

9. du 统计磁盘容量
df –k是对文件系统进行统计
du 单位是512字节
du –k 单位是K,即1024字节
    du –s blog


10.ps 列出当前在系统中运行的进程,只列出跟终端相关的进程
-e列出系统中运行的所有的进程
-f 列出完整信息,并格式化输出
    -u 列出该用户的信息
ps –ef :
uid pid ppid c stime tty time cmd
ps –ef |grep telnet
 用户id  进程id  父进程id  启动时间  终端号(?指不跟任何终端有关系,一般是deamon进程) 累计使用CPU的时间  进程名
进程树:bashcshin.telnetdinetdinit
  prstat 实时显示当前系统中的所有进程,q/C即可退出
11. su username 改变用户身份,exit退出
   su – username: 切换到该用户的主目录
   su username: 改变了登陆的用户
12. kill 终止一个进程,即发信号给进程
kill -15终止进程,可以忽略
kill -9 强制杀死进程
control+c终止前台运行的进程
sleep 300.vs sleep 300&前台运行  后台运行

      control+z挂起jobs –lbg %任务号
前台==============================后台
  Fg %任务号jobs –lstop 进程号
pkill sleep可以直接跟进程名(awk提取进程号)

13.tar:将相应的文件打成一个.tar包
• package: tar –cvf  tarname.tar file
• unpackage:tar –xvf tarname.tar

14.zip:将相应的文件打成一个zip包
• package: zip – r zipname.zip file
• unpackage:unzip –d dir zipname

七.网络
不同的网段之间不能通信
要想通讯则使用路由器
基本配置:ip、子网掩码 、DNS服务器地址
dhcp动态分配IP地址
ifconfig -a:查看本机IP,在 pc机上用/sbin/ifconfig
netstat –nr:查看网络信息(路由表):
目的地:default是缺省路由,即0。0。0。0
ping:
telnet:远程登录
rlogin: 在一台服务器上重新登录到一个其他服务器上
不指定用户名则以现有的用户名登录,否则用-l 指定用户名
ftp
    finger: 查看服务器上的用户数

*八.环境变量
1.查看:
①全局变量:
env查看所有的环境变量。大写,用:分隔
echo LANG
echo $LANG显示变量LANG的系统缺省值,或者用echo “$LANG”
echo $HOME
②局部变量
echo $path查看,小写,用空格分隔
2.设置:
①全局变量:
(C shell:) setenv variable value  ,只对当前shell有效
例:CC=/usr/local/bin/gcc
CCC = /usr/local/bin/g++
C shell : .cshrc
B shell : .profile
Bash : .bash_profile
修改全局变量文件
首先打开vi  .bash_profile
设置变量。例如(JAVA_HOME=/home/panenfei/jdk1.6.0;
PATH=$PATH:$HOME/bin:JAVA_HOME/bin
export JAVA_HOME
export PATH)
退出保存:wq
然后运行文件source .bash_profile
查看echo $JAVA_HOME
echo  $PATH
成功。OK
②局部变量
set path=(… … …)



注意:怎么在本机配置ifconfig命令
3.history
set history=20;(C shell中必须要先set,history才能生效)
history!n
history 5只显示最后5条
!!运行最后一条

4.aliases 别名 命令名(只对当前shell有效)
5.which显示命令所在的路径
6. whereis 显示命令存在的所有目录,path中定义的命令所在的目录顺序有关系,应该将最常用的放在前面
7.prompt设置提示符
set prompt=value

九.脚本
1.vi a.shchmod 755 a.sha.sh
注释用#标识
2.crontab
-l 查看日程表
-e 定制日程表,默认是vi编辑(setenv EDITOR ed)
分钟(0~59) 小时(0~23) 日 月 周(0~6) 脚本名称
-r 删除日程表
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics