@@@第二天第一段

@@who:查看当前系统上登录的所有用户及其信息
@@ tty查看显示当前终端对应终端设备文件
      串行终端 /dev/ttys#
   物理终端 /dev/console
   虚拟终端 /dev/tty#
      图形终端
   伪终端(模拟终端)  /dev/ttys#
@@startx:启动图形界面
    startx &后台运行   
@@Ctrl+c:取消当前程序
 shift+Pageup/Pagedown
@@echo :回显用户输入(文本输入,变量引用,命令执行,)对应的结果并显示出来
  $:引用一个变量
  PS1:[\u@\h \W]\$
   \u: 当前用户
   \h:主机名
   \W: 工作目录的路径基名
   
   
对于Linux来讲,路径分隔符:/
 绝对路径:从顶层开始的路径
 相对路径:从当前位置开始的路径
 
@@@第二天第二段

Linux文件系统结构:按层次化来划分文件
/:根,所有文件都从根开始
用户:自己具有所有操作权限的目录,Home,家,主
工作目录:用户当前所处的目录

@@cd:切换文件目录, cd filename

@@basename:显示文件的基名,基名:路径最后一个文件或路径名称。#basename /etc/init.d  显示为init
@@dirname:显示文件的目录名(路径)

Linux文件系统的特性:
1、文件名可以使用除/以外的任意字符;但总长度不能超过255个;
2、严格区分大小写;abc, Abc

如何获取命令帮助:
bash特性之一中,命令有两种类型:
 builtin:在shell程序中实现的命令即为内建命令;
 外部命令:在文件系统上的某位置有一个与命令名称对应的可执行文件;

@@type: 判断命令是属于内建命令还是外部命令
    内部命令返回命令为内部命令提示
 非外部命令一律显示执行文件的路径

shell: 事先通过一个变量(PATH)设定好了多个路径,当用户输入命令时,shell会自动到这些路径(由左向右)下查看与命令名称相同的可执行文件

@@hash:查看使用过的命令或程序的执行文件所在目录路径
shell 事先通过一个变量(PATH)设定好了多个路径,当用户输入命令时,shell会自动到这些路径(由左向右)下查看与命令名称相同的可执行文件查找到并执行过的命令会被保存至一个hash查找表中;可以使用hash命令查看此表

@@which:查看一个可执行程序的具体路径:使用“which 命令”


命令的格式:
 command options arguments
 命令  选项  参数

 选项:调整命令的执行特性的;
  选项可以有多个;多个选项之间必须以空格分隔;
  短选项:-char
  长选项:--word
  短选项可以合并;长选项一般不可以合并;
  有些选项需要有选项参数;

 命令参数:命令的作用对象;
  有些命令可以带多个参数;各参数间需要使用空格分隔;

获取帮助:

[] :代表括号内的内容可选。
{,} :代表括号内的内容分别作为一个使用单元都使用。例如x{a,b}等同于xa,xb
| :或者,只能选一个
<>:必须指定括号内的内容
...:同类内容可以出现多个


 内置命令:
@@help:  # help 命令名
内置命令帮助信息,使用格式 # help cd  
 外部命令:
  # 命令 --help
外部命令帮助信息,使用格式 # dirname --help
  使用手册:manual
@@man:# man  命令帮助文件中需要关注的常用内容:NAME:名称释意;SYNOPSIS:使用格式;OPTIONS:选项;EXAMPLES:使用举例;DESCRIPTION:详细功能描述
    
