一、与终端相关的命令

1、显示当前终端的类型的命令

tty:显示用户连接的终端类型

          虚拟终端(开启系统后显示为命令界面的终端):

      (8月23日)命令总结_target (8月23日)命令总结_用户_02

         伪终端(XShell或Telnet远程连接打开的终端,或者使用图形桌面打开的终端):

      (8月23日)命令总结_style_03 (8月23日)命令总结_blank_04

Linux系统上有有6个虚拟终端,分别对应键盘上的F1-F6键,各个虚拟终端可通过快捷键:Ctrl+Alt+F(1~6)切换;通过Ctrl+Alt+F7切换至图形终端。

Startx &:第一次启动图形终端

Startx --:#(1~n):切换图形终端

在虚拟终端上第一次开启图形终端,必须使用Startx &命令来启动图形终端。

Linux系统的图形终端对应键盘上的F7及其后面的键,可通过Ctrl+Alt+F(7~n)切换。

2、显示当前终端的登录信息的命令

who:显示当前登录至系统的所有用户及其登录的终端类型、登录的时间。

w:显示更为详细的who

whoami:显示当前连接的有效用户

        (8月23日)命令总结_用户_05

3、显示当前终端的时间的命令

date:显示系统时间

       显示完整日期、时间、星期:  date        :(Fri Aug 28 11:56:50 CST 2015)

                                  date  +%c   :(Fri 28 Aug 2015 11:30:00 AM CST)

       显示时间:   date  +%X :(11:37:58 AM)    相当于: date  +%H:%M:%S

                    date  +%T : (11:39:08) (24 小时制)

       显示小时:   date  +%H : (00..23)       date  +%I : (01..12)

                    date  +%k : (0..23)        date  +%l : (1..12)    
       显示分:     date  +%M : (00..59)

       显示秒:     date  +%S : (00..61)

       显示年月日:  date  +%D :  (08/28/15)   date  +%x :  (08/28/2015)

                    date  +%F : (2015-08-28)

       显示年:     date  +%Y : (2015)       date  +%y : (15)

       显示月份 :  date  +%B : (August)      date  +%b 、date  +%h : (Aug)

                    date  +%m : (08)    
       显示日:     date  +%d : (28)

       显示星期:   date  +%A :  (Friday)      date  +%a : (Fri)

       显示本地 AM 或 PM:  date  +%p

       显示时区 :    date  +%Z : (+0800表示与标准时区相差8个小时)    
       显示时间戳:  date  +%s : 从1970年1月1日 00:00:00 UTC 到目前为止的秒数

date  -s<字符串>:根据字符串来设置日期与时间。

date  -s 20150823 //设置成20150823 ,这样会把具体时间设置成空00:00:00    
date  -s 15:13:46        //设置具体时间,不会对日期做更改    
date  -s “15:13:46 2015-08-11″ //这样可以设置全部时间    
date  -s “15:23:46 20150912″  //这样可以设置全部时间    
date  -s “2015-08-24 15:13:46″  //这样可以设置全部时间    
date  -s “20150824 15:13:46″  //这样可以设置全部时间

          (8月23日)命令总结_blank_06

clock、hwclock:显示硬件时间

hwclock  -s:调整系统时间(以硬件时间为准)

hwclock  -w:调整硬件时间(以系统时间为准)

cal:查看日历

cal    :显示当月日历

cal  -3:显示上月、本月、下月的日历

cal  -j:显示当前为本年的第几天

cal  2015:显示2015年的日历

4、执行终端关机、重启的命令

关机:shutdown是最安全的关机方式

                 shutdown  -h  now/ shutdown  -h  +0 :立刻关机

                 shutdown  -h  +10 :十分钟后关机

                 shutdown  -h  22:15 :下一次22:15关机

                 shutdown –k  假关机

                 halt、poweroff(可自动切断电源):立刻关机

                 init  0

重启: reboot

       shutdown  -r  now/ shutdown  -r  +0 :立刻重启

       shutdown  -r  +10 :十分钟后重启

       shutdown  r  22:15 :下一次22:15重启

       init 6

取消关机或重启: shutdown  -c 

Shutdown  --no-wall

二、与命令相关的命令:

1、命令的路径查看及类型判断

        内部命令:shell程序自带的基本命令,存储路径为shell/builtin

        外部命令:不是内部命令的命令,存储路径一般为usr/bin/

type:若该命令是命令别名,显示原命令名信息,不会显示出路径    

which:显示命令的路径,若命令为命令别名,会将原命令信息一并显示。

whereis: 比which更详细,显示命令的二进制程序、源码文件以及帮助手册的路径。(但不会显示该命令是否是命令别名。)

(8月23日)命令总结_blank_07

(8月23日)命令总结_blank_08

which  --skip-alias:禁止列出别名

(8月23日)命令总结_blank_09

2、命令的帮助

内部命令: 

         help  COMMAND

(8月23日)命令总结_blank_10

外部命令:

--help/-help:命令自带的简单帮助

           COMMAND  --help/-h

(8月23日)命令总结_用户_11

(8月23日)命令总结_target_12

man:命令手册页

        man  COMMAND

        man包括: man1, ..., man9,分别对应存储不同的文件

        man1: 用户命令;man2: 系统调用; man3:C库调用;man4: 设备文件及特殊文件;

        man5: 配置文件格式;man6: 游戏;man7:杂项;man8: 管理命令;

man还可能存储其它路径:man命令的配置文件:/etc/man.config

Man文档查看的快捷操作方法:

      Space: 向文件尾部翻一屏;

      b: 向文件首部翻一屏;

      d: 向文件尾部翻半屏;

      u: 向文件首部翻半屏;

      Return:向文件尾部翻一行;

      k或y:向文件首部翻一行;

      #: 快速转到第#行;

      1G:回到第一行;

      G:到最后一行;

      q: 退出;

man文档的文本搜索:

    /keyword:从当前位置向尾部搜索

    ?keyword:从当前位置向首部搜索

    n:按与命令方向相同查看

    N:按与命令方向相反查看

info:仅在man手册无法提供足够的可用帮助信息时才使用

        info  COMMAND

3、命令的命令历史

命令本身的缓存记录

  history:按顺序显示此前至本次使用的命令的列表

(8月23日)命令总结_target_13

  history  #:显示此前至本次使用的最近#条命令的列表

  history  -d#:删除历史中指定的第#条命令(后面的一次上移)

(8月23日)命令总结_style_14 (8月23日)命令总结_style_15

  history  -a 文件路径:将本次历史缓存区的命令保存至指定文件中

  history  -c:清空历史命令   

(8月23日)命令总结_用户_16

命令的路径的缓存记录

       hash:显示缓存的命令的路径及调用次数的列表

(8月23日)命令总结_blank_17

      hash  -d name:清除name对应命令的缓存路径

      hash  -r:清空缓存的命令路径

(8月23日)命令总结_target_18 (8月23日)命令总结_用户_19

4、命令的调用

调用过去执行过的命令:

    !#:调用历史中的第#条命令;

(8月23日)命令总结_style_20

!!: 重复执行上一条命令

(8月23日)命令总结_target_21

!string:调用历史中最近一个以string开头的命令;

(8月23日)命令总结_用户_22

调用过去执行过的命令的最后一个参数:(以上个执行的命令的最后一位参数作为命令输入执行,并显示出结果)

!$:

ESC, .

Alt+.

(8月23日)命令总结_用户_23

5、命令的别名

alias: 查看所有已经定义别名;

(8月23日)命令总结_style_24

alias NAME=COMMAND:定义别名;(重启虚拟机后该操作失效)

      (若命令有空格则需要加‘’,ralias NAME=‘COMMAND’)

(8月23日)命令总结_用户_25

如果别名同原命令名,想直接执行原命令,则需使用\COMMAND

(8月23日)命令总结_style_26

unalias NAME: 撤消命令别名;

(8月23日)命令总结_target_27

(8月23日)命令总结_target_28

(8月23日)命令总结_用户_29

    unalias  -a:撤销所有定义过的命令别名

6、命令的补全 

       Tab键:查找以用户输入的字符串开头的命令

              如果惟一:直接补全;

              否则:两次Tab,可列出全部以输入的字符串开头的命令;

