初识Linux shell工具

来源:互联网 发布:中级软件开发工程师 编辑:程序博客网 时间:2024/06/05 00:37
一、常见的shell工具linux中的shell工具分为图像界面shell(GUI)和命令行形式(CLI)两种1.GUI工具包含X window manger、CDE、GNOME、KDE、XFCE2.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 ~]# hashhitscommand   1/bin/grep   1/usr/bin/man   2/usr/bin/info   1/bin/ls[root@centos6 ~]# which lsalias ls='ls --color=auto'/bin/ls
四、命令格式在Linux系统中,一个命令通常由命令名、命令选项和命令参数3部分内容组成,中间以空隔或制表符等空白字符隔开命令的形式如下:command  options  arguments命令    选项参数其中命令选项通常是以减号"-"开始的单个字符,与UNIX系统不同的是Linux系统还提供以双减号"--"为起始标识的命令选项(通称GUN选项),其选项通常为可按字面意思理解的单个英文单词,或由单词和连字符组成的词组。除了个别命令选项(如"--help")之外,以双减号"--"为起始标识的选项大多是单字符命令选项的同义词,居右相同的意义,因而可以替换使用。在命令行结构中,只有命令名是必须提供的,命令选项和命令参数都是可以省略的,一个最简单的命令可以仅仅包含命令名本身,在这种情况下命令选项和参数均采用默认值。
[root@centos6 ~]# date2014年 09月 16日 星期二 07:29:12 CST
在实际应用过程中,可以根据具体需求视情况选用或省略命令选项,而且命令选项和参数可以与命令名以任意形式组合使用。例如下列命令仅由命令明和一个命令选项“-n”组成,省略的命令参数,其作用是列出系统的名字。
[root@centos6 ~]# uname -ncentos6.5_X64
下列命令由命令名和命令参数组成,而省略了命令选项,其作用是以简单的输出形式列出指定目录下的文件
[root@centos6 ~]# ls /bin   etc   lib64       mnt   root     srv  usrboot  home  lost+found  opt   sbin     sys  vardev   lib   media       proc  selinux  tmp
多个以减号"-"开始的单个字符的选项之间可以进行合并,也可以分开(以双减号"--"开始的选项不能合并在一起)
[root@centos6 opt]# ls -la /opt总用量 24drwxr-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总用量 24drwxr-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/testdrwxr-xr-x.  13 root root     0 9月  15 17:05 sysdrwxr-xr-x.   7 root root     0 9月  15 17:05 selinuxdr-xr-xr-x. 114 root root     0 9月  15 17:05 proc-rw-r--r--.   1 root root     0 9月  15 17:05 .autofsck总用量 98dr-xr-xr-x.   5 root root  1024 9月  13 19:51 bootdrwxr-xr-x.  16 root root  3640 9月  15 17:05 devdrwxrwxrwt.   4 root root  4096 9月  16 07:35 tmpdrwxr-xr-x.  14 root root  4096 9月  13 17:35 usrdrwxr-xr-x.  18 root root  4096 9月  13 19:08 vardrwxr-xr-x.   2 root root  4096 9月  23 2011 mediadrwxr-xr-x.   2 root root  4096 9月  23 2011 mntdrwxr-xr-x.   2 root root  4096 9月  23 2011 srvdrwxr-xr-x.   3 root root  4096 9月  23 2011 homedrwxr-xr-x.   3 root root  4096 9月  23 2011 optdrwxr-xr-x.  74 root root  4096 9月  15 17:05 etcdr-xr-x---.   6 root root  4096 9月  16 09:25 rootdr-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 bindr-xr-xr-x.   8 root root  4096 9月  13 17:35 libdr-xr-xr-x.   2 root root 12288 9月  13 19:50 sbindr-xr-xr-x.   9 root root 12288 9月  13 19:49 lib64drwx------.   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;who2014年 09月 16日 星期二 09:34:44 CSTroot     tty1         2014-09-15 21:54root     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 CSTroot     tty1         2014-09-15 21:54root     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 -l2014年 09月 16日 星期二 10:17:04 CST3[root@centos6 /]# (date;who)|wc -l4
如果命令较长,超出一个物理行的坎杜,可以使用反斜线“\”吧命令写到做个物理行上。也可以继续输入,有系统自动延伸至后续的行上。如前所述许多GNU使用程序都支持以双减号"--"为起始表示的选项。这些选项或者是原有单减号"-"选项的另外一种表现形式,或者是命令功能的扩充。例如sort命令的"-k"选项对应的双减号选项为"--key"。如果使用GNU命令形式,则可以把前述的sort命令改写如下:
[root@centos6 /]# ls -al|sort --key 5 -n -o /root/test
0 0
原创粉丝点击