Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1538687
  • 博文数量: 416
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 3287
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-05 11:12
个人简介

技术在于专研

文章分类

全部博文(416)

文章存档

2021年(3)

2015年(34)

2013年(2)

2012年(1)

2011年(2)

2010年(5)

2007年(344)

2006年(25)

分类: LINUX

2007-04-14 12:19:21

些细节
--------
   Linux是大小写敏感的系统,所有的命令、路径、参数、变量……都区分大小写
   您可以使用TAB键补全您的命令,无论任何时候,多按几次TAB总会有所帮助
   Shell的功能键能够协助您更高效的编辑命令,请熟悉其键绑定,尽量使用它
   
   命令由命令名、分隔符、参数、操作对象构成
   
   命令名标识命令的功能,例如cp(copy)、mv(move)、rm(remove)……
   有些命令包含一些子命令,您可以认为它的命令名由两个单词构成,例如“apt”软件包管理系统:
      apt-get install      安装一个软件
      apt-get remove      删除一个软件

   分隔符为空格,多个连续的空格视为一个空格,下面两个命令相同:
      cp a b
      cp     a     b
   有一些特殊符号也属于分隔符,例如管道(“|”)、重定向(“>”、“>>”、“<”)、后台运行(“&”)、序列执行(“&&”、“;”)。使用这些符号时,您不需要再使用空格作为分隔符,例如:
      ls -al|less
   我们写为以下形式,只是为了您更容易的阅读它:
      ls -al | less
   
   参数可以精细调节命令的行为,以“-”引导,通常为参数名的首字母。许多软件都可以使用“-h”参数来阅读使用说明,例如:
      apt-get -h
   您也可以使用参数的全名,一般以“--”引导,例如:
      apt-get --help
   多数命令中,使用“-”引导多个字符,将会被视为多个参数,例如:
      apt-get -help
      系统会解读为以下命令
      apt-get -h -e -l -p
   少数命令的参数,不需要以“-”引导,或者使用“-”引导参数全名,例如:
      ps aux
      /etc/init.d/gdm start
      mplayer -loop xxx
   
   当您需要对多个对象进行操作时,您可以使用空格分隔符将它们隔开:
      touch 1 2 3 4 5 6
   使用空格分隔的多个对象,视为一个整体,作为命令的一个操作对象:
      mv 1 2 3 4 5 6 /home/
      这个命令把“1 2 3 4 5 6”作为一个操作对象,移动到另一个操作对象,“/home/”目录

   递归 表示在子层次中重复相同操作。例如递归复制某目录,不但复制当前目录及其下的所有文件;而且对当前目录的子目录,也进行递归复制的操作。


格式约定
--------
   使用“[]”表示可选项,实际输入为方括号中的内容,例如
      ls [-al]
      ls是必须的,参数不需要以方括号包围起来。
   使用“<>”表示必需项,实际输入为尖括号中的内容
   使用“|”表示“或”,以“|”分隔的项目不能同时使用,例如
      tar [-z|j c|x vf] <归档文件> [源文件]
   参数通常紧跟命令名,除非必要,在命令格式中,我们通常省略它们


系统信息
--------
uptime
联机信息-时间,显示如下

        11:27pm    up 9 days,  7:12,      3 user,  load average:   0.07,   0.12, 0.14
       当前系统时间      系统运行时间    当前在线用户数    系统负荷       1分钟前    5分钟前  15分钟前


w
联机信息-已登录用户,显示如下

        01:04:10 up  1:34,  2 users,  load average: 0.25, 0.16, 0.11
                uptime 信息

        USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
        user     tty1     192.168.0.1       23:30    1:33   0.14s  0.12s -bash
        用户名    登录方式   来源地址           登录时间   发呆时间   资源占用   当前任务
   
   Tips:w  [用户名称]   : 显示某一用户相关信息


who
联机信息,常用参数
   -r  运行级别
   

whoami
显示当前用户名
   

last
最近用户登录信息
   -<数字> 使用数字作为参数,控制显示条目。例如
      last -10  显示10条纪录

   
