命令入门
学习linux在接下来的日子里,命令行将会与我们厮守终生。使用命令行是必要的,当一个人控制超过50台服务器,每台服务器都要干同样的事情,再使用图形界面操作就会特别浪费时间,我们怎么让服务器都执行同样的命令,当然需要一些批量执行命令的工具,执行命令那么我们就要了解命令的运行原理和组合方式。为什么一定要是命令,命令可以组成脚本,可以一次运行一组命令,完成一个复杂动作。
心怀天下了,接下来就要脚踏实地了,linux有一则哲学——组合小命令完成大作业。命令是什么,命令就是小程序,程序是什么,接下来听我娓娓道来。
1程序与进程
程序就是一条条指令组成的集合,它们只会安静的躺在硬盘里,不增不减。它们设计出来就是为了解决特定的问题,我们的任务就是了解它们的功能,成为一个问题和命令的结构洞。
程序自己只会安静的躺在硬盘里是不符合我们需求的,我们程序接受我输入的数据并可以回复给我们需要的数据。怎么让它们跑起来,把它们打包成程序塞到cpu中,让cpu执行,执行完就被cpu扔出来,这个包被称为进程。它的运行原理比较复杂,尔等退下,我自己懂就好。但是它的特性就体现出来了:有生命周期,随时可以调用。
等等调用,什么是调用,怎么调用。
2shell类型
我们用什么调用这些命令。Linux发展了这么长时间,调用命令的接口换了一个又一个,这个接口我们统称shell,目前我们使用的centos中集成的shell就有很多。
在shell中执行如下命令,就可以查看本机内嵌的shell:
# cat/etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
切换shell,执行对应shell的路径就可以。比如切换使用sh
# /bin/sh
sh-4.2#
3命令调用
既然我们想调用命令,那么命令在哪里,有些东西我们要把它放到还珠格格目录下,不让别人看。在linux我们怎么处理的,比如不同的用户具有不同的权限,可以使用不同的命令。
Linux发现命令是通过$PATH中定义变量来控制的,并且用:分离多个路径:
查看当前用户调用命令查询路径的顺序:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Linux调用一个命令的流程:首先,shell查询shell内嵌的命令;查询不到就查询$PATH中第一个冒号前面的路径/usr/local/sbin,查询其中是否有这个命令,有这个命令就执行,没有接着查询;以此类推。
等等什么是内部命令。
4命令
怎么查看命令是shell内嵌的命令或者是外部的命令,这里测试pwd命令:
#type pwd
pwd is ashell builtin
知道我们执行的命令的类型那我们执行的命令在哪里,这里我们还是用pwd演示。
#witch pwd
/usr/bin/pwd
使用whereis查询命令和帮助信息的位置。
#whereis pwd
pwd:/usr/bin/pwd /usr/include/pwd.h /usr/share/man/man1/pwd.1.gz/usr/share/man/man1p/pwd.1p.gz
一个命令的格式是什么样的
命令 选项 参数
以ls 为例
Ls -l /etc
第一个空格前是命令;-l是ls的一个选项,以详细格式显示;/etc需要操作的文件的路径。
5命令帮助
命令如此之多,我们不能把所有命令的全部的使用方法都记住吧!嗯,对得全都要记住。别扯了,汉字词语的我们也只掌握了10%但是我们已经足够使用了,并且还有小字典和大字典。当然linux的命令也不用全部都记住,Linux中也有字典,既然想偷懒熟练使用这些字典那就是必须的了。
先说小字典,help。
先说内部命令使用一下命令:
Help cd
外部命令,基本上每个命令都会带一个小字典,这里我们用ls命令做示例:
#ls --help
Usage: ls[OPTION]... [FILE]...
Listinformation about the FILEs (the current directory by default).
Sortentries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatoryarguments to long options are mandatory for short options too.
-a, --all do not ignore entriesstarting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author ofeach file
-b, --escape print C-style escapes fornongraphic characters
…
等等说好的小字典呢!这的确是小字典,
还有一个大字典,man。man1到man8分门别类的存放了命令的使用方法,还有配置文件的使用方法。
#man ls
LS(1) User Commands LS(1)
NAME
ls- list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (thecurrent directory by default).
Sort entries alphabetically if none of-cftuvSUX nor --sort is speci‐fied.
Mandatory arguments to long options are mandatory forshort optionstoo.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape
Manual page ls(1) line 1 (press h for help orq to quit)
Man的格式
Man
NAME:名称及功能性说明
SYNOPSIS:语法格式,用法说明,包括可用的选项
[]:可选内容;
<>:必须提供的内容;
a|b|c:多选一;
...:同类内容可出现多个;
{ } : 分组
DESCRIPTION:命令功能的详尽说明,可能包含每个选项的意义
OPTIONS:选项,说明每一个选项的意义
FILES:此命令相关的配置文件
EXAMPLES:使用示例
AUTHOR:作者
BUGS: 报告程序bug的方式
SEEALSO: 参考
怎么使用字典。
u:向上翻半屏
d:向下翻半屏
空格:向下翻一屏
b:向下翻一屏
向上向下箭头
/keyword自上而下的查找
?keyword 自下而上的查找
查找时
按n同方向查找
按N反方向查找
g首部
G尾部
q退出
总结
总结一下,通过shell调用命令,命令有自己独特的格式和用法,格式和用法可以通过help和man查看。如果还不行,去google或者百度,实在是不行可以先看官方文档,然后看发行版文档。