7、命令行展开

        ~: 展开为当前用户的主目录;

        ~USERNAME:展开为指定用户的家目录;(管理员可用)

        {}:可承载一个以逗号分隔的列表,并其展开为多个路径;

  /var/{log,cache,run} = /var/log /var/cache /var/run

             A/{m,n}=A/m,A/n    

             B/{m,n}/{x,y}=B/{m/{x,y},n/{x,y}}=B/mx,B/my,B/nx,B/ny

8、 命令的执行结果状态,

         bash使用特殊变量$?保存最近一条命令的状态结果;

         程序的执行结果有两种:

      程序的返回值;(我们看到的输出结果)

      程序的状态结果;(表示输入的指令是否正确,用echo $?查看)

                         成功:0

                         失败:1-255

(8月23日)命令总结_style_30

要查看执行是否正确,必须立即执行echo $?命令(表示上一条输入的整条指令是否正确)

9、命令的引用

     bash支持三类引用

        强引用:‘’ 

        弱引用:“”

        命令引用 :``(键盘左上角与~同一位置的``),$()

                 实现命令引用(引用一个命令的执行结果,而非命令本身)   

(8月23日)命令总结_blank_31

(注意: file  $(ls /var) 的执行结果一样)

命令的组合键

Ctrl+l:清屏

Ctrl+a: 切换至命令行首

Ctrl+e:切换至命令行尾

Ctrl+c:取消命令执行

Ctrl+u:删除光标所在处至行首的内容;

Ctrl+k: 删除光标所在处至行尾的内容;

三、与路径有关的命令

1、路径的基名

basename 路径:只显示路径的基名

basename 路径  .txt::只显示路径基名,但不显示基名的后缀

(8月23日)命令总结_style_32

2、路径的目录名

dirname  路径:显示指定路径下的目录名

(8月23日)命令总结_用户_33

3、路径补全

把用户给出的路径字符串当前路径起始,并在其指定的上级目录下搜索以指定的字符串开头的文件名;

如果惟一:直接补全;

否则:连续两次Tab键,可列出全部;

四、与目录相关的命令

1、当前工作目录的查看

pwd:显示当前工作目录

echo  $PWD:显示当前工作目录

echo  $OLDPWD :显示当前目录的上级目录

(8月23日)命令总结_target_34

2、目录的切换

cd命令是一个特殊命令,因为它既有内部命令的特性,也有外部命令的特性

cd  ~:切换至当前用户的主(家)目录

cd :切换至当前用户的主(家)目录

cd  ~USERNAME:切换至指定用户的家目录(只有管理员使用有权限)

cd  目录:切换至指定工作目录

cd  -: 回到上一次所在目录(可实现当前目录与上次所在目录之间反复切换)

(8月23日)命令总结_style_35

3、目录的复制

cp  -r  A  B:将A目录复制至B目录

(8月23日)命令总结_blank_36

4、目录的创建和删除

创建目录(其实创建的是基名)

mkdir 目录:创建目录

(8月23日)命令总结_用户_37

mkdir  -p:创建父目录

mkdir  -v: 显示创建过程

(8月23日)命令总结_target_38

删除目录

rmdir 目录:删除目录(只能删除空目录)

(8月23日)命令总结_style_39

       rm  -r  目录:删除目录及目录下的文件(有提示确认是否删除)

      (rm  -r  /tmp或者/tmp/都是表示删除包括tmp在内的整个目录及里面的文件)

(8月23日)命令总结_blank_40

      rm  -rf  目录:直接删除目录及目录下的文件(没有提示)

5、目录的显示          

tree

     tree [OPTION]... [DIR]

    -d:只显示层级目录类型的文件;

    -L level: 只显示几个层级;

五、与文件相关的命令

1、文件类型的查看

   file  文件目录:查看指定文件内容的类型(文件格式)

(8月23日)命令总结_用户_41

            (ASCII  txt表示文件格式为文本类型文件)

2、文件的创建

   touch 文件:创建一个以该文件命名的空文件

(8月23日)命令总结_style_42

3、文件内容及属性的查看命令

ls是list的缩写

      ls 目录:显示指定目录下的文件及子目录列表

      ls  :显示当前目录下的文件及子目录列表

      ls  -l : 使用长格式显示

          drwxr-xr-x 1 root root    8 Aug 23 08:47 .cache

              d: 文件类型

              rwxr-xr-x:权限,mode

              1:文件被硬链接的次数

              root: owner,属主;

              root: group, 属组

              8:size,默认为字节

             Aug 23 08:47 修改时间戳

             .cache:文件名

