一、 常见的shell工具 linux中的shell工具分为图像界面shell(GUI)和命令行形式(CLI)两种 1. GUI工具包含X window manger、CDE、GNOME、KDE、XFCE 2. CLI工具包含bsh、csh、tcsh、ksh、bash、zsh。其中bash是现今大多数流行Linux发行版默认的shell工具 二、 bash命令提示符 1. 当登陆bash后会看到命令行左侧有一些提示信息如:[root@centos6 ~]#;例子中的命令提示符中的内容分别表示 root:当前登陆的用户 centos6:计算机名称 ~:当前所在目录(~在linux中代表用户家目录) #:代表当前登陆用户的级别(#代表root用户,$代表除root之外的其它用户) 2. 更改命令提示符 命令提示符可以通过变量$PS1来改变,可以现在命令中输入echo $PS1来查看当前设置,如下: [root@centos6 ~]# echo $PS1 [\u@\h \W]\$ 重新设置命令提示符格式: [root@centos6 ~]# PS1="[\u@\h \W]\$" [\u@\h \W]\$中\u代表当前登陆的用户;\h代表当前主机名称;\W代表当前所在目录;\$代表当前登陆用户级别,其它字符没有特殊意义,只表示字符本身的含义。 命令提示符($PS1环境变量)中的常用符号含义: \d:代表日期,格式为weekday month date \H:王筝的主机名称 \h:仅获取主机的第一个名字 \t:显示时间为24小时格式,如HH:MM:SS \T:显示时间为12小时格式 \A:显示时间为24小时格式:HH:MM \u:当前用的账户名称 \v:BASH的版本信息 \w:完整的工作目录名称,家目录会以~代替 \W:利用basename取得工作目录名称,所以只会列出最后一个目录 \#:下达的第几个命令 \$:提示符,如果是root时提示符为#,普通用户为$ 三、 bash命令的两种类型 builtin:在shell程序中实现的命令即为内建命令; 外部命令:在文件系统上的某位置有一个与命令名称对应的可执行文件; 可以使用命令type判断命令的类型; shell事先通过PATH设定好了多个路劲,当用户输入命令时,shell会自动到这些路劲(由左向右)下查看与命令名称相同的可执行文件,查找到并执行过的命令会保存到一个hash查找表中,可以使用hash命令查看此表。查看一个可执行程序的具体路径可以使用which命令
[root@centos6 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@centos6 ~]# hash hits command 1 /bin/grep 1 /usr/bin/man 2 /usr/bin/info 1 /bin/ls [root@centos6 ~]# which ls alias ls='ls --color=auto' /bin/ls
四、 命令格式 在Linux系统中,一个命令通常由命令名、命令选项和命令参数3部分内容组成,中间以空隔或制表符等空白字符隔开命令的形式如下: command options arguments 命令 选项 参数 其中命令选项通常是以减号"-"开始的单个字符,与UNIX系统不同的是Linux系统还提供以双减号"--"为起始标识的命令选项(通称GUN选项),其选项通常为可按字面意思理解的单个英文单词,或由单词和连字符组成的词组。除了个别命令选项(如"--help")之外,以双减号"--"为起始标识的选项大多是单字符命令选项的同义词,居右相同的意义,因而可以替换使用。 在命令行结构中,只有命令名是必须提供的,命令选项和命令参数都是可以省略的,一个最简单的命令可以仅仅包含命令名本身,在这种情况下命令选项和参数均采用默认值。
[root@centos6 ~]# date 2014年 09月 16日 星期二 07:29:12 CST
在实际应用过程中,可以根据具体需求视情况选用或省略命令选项,而且命令选项和参数可以与命令名以任意形式组合使用。例如下列命令仅由命令明和一个命令选项“-n”组成,省略的命令参数,其作用是列出系统的名字。
[root@centos6 ~]# uname -n centos6.5_X64
下列命令由命令名和命令参数组成,而省略了命令选项,其作用是以简单的输出形式列出指定目录下的文件
[root@centos6 ~]# ls / bin etc lib64 mnt root srv usr boot home lost+found opt sbin sys var dev lib media proc selinux tmp
多个以减号"-"开始的单个字符的选项之间可以进行合并,也可以分开(以双减号"--"开始的选项不能合并在一起)
[root@centos6 opt]# ls -la /opt 总用量 24 drwxr-xr-x. 3 root root 4096 9月 23 2011 . dr-xr-xr-x. 22 root root 4096 9月 15 17:05 .. drwx------. 2 root root 16384 9月 13 17:34 lost+found [root@centos6 opt]# ls -l -a /opt 总用量 24 drwxr-xr-x. 3 root root 4096 9月 23 2011 . dr-xr-xr-x. 22 root root 4096 9月 15 17:05 .. drwx------. 2 root root 16384 9月 13 17:34 lost+found
命令选项主要限定命令具体的功能,同时也决定了命令的最终运行结果,在Linux系统中每个命令通常都提供大量的选项,因而居右丰富的功能。选项可以被单独给出,也可以被组合使用。如果选项本身也带有参数,则这样的选项及其参数必须被单独列出。在下列排序命令中因为"-k"和"-o"等命令选项本身也要求提供参数,故需要分别给出
[root@centos6 /]# ls -al|sort -k 5 -n -o /root/test [root@centos6 /]# cat /root/test drwxr-xr-x. 13 root root 0 9月 15 17:05 sys drwxr-xr-x. 7 root root 0 9月 15 17:05 selinux dr-xr-xr-x. 114 root root 0 9月 15 17:05 proc -rw-r--r--. 1 root root 0 9月 15 17:05 .autofsck 总用量 98 dr-xr-xr-x. 5 root root 1024 9月 13 19:51 boot drwxr-xr-x. 16 root root 3640 9月 15 17:05 dev drwxrwxrwt. 4 root root 4096 9月 16 07:35 tmp drwxr-xr-x. 14 root root 4096 9月 13 17:35 usr drwxr-xr-x. 18 root root 4096 9月 13 19:08 var drwxr-xr-x. 2 root root 4096 9月 23 2011 media drwxr-xr-x. 2 root root 4096 9月 23 2011 mnt drwxr-xr-x. 2 root root 4096 9月 23 2011 srv drwxr-xr-x. 3 root root 4096 9月 23 2011 home drwxr-xr-x. 3 root root 4096 9月 23 2011 opt drwxr-xr-x. 74 root root 4096 9月 15 17:05 etc dr-xr-x---. 6 root root 4096 9月 16 09:25 root dr-xr-xr-x. 22 root root 4096 9月 16 09:25 . dr-xr-xr-x. 22 root root 4096 9月 16 09:25 .. dr-xr-xr-x. 2 root root 4096 9月 13 19:49 bin dr-xr-xr-x. 8 root root 4096 9月 13 17:35 lib dr-xr-xr-x. 2 root root 12288 9月 13 19:50 sbin dr-xr-xr-x. 9 root root 12288 9月 13 19:49 lib64 drwx------. 2 root root 16384 9月 13 17:34 lost+found
其中"-k 5"中的5就是"-k"选项的参数,表示以第5个字段为关键字进行排序。"-n"选项表示按数值的大小排序。"-o /root/test"中de /root/test也是选项-o的参数,表示存储最终排序的结果输出文件。 在Linux系统的命令提示符下,一次通常仅输入一个命令。如果愿意也可以一次输入多个命令,在命令之间用分号隔开。另外也可以使用圆括号把若干命令合并在一起,使之构成一个组合命令。
[root@centos6 /]# date;who 2014年 09月 16日 星期二 09:34:44 CST root tty1 2014-09-15 21:54 root pts/0 2014-09-16 08:50 (192.168.0.56) root pts/1 2014-09-16 05:24 (192.168.0.56) [root@centos6 /]# (date;who) 2014年 09月 16日 星期二 09:34:50 CST root tty1 2014-09-15 21:54 root pts/0 2014-09-16 08:50 (192.168.0.56) root pts/1 2014-09-16 05:24 (192.168.0.56)
除了括号之外两种命令的形式完全一样,有时其效果也完全一样,但两者的意义却大不相同。第一种命令形式只是在一个逻辑行上并列输入了多个命令,其效果同一次输入一个命令基本上没有区别,而且都是在当前shell下运行。而第二种命令形式这是把多个命令看做一个组合命令,在一个子shell中运行,所有命令的输出数据将会合并为一个输出流,其差别在管道操作中尤为明显(可以通过wc计算读入行数比较两种形式的差别)。
[root@centos6 /]# date;who |wc -l 2014年 09月 16日 星期二 10:17:04 CST 3 [root@centos6 /]# (date;who)|wc -l 4
如果命令较长,超出一个物理行的坎杜,可以使用反斜线“\”吧命令写到做个物理行上。也可以继续输入,有系统自动延伸至后续的行上。 如前所述许多GNU使用程序都支持以双减号"--"为起始表示的选项。这些选项或者是原有单减号"-"选项的另外一种表现形式,或者是命令功能的扩充。例如sort命令的"-k"选项对应的双减号选项为"--key"。如果使用GNU命令形式,则可以把前述的sort命令改写如下:
[root@centos6 /]# ls -al|sort --key 5 -n -o /root/test