选项:
-a 显示所有匹配项
-d 显示man查照手册文件时候,搜索路径信息,不显示手册页内容
-f 同命令whatis ,将在whatis数据库查找以关键字开同的帮助索引信息
-h 显示man帮助信息
-k 同命令apropos 将搜索whatis数据库,模糊查找关键字
-S list 指定搜索的领域及顺序 如:-S 1:1p httpd 将搜索man1然后 man1p目录
-C 指定man 命令搜索配置文件 默认是man.config
-K 搜索一个字符串在所有手册页中,速度很慢
-M 指定搜索手册的路径

 

   man的简要使用机制:
    翻屏:
     空格键:向文件尾部翻一屏;
     b: 向文件首部翻一屏;
     回车键:向文件尾部翻一行;
     k: 向文件首部翻一行;
     Ctrl+d: 向文件尾部翻半屏;
     Ctrl+u: 向文件首部翻半屏;

    文本搜索:
     /keyword: 向文件尾部搜索;
     ?keyword:向文件首部搜索;
      n:跟搜索命令相同的方向(下一个);
      N:路搜索命令相反的方向(上一个);

    q: 退出;


   补充:man其实能为命令(普通命令、管理命令)、程序的配置文件格式、系统调用、库调用、游戏及其其它不便归类的文件提供帮助手册;

   man命令的分段机制:
    1-8:
     1:用户命令:User Commands 用户指令:使用者在shell中可以操作指令或可执行程序的文档
     2:系统调用:System Calls 系统调用:系统提供的系统调用文档
     3:库调用:C Library Functions 程序库调用:常用函数与函数库文档
     4:设备文件:Devices and Special Files 设备:设备文档,通常在/dev下的文件
     5:文件格式:File Formats and Conventions 文件格式:配置文件
     6:游戏:Games et. Al.游戏
     7:杂项:Miscellanea 杂项 标准与协议如网络协议,ASCII code等说明;不便归类的。
     8:管理命令:System Administration tools and Deamons 系统指令:管理员帐号可用管理指令。
              man是按照手册的章节号的顺序进行搜索的,比如:#man sleep只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:# man 3 sleep

@@whatis:  查看某关键字在哪些段落中有使用帮助,可以使用
    # whatis Keyword
     精确查找
@@makewhatis:提示:如果whatis的数据尚未生成,可以使用makewhatis手动进行;
    # man -k Keyword
     模糊查找

@@info  info 命令:获取在线文档;
  很多应用程序自带的有文档:/usr/share/doc/
   ChangeLog, INSTALL, README
  google:
   linux filetype:ppt
   keyword site:magedu.com
  RedHat官方文档:
   www.redhat.com/docs/

   
@@@第二天第三段
系统管理类的命令:
@@shutdown: shutdown [option]...  TIME
  -r: 重启
  -h:关机
  -c:取消重启或关机命令

 TIME时间格式:
  now
  +#: #分钟以后
  hh:mm


@@reboot :重启系统,调用shutdown -r
@@halt:关机 -p
@@poweroff:断电
    -f 选项 危险,不调用shutdown

 
日期时间管理类命令:
 date, hwclock