(8月23日)命令总结_style_43

ls  -d:显示目录自身属性,一般与-l一起使用

(8月23日)命令总结_用户_44

ls  -h: human-readable

ls  -a:显示所有文件,包括.开头的隐藏文件

(8月23日)命令总结_target_45

.: 表示当前目录

..: 表示父目录

ls  -r: reverse,逆序显示

ls  -R: recusive,递归

stat :查看文件本身的状态、数据信息

(8月23日)命令总结_target_46

wc:word counts 显示文件内容的行数、单词数、字符字节数

         wc  -l:  显示行数

         wc  -w: 显示单词数

(8月23日)命令总结_style_47

cut:将文本内容按字段剪贴并按字段显示出来(相当于按列显示)

          -d’’: 指明分隔符

                     -d' ':按一个空格分段

                     -d’:’:按:分段

          -f:指明要显示的字段

                   - f#: 显示第#段

                   - f#-#:显示第#-#段(1-3:显示1-3段)

                   - f#,#:显示第#,#段(1,3,7:显示第1段、第3段、第7段)

cut  -d’’ -f# 文件:以’’里面的内容为分隔符显示文件第#段内容(分隔符必须是文件中存在的且用来分割文件字段的符号)

(8月23日)命令总结_style_48

(8月23日)命令总结_target_49

sort命令:排序(从原文件中把内容抽取出来按默认顺序进行排序后显示出来的工具,相当于exce的排序)

sort  文件:将文件按默认顺序排序后显示出来(默认顺序:ASCII码中字符的大小由小至大的顺序)

(8月23日)命令总结_target_50

sort排序后:

(8月23日)命令总结_style_51

sort -r:按默认顺序的逆序显示

sort -f::忽略字符大小写

sort -u: 按默认顺序排序后去重

(8月23日)命令总结_style_52

sort -t分隔符 -k# 文件:按分隔符划分字段以第#段的内容按默认顺序排序显示出来

(8月23日)命令总结_target_53

sort -t分隔符 -k# -n 文件:按分隔符划分字段以第#段的内容按数值从小到大的顺序排序后显示出来

               -t CHAR: 指明分隔符

               -k #: 字段

               -n: 表示以数值大小排序

(8月23日)命令总结_blank_54

(8月23日)命令总结_blank_55

uniq命令:

    uniq 文件:将文件中连续重复出现的行进行除重后显示出来

    uniq   -c  文件: 显示文件连续重复出现的行及每行重复的次数;

    uniq   -d  文件: 只显示文件中重复过的行;

    uniq   -u  文件: 只显示文件不曾重复的行;

4、文本类型文件的内容查看的命令:

cat,:查看文本类型文件的内容,不支持翻屏,不适合查看较长内容或多个文件内容

   cat  -n:显示行号(相当于给输出结果加序列号,并不是对内容进行排序)

   cat  -e=cat  -vE:显示行结束符$和非打印字符

                -E: 显示行结束符$

                -v:显示非打印字符

tac命令:显示与cat命令结果顺序相反的结果

(8月23日)命令总结_style_56

more,less都支持翻屏查看

more:支持前后翻屏查看,但当翻到文件尾部后将无法再向前翻屏

(8月23日)命令总结_style_57 

more  -d: 显示翻页有退出提示

(8月23日)命令总结_style_58

(8月23日)命令总结_blank_59

快捷键:

      Space: 向后一屏;

      Enter: 向后一行;

      b: 向前一屏;

      q:退出

less:与more唯一不同的是less支持前后来回翻屏查看

(8月23日)命令总结_用户_60

其文本查看快捷键与man命令相同,同时也支持关键字收缩

       文本搜索:

                  /KEYWORD

                 ?KEYWORD

快捷键查看搜索结果:

                      n: 显示与命令方向相同的下一个;

                      N:显示与命令方向相反的前一个;

(8月23日)命令总结_用户_61

head和tail:(按行显示内容)查看文件的指定行的内容,一次只能查看一个文件。

head  文件:显示文件前10行内容

head  -n #:(标准书)显示文件前#行的内容

