前面一口气介绍了18个命令,可能大家都已经有些晕了。学习Linux就是这样,它不像Windows那样的傻瓜式操作,要想学好Linux是必须要下苦功的。所以,Linux本身就不是一个面向普通用户的
前面一口气介绍了18个命令,可能大家都已经有些晕了。学习Linux就是这样,它不像Windows那样的傻瓜式操作,要想学好Linux是必须要下苦功的。所以,Linux本身就不是一个面向普通用户的桌面操作系统,而是面向专业运维人员的服务器操作系统。不过大家也没必要把Linux中的所有命令都一口气全学完,其实只要掌握了前面这18个命令,就可以说已经通过了Linux入门的第一关,就已经可以来做一些基本操作了。关键还在于要反复练习,把基础打好。
今天主要介绍几个在Bash中经常用到的基本概念和功能。
一、内部命令和外部命令 内部命令,指的是集成在Shell里的命令,属于shell的一部分,系统中没有与命令单独对应的程序文件。只要shell被执行,内部命令就自动载入内存,用户可以直接使用。如cd命令等。 外部命令,考虑到运行效率等原因,不可能把所有的命令都集成在shell里,更多的Linux命令是独立于shell之外的,这些就称为外部命令。每个外部命令都对应了系统中的一个文件,而Linux系统必须要知道外部命令对应的程序文件所在的位置,才能由shell加载并执行这些命令。如cp、ls等都属于外部命令。 外部命令的程序文件大都存放在/bin、/sbin、/usr/bin……这些目录里,Linux系统会默认将这些路径添加到一个名为PATH的变量里,执行“echo $PATH”命令可以显示出PATH变量里的保存的目录路径(路径之间用“:”间隔)。 [root@localhost ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 每当要执行一个外部命令时,Linux系统就会先从PATH变量所保存的这些路径里去寻找命令所对应的的程序文件,只有找到了程序文件才能正确地去执行外部命令。这也就意味着,如果把一个外部命令所对应的程序文件删了,或者是存放外部命令程序文件的目录没有添加到PATH变量里,这些都会导致外部命令无法正常执行,这点我们在以后还会再提到。当然对于我们目前而言,并不需要知道这些外部命令的具体位置,甚至不用刻意地去分辨一个命令到底是内部还是外部命令,因为它们的使用方法都是基本类似的。 明白了内部命令和外部命令的区别之后,下面介绍几个相关的命令。 1、which命令——查找外部命令所对应的程序文件 which命令用于查找Linux外部命令所对应的程序文件,其搜索范围由环境变量PATH决定。 如,查找ls命令所对应的程序文件。 [root@localhost ~]# which ls alias ls='ls --color=auto' /bin/ls 执行命令后,首先显示出系统中所设置的ls命令的别名,然后是ls命令的程序文件“/bin/ls”。 如果要查找的是一个内部命令,那将找不到任何对应的程序文件。 [root@localhost ~]# which cd /usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) 2、help命令——查看内部命令的帮助信息 help命令只能查看内部命令的帮助信息。 如,查看pwd命令的帮助信息。 当用help查看外部命令的帮助信息时则会报错。
[root@localhost ~]# help ls
-bash: help: no help topics match `ls'. Try `help help' or `man -k ls' or `info ls'.
3、man命令——查看命令的帮助手册
help命令查看的帮助信息较为简略,如果要查看更为详尽的帮助信息,可以使用man命令查看指定命令的帮助手册。 如,查看ls命令的帮助手册。 [root@localhost ~]# man ls 执行man命令后将进入阅读环境,按q键可以退出。 无论内部命令还是外部命令,都可以使用man命令查看其帮助手册。 二、重定向 Linux系统中标准的输入设备为键盘,标准输出设备为屏幕,但在某些情况下,我们希望能从键盘以外的其他输入设备读取数据,或者将数据送到屏幕外的其他输出设备,这种情况称为重定向。Shell中输入输出重定向主要依靠重定向符号来实现,重定向的目标通常是一个文件。 1. 输入重定向 输入重定向就是将命令中接收输入的途径由默认的键盘重定向为指定的文件,需要使用“<”重定向操作符。如命令“wc < f1”就表示将f1文件的信息作为wc命令的输入。 输入重定向并不常使用,所以这里就不过多介绍了。 2. 输出重定向 输出重定向是将命令的输出结果重定向到一个文件中,而不是显示在屏幕上。输出重定向使用“>”或“>>”操作符,分别用于覆盖、追加文件。 “>”重定向符后面指定的文件如果不存在,在命令执行中将建立该文件,并保存命令结果到文件中。“>”重定向符后面指定的文件如果存在,命令执行时将清空文件的内容并保存命令结果到文件中。 如,查看/etc/passwd文件的内容,并将输出结果保存到pass.txt文件中。 [root@localhost ~]# cat /etc/passwd > pass.txt 执行该命令后,会在当前目录下生成一个名为pass.txt的文件,文件中的内容就是“cat /etc/passwd”命令执行的结果。 “>>”重定向操作符可以将命令执行的结果重定向并追加到指定文件的末尾保存,而不覆盖文件中原有的内容。 如,查看/etc/shadow文件的后3行内容,并将输出结果追加保存到pass.txt文件中。 [root@localhost ~]# tail -3 /etc/shadow >> pass.txt 三、管道符“|” 通过管道符“|”,可以把多个简单的命令连接起来实现更加复杂的功能。 管道符“|”用于连接左右两个命令,将“|”左边命令的执行结果作为“|”右边命令的输入,这样“|”就像一根管道一样连接着左右两条命令,并在管道中实现数据从左至右的传输。 如ls命令与more命令使用管道符组合使用便可以实现目录列表分页显示的功能。 如,分页显示/etc目录下所有文件和子目录的详细信息。 [root@localhost ~]# ls -lh /etc | more ls命令与grep命令使用管道符组合使用可以只显示目录列表中包含特定关键字的列表项。 如,显示/etc目录下包含有“net”关键字的所有文件和子目录的详细信息。 [root@localhost ~]# ls -lh /etc | grep net -rwxr-xr-x. 1 root root 1.3K 4月 10 2012 auto.net -rw-r--r--. 1 root root 74 5月 31 2012 issue.net -rw-r--r--. 1 root root 767 11月 30 2009 netconfig -rw-r--r--. 1 root root 58 5月 23 2012 networks drwxr-xr-x. 2 root root 4.0K 1月 8 19:14 xinetd.d 如,统计一下/etc目录下所有以“.conf”结尾的文件的个数。 [root@localhost ~]# ls -l /etc/*.conf | wc –l 44 如,查看/etc/httpd/conf/httpd.conf文件中除了以“#”开头的行和空行以外的内容。 [root@localhost ~]# grep -v “^#” /etc/httpd/conf/httpd.conf | gerp –v “^$”