uname
系统信息
   -s 内核名称(默认参数)
   -a 全部
   -p CPU信息
   -n 主机名
   -r 内核发行信息(版本号)
   -v 内核版本信息


date
显示、设定系统时间
   -u 显示格林尼洛时间(UTC)
   MMDDhhmm[[CC]YY][.ss] 设定时间,需要管理员权限。例如: date 12292359
        MM 月份  DD 天数  hh 小时  mm 分钟 CC 年份前两位 YY 年份后两位 ss 秒钟
        秒钟、年份为可选,例如: date 122923592006.59
   +[%X]设定显示格式,以下为date默认输出格式:
      date +%Y年\ %m月\ %d日\ %A\ %H:%M:%S\ %Z
        格式控制
      %n 换行
      %t 制表符
        小时
      %H(00~23) %I(01~12) %k(0~23) %l(1~12) %p(AM|PM)
        分、秒
      %M分钟(00~59)
      %S秒(00..61)
      %T(hh:mm:ss) %r(hh:mm:ss [AM|PM])
      %s 从1970年1月1日00:00:00 UTC到目前为止的秒数
      %X(%H:%M:%S)
      %Z时区
        星期
      %a(Sun~Sat) %A(Sunday~Saturday) %w : 一周中的第几天 (0..6)
        年份
      %Y(0000~9999) %y(00~99)
        月份
           %m(01~12) %b %h(Jan~Dec) %B(January~December)
        日期
      %d(01~31) %j(001~366)
      %x(本地格式mm/dd/yy) %D(mm/dd/yy) %c
        一年中的第几周
      %U(00~53)以Sunday为一周的第一天 %W(00~53)以Monday为一周的第一天


cal   
显示日历      


文件管理
--------
   链接
      为当前文件建立在其它路径中的访问方法。例如将系统中其它位置的可执行文件,链接到“/usr/local/bin”目录下,使用命令调用。

ls [路径]
显示当前目录文件列表
   --color 不同属性以不同颜色显示(默认参数)
   -a 全部显示
   -i 显示inode值
   -l 详细信息
   -F 显示文件类型后缀 目录/ 链接@ 可执行文件* 端口文件=  管道文件| >
   -A 显示隐藏文件
   -R 递归显示子目录文件列表
   -S 按文件大小排序
   -t 按修改时间排序
   -u 按访问时间排序
   -d 只显示目录,不递归显示目录下的文件   
   

cd [目录路径] | [特殊路径]
切换目录
   目录路径可以使用绝对路径或者相对路径
   特殊路径:
   ~ $HOME目录(默认值)
   - 上一次目录
   .. 上一级目录
   . 当前目录

   Tips:您可以通过修改“/etc/environment”文件,来定义$CDPATH变量,设定“cd”命令的搜索路径。


pwd
显示当前路径


file <文件名>
显示文件类型
   -i 显示mime类型
   

du [文件名]
计算文件或目录空间占用
   -h 人性化显示。自动以G、M、K为单位显示占用空间大小
   -l 重复计算硬链接文件大小
   -L 计算符号链接文件大小
   -a 显示当前目录子目录中的文件
   -c 显示文件数
   

less <文件名>
浏览文件,使用VI和Emacs两种风格的键绑定。以下为VI风格键绑定
   Ctrl+f(orward)   向下翻一页   Ctrl+d(own)   向下翻半页
   Ctrl+b(ackward)   向上翻一页   Ctrl+u(p)   向上翻半页
   /   查找                 q(uit)   退出
   

touch <目标文件>
创建一个空文件


cp <源文件> <目标目录|文件>
将源文件复制为目录文件,或者将源文件复制到目标目录。多个源文件使用空格分隔
cp <源目录> <目标目录>
将源目录复制到目标目录中,如果复制多个源目录,需要使用“-R”参数
   -a 相当于-dpr参数
   -d 保留链接
   -f 强制复制,覆盖目标文件
   -i 覆盖时询问用户
   -p 保留修改时间和访问权限
   -r -R 递归复制(目录=>目录)
   -l 创建链接
   -v 显示过程


rm <目标目录|文件>
   -r -R 递归删除
   -f 强制删除(无需确认,直接删除。慎用!)
   -i 交互式删除(询问用户)