head  -#: tail -n#的简写(一般不采用)

head  -c #: 显示前#个字节

(8月23日)命令总结_blank_62

tail  文件:显示文件的后10行内容

tail  -n #:标准书写显示文件后#行的内容

tail  -#:tail -n#的简写(一般不采用)

tail  -c #: 显示后#个字节

tail  -f: follow跟踪并显示文件新追加的内容而不用退出

nano:文本内容编辑器

(8月23日)命令总结_target_63

(8月23日)命令总结_用户_64

快捷键:

             Ctrl+O:保存                 Ctrl+X:退出

             Ctrl+Y:前一页              Ctrl+V:后一页

             Ctrl+W :搜索关键字

5、文件的时间戳管理工具:

每个文件都有三个时间戳:

atime: 文件最近一次被访问的时间;

mtime: 文件最近一次被“修改”的时间;(修改:内容改变)

ctime:文件最近一次被“改变”的时间;(改变:属性发生改变)

touch 文件:更新时间戳至当前时间;(若文件不存在,则会自动创建一个以该文件命名的空文件)

(8月23日)命令总结_用户_65

touch  -a: 只更新atime

(8月23日)命令总结_target_66

touch  -m: 只更新mtime

(8月23日)命令总结_style_67

注意:atime或mtime发生改变,必定会导致ctime改变

touch  -t STAMP:

[[CC]YY]MMDDhhmm[.ss]

touch  -c  文件: 不创建空文件(文件不存在时不自动创建)

6、文件管理命令:

cp:copy的缩写,复制命令(复制并粘贴文件)

复制一个文件:cp [OPTION]... [-T] SOURCE DEST

cp SRC DEST

SRC是文件:

    如果DEST不存在:新建目标文件,并将SRC内容复制到目标文件;

                 (新建文件并复制粘贴内容)

(8月23日)命令总结_blank_68

(8月23日)命令总结_用户_69

(8月23日)命令总结_blank_70

      如果DEST存在:

            如果DEST是文件:用SRC的内容覆盖至DEST文件中;(复制粘贴内容)

(8月23日)命令总结_用户_71

(8月23日)命令总结_style_72

           如果DEST是目录:在DEST目录中新一个与原文件同名的文件,将SRC内容复制到新建的同名的目标文件中;(复制粘贴文件)

(8月23日)命令总结_target_73

(8月23日)命令总结_style_74

(若DEST目录存在一个名为SRC的文件,其内容将被覆盖,)

(8月23日)命令总结_blank_75

复制多个文件:目标必须是目录

    cp [OPTION]... SOURCE... DIRECTORY

    cp [OPTION]... -t DIRECTORY SOURCE...

cp SRC... DEST:

如果DEST不存在:

是错误的;

如果DEST存在:

如果DEST是文件:错误;

如果DEST是目录:将原文件复制粘贴到目标目录

(8月23日)命令总结_target_76

常用选项:

-r, -R: 递归复制;(复制目录)

-d: 不跟踪符号链接指向的文件;(保留符号链接文件的本身属性)(不复制符号链接指向的文件,复制符号链接文件)

(8月23日)命令总结_用户_77

(8月23日)命令总结_style_78

cp  --preserve[=ATTR_LIST]:选择性的复制原文件的某些权限

ATTR_LIST包括:mode, ownership, timestamps

                context, links, xattr, all

-a: -dR --preseve=all(备份使用)

-i: interactive提醒是否覆盖目标文件内容(管理员用户是默认提醒的)

-f: force:不提示,直接覆盖目标文件内容

-v: 显示过程

mv: move, 移动文件(剪贴文件)与cp的格式一致

移动一个文件:mv [OPTION]... [-T] SOURCE DEST

mv SRC DEST:

SRC是文件:

如果DEST不存在:新建目标文件,并将SRC剪贴到目标文件;

(8月23日)命令总结_style_79

如果DEST存在:

如果DEST是文件:用SRC的内容剪贴覆盖至DEST文件中;

(8月23日)命令总结_style_80

如果DEST是目录:在DEST目录中新建一个与原文件同名的文件,将SRC内容剪贴到新建的同名的目标文件中;

(8月23日)命令总结_blank_81

