输入命令并回车相当于提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个或多个进程。在shell中可执行的命令有两类:
内部命令:由shell自带的,而且通过某命令形式提供;(如cd)
外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件(如ls),可以使用which或whereis
区别内部和外部命令:type+COMMAND
二、命令格式
COMMAN [OPTIONS][ARGUMENTS]
OPTIONS(选项):用于启用或关闭命令的某个或某些功能
短选项:-字母,如-l、-h,多个短选项可合并使用,如-lh
长选项:--word,如--long、--human-readable
ARGUMENTS(参数):命令作用对象,向命令提供数据
1、内部命令:
# help COMMAND
如help history、help cd、help cat等等
2、外部命令:
1)#COMMAND --help、#COMMAND -h
2)使用手册(manual):man COMMAND
位于:/usr/share/man,有man1-man8:
man1:用户命令
man2:系统调用
man3:C库调用
man4:设备文件及特殊文件
man5:配置文件格式
man6:游戏相关
man7:杂项
man8:管理类的命令
man命令的配置文件:/etc/man.config,通过文件修改此配置文件中的MANPATH就可以指明新的手册文件搜索位置
3)信息页:#info COMMAND
4)程序自身的帮助文档:README、INSTALL、ChangeLog
/usr/share/doc/COMMAND-VERSION
5)程序官方文档:官方站点:Documentation
6)发行版的官方文档:redhat的发行版官方文档
7)Google
读取的是~/.bash_history中记录下来的历史命令。注意:登陆进shell后新执行的命令只会记录在缓存中,这些命令会在用户退出是追加至命令历史文件中。
常用命令:
history -a:追加本次会话的命令到命令历史文件中;
history -d:删除指定编号的历史命令;
history -c:清空历史命令。
实例:
[root@localhost log]#history
1 cd /
2 cd /var/log
3 history
[root@localhost log]#history -d 1
[root@localhost log]# history
1 cd /var/log
2 history
3 history -d 1
4 history
[root@localhost /]# history -c
[root@localhost /]# history
1 history
在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便。
命令格式:date [参数]... [+格式]
常用参数:
%D:日期(含年月日)
%T:直接显示时间 (24 小时制)
实例:
[root@localhost log]#date
Tue Jan 12 11:58:43 CST 2016
[root@localhost log]#date +%D
01/12/16
[root@localhost log]#date +%T
11:58:46
命令格式:date [MMDDhhmm[[CC]YY][.ss]]
实例:
[root@localhost log]# date 011212002016.21
Tue Jan 12 12:00:21 CST 2016
Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。
常用命令:
cd 【目录名】:切换到指定目录
cd或cd~:切换到用户家目录(主目录)
cd /:切换到系统根目录
cd -:切换到上一次的目录
cd ..:退回上一级目录
实例:
[root@localhost /]# cd /var/log
[root@localhost log]# pwd
/var/log
[root@localhost log]# cd
[root@localhost ~]#
[root@localhost log]# cd ~
[root@localhost ~]#
[root@localhost log]# cd -
/root
[root@localhost ~]# cd -
/var/log
[root@localhost log]#cd ..
[root@localhost var]#cd ..
[root@localhost /]#
Linux中用pwd命令来查看”当前工作目录“的完整路径。简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。
命令格式:pwd [选项]
问:为什么pwd命令可以显示当前目录?
答:因为系统中有一个PWD的环境变量,保存了当前的目录路径,pwd命令实际就是读取了环境变量PWD内容并显示出来。
问:为什么cd -可以返回上一次的目录
答:因为系统中有一个OLDPWD环境变量,保存了上一次所在目录路径,cd -命令实际切换到OLDPWD所保存的目录路径,所以cd - 命令等同于cd $OLDPWD
实例:
[root@localhost /]# cd /var/log
[root@localhost log]# pwd
/var/log
[root@localhost log]#echo $PWD
/var/log
[root@localhost log]# cd -
/
[root@localhost /]# echo $OLDPWD
/var/log
[root@localhost /]#cd $OLDPWD
[root@localhost log]# pwd
/var/log
ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。
命令格式:ls [选项] [目录名]
选项:
-a:–all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A:同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)
-l :除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
-h:–human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G),一般和-l一起使用
-d: –directory 将目录象文件一样显示,而不是显示其下的文件,一般和-lh一起使用
-r: –reverse 依相反次序排列
-R:–recursive 同时列出所有子目录层
实例:
[root@localhost /]# ls /etc/httpd
conf conf.d logs modules run
[root@localhost /]# ls -a /etc/httpd
. .. conf conf.d logs modules run
[root@localhost /]# ls -A /etc/httpd
conf conf.d logs modules run
[root@localhost /]# ls -l /etc/httpd
total 8
drwxr-xr-x. 2 root root 4096 Dec 31 06:22 conf
drwxr-xr-x. 2 root root 4096 Dec 31 06:22 conf.d
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root 29 Dec 31 06:22 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 run -> ../../var/run/httpd
[root@localhost /]# ls -lh /etc/httpd
total 8.0K
drwxr-xr-x. 2 root root 4.0K Dec 31 06:22 conf
drwxr-xr-x. 2 root root 4.0K Dec 31 06:22 conf.d
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root 29 Dec 31 06:22 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 run -> ../../var/run/httpd
[root@localhost /]# ls -lhr /etc/httpd
total 8.0K
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 run -> ../../var/run/httpd
lrwxrwxrwx. 1 root root 29 Dec 31 06:22 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 logs -> ../../var/log/httpd
drwxr-xr-x. 2 root root 4.0K Dec 31 06:22 conf.d
drwxr-xr-x. 2 root root 4.0K Dec 31 06:22 conf
[root@localhost /]# ls -lhR /etc/httpd
/etc/httpd:
total 8.0K
drwxr-xr-x. 2 root root 4.0K Dec 31 06:22 conf
drwxr-xr-x. 2 root root 4.0K Dec 31 06:22 conf.d
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root 29 Dec 31 06:22 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 19 Dec 31 06:22 run -> ../../var/run/httpd
/etc/httpd/conf:
total 52K
-rw-r--r--. 1 root root 34K Aug 2 2013 httpd.conf
-rw-r--r--. 1 root root 13K Aug 14 2013 magic
/etc/httpd/conf.d:
total 12K
-rw-r--r--. 1 root root 118 May 20 2009 mod_dnssd.conf
-rw-r--r--. 1 root root 392 Aug 14 2013 README
-rw-r--r--. 1 root root 299 Aug 2 2013 welcome.conf
cat这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。此处仅仅介绍显示文件的功能。
命令格式:cat [选项] [文件]...
选项:
-A,:--show-all,等价于 -vET
-E,:--show-ends,在每行结束处显示 $
-n:--number,对输出的所有行编号,由1开始对所有输出的行数编号
实例:
[root@localhost /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:48:41:AC
TYPE=Ethernet
UUID=d49ec249-6c88-4227-adff-90d31bb9edac
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.0.0.10
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
DNS1=10.0.0.1
[root@localhost /]# cat -A /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0$
HWADDR=00:0C:29:48:41:AC$
TYPE=Ethernet$
UUID=d49ec249-6c88-4227-adff-90d31bb9edac$
ONBOOT=yes$
NM_CONTROLLED=yes$
BOOTPROTO=static$
IPADDR=10.0.0.10$
NETMASK=255.255.255.0$
GATEWAY=10.0.0.1$
DNS1=10.0.0.1$
$
[root@localhost /]# cat -n /etc/sysconfig/network-scripts/ifcfg-eth0
1 DEVICE=eth0
2 HWADDR=00:0C:29:48:41:AC
3 TYPE=Ethernet
4 UUID=d49ec249-6c88-4227-adff-90d31bb9edac
5 ONBOOT=yes
6 NM_CONTROLLED=yes
7 BOOTPROTO=static
8 IPADDR=10.0.0.10
9 NETMASK=255.255.255.0
10 GATEWAY=10.0.0.1
11 DNS1=10.0.0.1
12
该命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。
命令格式:file 【文件路径】
实例:
[root@localhost /]# file /etc
/etc: directory
[root@localhost /]# file /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0: ASCII text
实例:
[root@localhost /]# echo "how are you?"
how are you?
[root@localhost /]# echo "$SHELL"
/bin/bash
[root@localhost /]# echo '$SHELL'
$SHELL
[root@localhost /]# echo -n "how are you?"
how are you?[root@localhost /]#
[root@localhost /]# echo -e "how \nare you?"
how
are you?
[root@localhost /]# echo -e "how \tare you?"
how are you?
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
命令格式:which 可执行文件名称
实例:
[root@localhost /]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@localhost /]# which pwd
/bin/pwd
[root@localhost /]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/which
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。比which更加详细,这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。
命令格式:whereis [选项] 文件名
选项:
-b 定位可执行文件。
-m 定位帮助文件。
实例:
[root@localhost /]# whereis httpd
httpd: /usr/sbin/httpd.event /usr/sbin/httpd.worker /usr/sbin/httpd /etc/httpd /usr/lib64/httpd /usr/share/man/man8/httpd.8.gz
[root@localhost /]# whereis -b httpd
httpd: /usr/sbin/httpd.event /usr/sbin/httpd.worker /usr/sbin/httpd /etc/httpd /usr/lib64/httpd
[root@localhost /]# whereis -m httpd
httpd: /usr/share/man/man8/httpd.8.gz
命令格式:whatis keyword ...
实例:
[root@localhost /]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
[root@localhost /]# whatis pwd
pwd (1p) - return working directory name
pwd (1) - print name of current/working directory
pwd [builtins] (1) - bash built-in commands, see bash(1)
pwd.h [pwd] (0p) - password structure