rmdir <目标目录>
   删除目录时,建议您使用“rm -r”命令


mv <源文件> <目标目录|文件>
相当于cp后删除源文件,也可以作为“重命名”使用。
mv <源目录> <目标目录>   
   -r -R 递归


ln <源文件> <链接>
   -s 符号链接
   -f 强制链接,覆盖目标文件
   -i 覆盖前询问用户


文件操作
--------
nano
一个简单轻便的文本编辑器,使用Emacs风格的键绑定。


split <源文件> [目标文件名前缀]
将源文件按一定规则分割成若干个目标文件。默认文件名前缀为“x”
   -<行数> 按行数分割文件
   -l <行数> 同上
   -b <字节> 按大小分割文件。可以使用b、k、m作单位,不指定单位的情况下,默认单位为b
   -C <字节> 按大小分割文件,并尽量保持每行的完整

   示例:
   split -C 100k file.split x


cat <文件名>
输出文件内容。用空格分隔多个文件名,可以将多个文件内容连接到一起输出。使用重定向合并为一个文件
   -n 在输出中添加行号
   -b 在输出中添加行号,空行不编号
   -s 将两行或以上的空行,合并为一个空行
   
   示例:
   cat xaa xab xac > file.split


sort [-o <输出文件>] [-t <分隔字符>] [+<起始字段> - <结束字段>] [文件]
对文本内容排序
   -m 合并文件
   -c 检查文件是否已按规则排序
   -b 忽略行首空格字符
   -u 忽略内容重复行
   -f 忽略大小写
   -l 忽略非打印字符
   -M 作为月份比较
   -d 按字典顺序排序,按照字母、数字、空格、制表符排序
   -r 逆序输出


more
查看文件内容,我们建议您使用“less”


diff <文件名>
比较文件


cksum [文件名]
计算文件的CRC值。不指定文件名则从标准输入设备读入数据,例如:
   echo xxx | cksum

md5sum [文件名]
计算文件的md5值。同上


权限管理
--------
   一个文件主要包含下列属性,“ls -l”
   - rwx rwx rwx  user  group  date   filename
     111 101 101     
   其中,第一组为归属用户的权限,第二组为归属群组的权限,第三组为其它用户群组的权限。user为文件的归属用户,group为文件的归属群组,date为日期信息,filename为文件名。
   可以使用3位的二进制数字来描述一组权限,某一权限对应的数字为1,则表示具有该种权限,为0,则不具有该种权限。
   对于文件夹,必须拥有它的可执行权限,才能够使用“cd”命令进入该文件夹;拥有可读权限,才能够使用“ls”命令查看该文件夹的文件列表。
   root用户拥有最高权限。

   使用二进制数字来描述一组权限,虽然非常直观,但是3组权限需要用9位数来表示,使用不够方便。因此我们将三组权限使用3位8进制数字来表示。它们的对应关系为:
   r 100 4
   w 010 2
   x 001 1
   将这三位8进制数字相加的结果,就可以表示该组权限的具体内容,例如:
   7=4+2+1=rwx
   5=4+1=rx
   755=4+2+1 4+1 4+1=rwx r-x r-x

   我们还可以使用“a、u、g、o”表示归属关系,使用“=、+、-”表示权限变化,使用“r、w、x”表示权限内容,
   a 所有用户  u 归属用户  g 归属群组  o 其它用户
   = 具有权限  + 增加权限  - 去除权限
   r 可读权限  w 可写权限  x 可执行权限
   例如:
   a+x 给所有用户增加可执行权限
   go-wx 将归属群组和其它用户的可写、可执行权限去掉
   u=rwx 归属用户具有可读、可写、可执行权限


chmod <权限表达式> <文件|目录>
改变文件的权限。权限的表达式可以使用三位8进制数字表示,或者使用+-=来表示
   -R 递归
   -v 显示过程
   -c 类似“-v”,仅显示更改部分
   --reference=<参考文件或目录> 以指定文件为参考改变权限
   示例:
   chmod -R a+x path
   chmod -Rv 755 path