移动多个文件:目标必须是目录

        mv [OPTION]... SOURCE... DIRECTORY

         mv [OPTION]... -t DIRECTORY SOURCE...

mv  SRC... DEST:

如果DEST不存在:

是错误的;

如果DEST存在:

如果DEST是文件:错误;

如果DEST是目录:将原文件剪贴到目标目录

(8月23日)命令总结_style_82

      常用选项:

               -i:交互式

               -f:

原文件和目标文件在同一目录下实现的是文件重命名

(8月23日)命令总结_blank_83

rm: remove移除命令

rm  文件:只删除文件(提示是否确认删除)

(8月23日)命令总结_style_84

rm  -f 文件:直接删除文件(不提示是否确认删除)

(8月23日)命令总结_用户_85

常用选项:

rm  -i:每次删除都提醒

7、文本名“通配”(文件名、目录名的匹配)

*:匹配任意长度的任意字符;

?:匹配任意单个字符;

[]: 匹配指定范围内的任意单个字符;

[0-9] [a-z]

[^]:匹配范围外的任意单个字符;

[^a-b]

字符集合:

[:lower:]:小写字母的集合

[:upper:]:大写字母的集合

[:alpha:]:所有字母的集合

[:digit:]:所有数字的集合

[:space:]:空白字符的集合

[:punct:]:所有标点符号的集合

[:alnum:]:所有字母和数字的集合

六、与输入、输出相关的命令

 标准输入:keyboard, 0, /dev/stdin

 标准输出:monitor, 1, /dev/stdout

 标准错误输出:monitor, 2, /dev/stderr

1、I/O重定向:输入重定向(改变标准输入的位置)

                           输出重定向(改变标准输出、标准错误输出的位置)

输出重定向:将命令的执行结果输出到指定的位置

标准输出重定向

            >:覆盖重定向:将命令的执行结果的内容输出(保存)到指定文件中并进行内容覆盖(文件原内容不保留,被输出结果全部替换)

                  COMMAND > NEW_POS,

                  set -C:当重定向的目标文件存在,则禁止执行覆盖;

                 >|或者set +C:当覆盖重定向目标文件存在,允许覆盖

                 >>:追加重定向;将命令的执行结果的内容输出(保存)到指定文件中并进行内容追加(文件原内容保留,输出结果作为新的内容添加至文件)

                     COMMAND >> NEW_POS

标准错输出误重定向:

                   2>:覆盖

                  2>>:追加

同时重定向标准输出流和错误输出流:

       将标准输出和标准错误输出定向至不同文件:

                 COMMAND > /path/to/file.out 2> /path/to/file.err

        将标准输出和标准错误输出定向至同一以文件

                  COMMAND > /path/to/file.out 2>&1

                 COMMAND &> /path/to/file.out

输入重定向:

                  <:改变标准输入的位置(某些特殊命令才会用到,如:tr命令)

tr命令:转换或删除字符

              tr  A  B:将输入的字符中包含在A范围内的内容对位替换为B范围内的内容并输出结果

      如:tr  ‘a-z’ ‘A-Z’:将输入的字符中包含在a-z范围内的内容对位替换为A-Z范围中的内容并输出结果

              tr -d  A: 将输入的字符中包在含A范围内的内容删除并输出结果

              tr  A  B  < 文件C:将文件C中出现包含在A范围内的内容对位替换为B范围内的内容并输出结果

              tr  A  B  < 文件 C  >  文件D:将文件C中出现包含在A范围内的内容对位替换为B范围内的内容并将结果覆盖输出至文件D 中

              tr  A  B  < 文件 C  >>  文件D:将文件C中出现包含在A范围内的内容对位替换为B范围内的内容并将结果追加输出至文件D 中

Here Document:<<(表示此处生成文档E,一般与EOF连用),格式如下:

 将输入的字符显示出来:

         cat  >>END

        此处输入字符

        END  

将输入的字符生成文档保存至文件A中并显示出来:

       cat  >> 文件A  <<  EOF

      此处输入字符

      EOF

     cat  文件A

表示将输入的字符生成文档保存至文件A中并显示出来

         

2、管道:(同时执行多个命令)

         COMMAND1 | COMMAND2 | ...:将前一个命令的输出结果作为后一个命令的输入信息