@@date:显示当前时间或修改时间
date [OPTION]… [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
 # date
 #修改系统时间 date MMDDhhmm[CC]YY.ss
        月月日日时时分分年年(两位或四位年).秒秒
 显示时间元素
 # date [+FORMAT]
  %Y:四位年份
  %y: 2位年份
  %m: 月
  %M:分
  %d: 日
  %h: 月
  %H: 时
  %S:秒

  %D: 日期
  月/日/年
  %F: 日期   常用:# date +%F-%H-%M-%S    示例:touch file-`date +%F-%H-%M-%S`
  年-月-日

  unix元年:1970-01-01 00:00:00
  %s: timestamp 常用: # date +%s 从元年到当前时间经过的秒数


@@cal 月历 cal 2014年历

 Linux有两个时钟:
  硬件时钟:
  软件时钟:开机时读取硬件时钟

  hc:  硬件的物理时钟
  sys:  系统的软件时钟

@@ hwclock
   -s: 以硬件时钟为准, --hctosys
   -w: 以系统时钟为准, --systohc

总结:man, info, help, date, hwclock, cal, shutdown, reboot, halt, poweroff, type, cd, which, dirname, basename, who, which, whatis, makewhatis, echo, hash, tty

文件和目录管理类的命令
当前所在的目录:工作目录
家目录,主目录
bash特性之二
shell的命令行展开:能够把一个特殊字符换成别的字符;
 ~: 指定用户的家目录;
 {,}: 展开为多个条目;
  x/{a,b} = x/a, x/b

目录:
 路径:
  相对路径中:
   .: 当前目录
   ..: 父目录
@@cd cd ~[username] 切换到某个用户的主目录
. :表示用户所在的当前目录
.. :用户所在当前目录的上一级目录(父目录)
 cd -:回到最近上一次用户所在目录来回切换,;
  /usr/share/doc/yum-3.2.1
   cd - = /usr/share/doc
   cd - = /usr/share/doc/yum-3.2.1
   cd -


@@pwd pwd: print working directory查看当前用户所在目录
@@mkdir mkdir: 创建目录
  -p: 先创建父目录;
  -v: 显示详细信息;执行过程

  mkdir /a/b/c/d
  x/a, x/b, x/a/m, x/a/n
  mkdir -pv x/{a/{m,n},b}
  a_c, a_d, b_c, b_d
  mkdir a_c a_d b_c b_d
  mkdir {a,b}_{c,d}

   (x+y)(m+n) = xm + xn + ym + yn

@@rmdir rmdir:删除空目录
         -p:mkdir -p逆向删除,只能删除一线单传的目录,目录下有文件不能删除!

练习:创建/tmp/mylinux/usr/local/bin,


练习:创建/tmp/a b

shell中的引用:
 '':强引用,变量替换不会进行
 "":弱引用,能够执行变量替换
 ``:命令替换,引用命令的执行结果;命令替换的另外一符号:$(命令);

 变量替换:${变量名}

=:给一个变量赋值。例:NAME=##。echo ##:echo显示后面的内容。echo $##:显示$后面变量的值。例如:# echo PATH 和# echo $PATH的区别。补充:变量在赋值时不能使用$;    变量名只能包含字母、数字和下划线,而且不能以数字开头;    变量名区别大小写;
使用格式及例题:(1)1# echo $PATH 2 # echo "$PATH" 3# echo `$PATH 4# echo "The value of PATH is $PATH" 不同输出结果的思考,及解答。
(2)1# echo `date` 2# echo "$PATH" 3# echo 'date' 4# echo "Time is `date+%T` " 不同的输出结果的思考和解答

  
练习:创建以当前时间命令目录,例如2014-02-11-16-25-20;

# mkdir `date +%F-%H-%M-%S`

练习:
1、创建/tmp/etc/rc.d, /tmp/etc/rc.d/init.d, /tmp/etc/rc.d/rc0.d, /tmp/etc/sysconfig, /tmp/etc/pam, /tmp/etc/yum.repos.d/
2、创建/tmp/etc/rc.d, /tmp/etc/rc.d/init.d, /tmp/etc/rc.d/rc0.d, /tmp/etc/sysconfig, /tmp/etc/pam, /tmp/etc/yum.repos.d/, /tmp/usr, /tmp/usr/share, /tmp/usr/share/doc, /tmp/usr/share/man, /tmp/usr/bin, /tmp/usr/sbin, /tmp/usr/lib, /tmp/usr/lib64

 

命令总结: pwd, mkdir, rmdir

@@@第二天第四段

 

命令总结: pwd, mkdir, rmdir

shell的特性之三:命令历史
 bash保存的过去曾经执行过的命令的列表;
  当前shell进程的保存在缓冲区中;
  缓冲区中的命令会在shell退出时保存至文件中, .bash_history

 使用上下箭头键可以翻看此前曾经执行过的命令;
@@history
 history快捷方式:
  !#: #为命令历史列表中的命令编号;可用执行第#条命令;
  !!: 执行上一条命令;
  !-#: 执行命令历史列表中的倒数第#条命令;
  !string: 执行命令历史列表中的最近一次以string开头的命令;

  !$: 引用上个命令的最后一个参数; ESC, .

 history
  -c: 清空列表
  -d #: 删除指定的历史命令
  -a: 追加当前会话的命令历史至历史文件中去;

 命令历史相关的环境变量:
  HISTSIZE:命令历史中可以保存的命令的个数;
  HISTFILE: 命令历史文件;
  HISTFILESIZE:命令历史文件可以保存的命令的个数;
  HISTCONTROL: 控制命令历史的生成;
   ignoredups: 忽略记录重复的命令;连续的相同命令才为重复;
   ignorespace: 不记录以空白字符开头的命令;
   ignoreboth: 同时具有上面两种特性;

 补充:Linux文件系统的另一特性:以点号开头的文件为隐藏文件; ls -a

shell中的变量赋值:
 变量名=值
 注意:变量在赋值时不能使用$;
    变量名只能包含字母、数字和下划线,而且不能以数字开头;
    变量名区别大小写;

FHS:

 /bin: 所有用户可执行的程序
 /sbin: 管理员可执行的程序
  /usr/bin
  /usr/sbin
  /usr/local/bin
  /usr/local/sbin
 /boot: 存储系统引导文件:内核、ramfs文件、bootloader(grub);
 /dev: 设备文件存放目录;
 /etc: 配置文件的存放目录;
  /etc/sysconfig:
  /etc/init.d: 系统服务脚本
 /home: 普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录;
 /root: 管理员的家目录;
 /lib, /lib64:库文件;
 /media: 专用挂载位置,通常用来挂载便携式设备;
 /mnt: 专用挂载位置,挂载额外存储设备;
 /misc: 备用目录
 /opt: 备用目录,但通常用来安装第三方软件;
 /proc: 伪文件系统,内核参数的映射;
 /sys: 伪文件系统,系统级别的用于配置外围设备秘的参数;
 /srv: 为服务提供数据存放位置;
 /tmp: 临时文件系统;
 /usr: shared, readonly
  /usr/include: 头文件
 /var: 频繁发生变化的文件
  /var/log
  /var/lock
  /var/run
  /var/cache


@@@第三天第一段


Linux的文件类型:(记忆)
 普通文件:-, f  大部分的不具备特殊意义或功能的文件
 目录文件:d  文件的路径映射文件 
 链接文件(符号链接):l   
 设备文件:特殊文件
  字符设备:c   线性设备
  块设备: b     随机设备
 命名管道:p    把一个命令输出结果给另外一个命令做输入信息
 套接字文件:s  把每个网络通信都标记上用户信息

Linux文件时间戳:
 访问时间
 修改时间:
 改变时间:元数据发生改变

@@ls
    --color 显示颜色
 -a: 显示所有文件,包含隐藏文件,
 -l: 长格式显示详细信息 属性
  l          rwxrwxrwx.     1      root   root      2 Feb 12 09:49      rvi       -> vi
  文件类型   文件权限   硬链接数   属主   属组      最近一次修改时间    文件名    原始文件
 -d: 显示目录自身的信息, 通常与-l同时使用
 -r: 逆序显示
 -R: 递归显示,逐级向下显示子目录
 -h: 文件大小以易读格式显示
 -i: inode号, index node文件索引节点号

@@tree 显示目录树,子路径

bash的特性之四:命令别名
@@alias
\命令:不实用别名,执行命令本身 例如\ls
 alias: 显示当前shell中定义的所有别名;
 # alias 别名='原始命令'

alias echorp='echo "command result `echo -e "\033[1;5;31;42m$?\033[0m"`"'

 # unalias 别名

文本文件查看:
 /etc/passwd
 /bin/ls

@@file file FILE...: 查看文件内容的格式

@@cat cat:
  -E: 显示行结束符
  -v: 显示非打印字符
  -e: 相当于-vE
  -n: 添加行号,显示时给行按顺序编号
  -s: 多个连续的空白行显示为一个空白行

  ?思考:如何换行?
   控制符,如换行符

@@tac tac:cat按行逆序显示

@@more more:查看文件到尾部就退出

@@less less:man调用的命令,操作参照man


@@head head从头部查看文件内容,并退出
  -n #      查看#数字行内容
  -#
@@tail tail从尾部查看文件内容
  -n #
  -f 显示内容并不退出文件,等待新数据的写入


@@echo echo命令的用法:man可以查看支持的控制符(常用)
  -e支持控制符,
   \0NNN
    \033[##m
     第一个#:1-7每个数字表示不同效果
                                                     1加粗
                                                     3表示前景色
              4表示背景色
                                                     5表示闪烁
                                        第二个#:给对应前一个效果参数添加颜色,1-7
                                        多重效果可以用;号隔开
                              
                \033[0m: 控制符结束
                            \033[31mhello\033[0m
     示例:echo -e "\033[31;1;42;5mhello\033[0m"
                                    echo "command result `echo -e "\033[1;5;31;42m$?\033[0m"`"
        -n: 不为显示内容自动换行


命令总结:cat, tac, ls, more, less, tail, head, echo, tree

 


@@@第三天第二部分

文件操作:
@@touch touch:创建或修改文件
               -c: 不创建空文件
        -a: 仅修改访问时间
        -m: 仅修改修改时间
        -t STAMP: [CC]YYMMDDhhmm.ss
@@cp cp: copy 复制并改名文件
  SRC源, DEST目标
  cp SRC  DEST
  假如SRC是一个文件:
   如果目标是一个文件且存在:覆盖
   如果目标文件不存在:创建新文件
   如果目标存在,且是个目录:复制源至目标目录,并保持原名

  cp SRC... DEST
  假如SRC有多个文件:
   如果目标存在,且是一个文件:复制无法进行
   如果目标存在,且是一个目录:复制各文件至目标目录中,并保持原名
   如果目标不存在:复制无法进行

  如果SRC只有一个且是目录:-r
   如果目标是一个文件且存在:失败
   如果目标文件不存在:创建新目录
   如果目标存在,且是个目录:复制源目录至目标目录中,且保持原名

bash中的特性之五:globbing,文件名通配
 通配符:
  *: 匹配任意长度的任意字符
   abc, abb, abm, xab, ab
   ab*
   *ab
   *ab*:
  ?:匹配任意单个字符
  []: 匹配指定字符范围内的任意单个字符
   

   [[:upper:]]   所有大写字母
   [[:lower:]]   所有小写字母
   [[:alpha:]]   大小写字母表
   [[:digit:]]   阿拉伯数字
   [[:alnum:]]   数字和字母
   [[:space:]]   空格
   [[:punct:]]   标点符号
  [^]: 匹配指定字符范围外的任意单个字符
   [^0-9], [^[:digit:]]

练习:复制/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位数字的文件或目录至/tmp下

练习:如果符合条件是目录,也要复制;
1、复制/etc目录下以p开头,中间跟了任意字符,并以d结尾的文件至/tmp目录中;
2、复制/etc/目录下以p开头,中间跟了4个任意字符,并以d结尾的文件至/tmp/a目录中;如果a不存在,先创建出来;
3、复制/etc/目录下以任意一位数字开头,并以非数字结尾的文件至/tmp/b目录中;
4、复制/etc/目录下以非字母开头,后面跟了一个字母及其它任何长度字符的文件至/tmp/c目录中;

 

cp命令的长用选项:(常用)
 -r:递归复制
 -i: 交互,提示,提醒
 -d: 当源为链接文件时,复制链接文件本身而非指向的源文件
 -a: 相当于-dr  备份源文件的元数据属性(管理员才可以用)
 -p: 保持原有属性
 -f: 强制覆盖

@@mv: 移动文件,用法跟cp相近,可以用来改名
 可以直接移动目录,而无须-r选项;
 mv /tmp/passwd /tmp/abc


@@rm: 移除文件
 删除非空目录:# rm -rf

总结命令:cp, mv, rm