chown <归属用户>[:归属群组] <文件|目录>
改变文件的归属用户。可以使用用户名或者UID
   -R 递归
   -v 显示过程
   -c 类似“-v”,仅显示更改部分
   --reference=<参考文件或目录> 以指定文件为参考改变权限
   示例:
   chown user:admin path
   chown -R user.admin path
   chown user path

chgrp <归属群组> <文件|目录>
改变文件的归属群组。可以使用群组名或者GID
   参数同上


SUID、SGID、Sticky bit
   某些情况下,需要以可执行文件归属用户的身份执行该文件,可以为该文件设置SUID。同样,设置SGID能够以该文件归属群组的身份执行它。
   例如:用户自行设定密码。
   出于安全方面的考虑,“/etc/shadow”只能由root用户直接修改。
   -rw------- root root /etc/shadow
   这个时候,可以为程序“/usr/bin/passwd”设置SUID,当普通用户执行“passwd”命令时,便能够以该程序归属用户root的身份修改“/etc/shadow”文件。而“passwd”程序自身带有身份验证机制,不能通过验证时拒绝执行,从而保证了安全。
   ls -l /usr/bin/passwd
   -r-s--x--x root root /usr/bin/passwd
   我们发现,归属用户的可执行权限位使用“s”,表示SUID。同样,归属群组的可执行权限位使用“s”,表示SGID。
   任何用户或群组都拥有“其它用户”的权限,所以不需要以“其它用户”身份执行文件,其它用户的可执行权限位便不会出现“s”。该权限位可能出现的属性为“t”,也就是粘着位Sticky bit。
   ls -ld /tmp
   drwxrwxrwt root root /tmp
   粘着位表示任何用户都可能具有写权限,但只有该归属用户或root用户才能够删除

   SUID、SGID、Sticky bit也可以像权限一样,使用一个八位数表示,如下:
   4   SUID
   2   SGID
   1   Sticky bit
   通过在“chmod”命令中使用四个八位数的表达式,如“4755”,用第一位表示SUID、SGID、或Sticky bit,便能够为文件设置这些特殊权限。
   示例:
   chmod -R 4755 path


lsattr [路径]
查看文件的特殊属性
   -a 全部显示
   -d 只显示目录
   -R 递归

   特殊属性包括:                       
    a:仅供附加用途
    b:不更新最后存取时间
    c:压缩后存放
    d:排除在倾倒操作之外
    i:不得任意更动文件或目录
    s:保密性删除文件或目录
    S:即时更新文件或目录
    u:预防以外删除

chattr <+|-|=> <路径>
   -R 递归
   -V 显示过程


压缩解压
--------
tar -c|x|u|r|t[z|j][v] -f <归档文件> [未打包文件]
将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时)
   -c 创建
   -x 解包
   -u 更新
   -r 添加
   -t 查看
   -d 比较压缩包内文件和文件
   -A 将tar文件添加到归档文件中

   -z 使用gz压缩格式
   -j 使用bz2压缩格式

   -v 显示过程
   -f <文件名>   归档文件的文件名
   [未打包文件] 创建、更新时必须填写
   
   示例:
   tar -czvf xxx.tar.gz xxx/ xxx1 xxx2 xxx3 多个待打包文件以空格分隔
   tar -czvf xxx.tar.gz /home/user/xxx/  使用绝对路径打包,解包也使用绝对路径
   tar -xzvf xxx.tar.gz 按相对路径解包到当前目录下,或按绝对路径解包
   tar -czvf xxx.tar.gz xxx | split -b 1m 打包后,使用split分割为1m大小的多个文件

   其它参数
   -P 使用绝对路径压缩时,保留根目录“/”
   -W 校验
   -p 还原文件权限
   -w 询问用户
   --totals 统计
   -T <表达式> 处理符合条件的文件
   -X <表达式> 排除符合条件的文件


zip [参数] <压缩包> <源文件>
使用zip格式打包文件
   -r 递归,将指定目录下的所有文件和子目录一并处理
   -S   包含系统和隐藏文件
   -y   直接保存符号连接,而非该连接所指向的文件
   -X   不保存额外的文件属性
   -m   将文件压缩并加入压缩文件后,删除源文件
   -<压缩级别> 1~9,数字越大,压缩率越高
   -F   尝试修复已损坏的压缩文件
   -T   检查备份文件内的每个文件是否正确无误
   -q   不显示指令执行过程

   -g   将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件
   -u   更新压缩包内文件
   -f   更新压缩包内文件。如果符合条件的文件没有包含在压缩包中,则压缩后添加

   -$   保存第一个被压缩文件所在磁盘的卷标
   -j   只保存文件名称及其内容
   -D   压缩文件内不建立目录名称
   -i <表达式>  压缩目录时,只压缩符合条件的文件
   -x <表达式>  排除符合条件的文件
   -n <文件名后缀> 排除指定文件名后缀的文件

   -b <缓存路径>   指定临时文件目录
   -d <表达式> 从压缩文件内删除指定的文件

   -t <日期时间> 把压缩文件的日期设成指定的日期
   -o   以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同

   -A   调整可执行的自动解压缩文件
   -c   替每个被压缩的文件加上注释
   -z   替压缩文件加上注释

   -k   使用MS-DOS兼容格式的文件名称。
   -l   压缩文件时,把LF字符置换成LF+CR字符。
   -ll   压缩文件时,把LF+CR字符置换成LF字符。


unzip [参数] <压缩文件> [压缩包中将被释放的文件]
解压zip压缩包文件
   -P <密码>  zip压缩包的密码
   -d <路径> 指定解压路径
   -n   解压缩时不覆盖原有文件
   -f   覆盖原有文件
   -o   不经询问,直接覆盖原有文件
   -u   覆盖原有文件,并将压缩文件中的其他文件解压缩到目录中
   -l   显示压缩文件内所包含的文件
   -t   检查压缩文件是否正确
   -z   显示压缩包注释
   -Z   unzip -Z等于执行zipinfo指令

   -j   不处理压缩文件中原有的目录路径
   -C   压缩文件中的文件名称区分大小写
   -L   将压缩文件中的全部文件名改为小写
   -s   将文件名中的空格转换下划线
   -X   解压缩时保留文件原来的UID/GID

   -q   执行时不显示任何信息
   -v   执行是时显示详细的信息
   -c   将解压缩的结果显示到屏幕上,并对字符做适当的转换
   -p   与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
   -a   对文本文件进行必要的字符转换
   -b   不要对文本文件进行字符转换

   -x <表达式> 处理里排除压缩包中的指定文件 
   -M   将输出结果送到more程序处理


7z|7za <子命令> [参数] <压缩包> [文件]       
       子命令
   a 添加
   d 删除
   e 解压
   x 带路径解压
   l 列表查看
   t 测试
   u 更新
   参数
   -m<压缩方式>
    -m0=<压缩算法> 默认使用lzma
    -mx=<1~9> 压缩级别
    -mfb=64 number of fast bytes for LZMA = 64
    -md=<字典大小>  设置字典大小,例如 -md=32m
    -ms= 是否固实压缩
   -o<输出目录> 设置输出目录
   -p[密码] 使用密码
   -r[数字] 递归,使用数字定义递归子目录的深度
   -sfx[<模块名称>] 使用自解压模块
   -si 从标准输入设备读入数据
   -so 将数据写入标准输出设备
   -y 所有询问均回答Yes
   -w<工作目录>


rar <子命令> [参数] <压缩包> [文件|文件列表|路径]
   子命令
   x 带路径解压
   e 解压到当前目录
   a 将文件添加到压缩包内
   d 从压缩包中删除文件
   u 更新压缩包内文件
   f 更新压缩包内文件,并添加压缩包内不存在的文件
   m 添加并删除源文件
   r 修复
   l 列表查看压缩包内文件信息 lt 更详细信息 lb 简短信息
   c 添加压缩包注释
   cf <文件名> 将文件内容添加为注释
   cw <文件名> 将注释保存为文件
   t 测试压缩包
   rr 添加恢复纪录
   rv 恢复到文件
   参数
   -p<密码> 设置密码
   -m<0~5> 设置压缩级别,数字越大,压缩级别越高
阅读(686) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~