命令之美工具癖Web前端之路

Shell终端命令行的重点知识

2017-08-27  本文已影响269人  科研者

对于程序员来说,命令行是常用的工具,在Mac和Linux系统中,命令行使用的是Shell语言,对于常用的工具,我都喜欢选把它研究透彻,本文就是我在学习Shell语言时收集和总结的文档,为了方便大家,现分享如下:

1. 命令格式


command [options] [arguments]

其中,各符号的表示的含意如下:

command:命令
options:选项;有2种表示法:

  1. --单词:由前面2个“-”和2个(包含2个)以上的字母组成;
  2. -单字:前面1个“-”和1个字母组成;

argument:参数

在查看命令帮助时,会出现[],<>,|等符号,它们的含义如下:

[]:表示是可选的;
<>:表示是可变化的;
x|y|z:表示只能选择一个;
-abc:表示三个参数(或任何二个)的混合使用;
/ :或者;

2. 帮助命令


help <Command>

适用于内部命令

<Command> –help/-h

适用于外部命令

man <Command>

查看命令描述或手册页(Manual);
备注:
manual 手册是分章节的;man # Command (#表示章节号)
各个章节的所讲的内容如下:

  1. 所有用户可以使用的命令
  2. 系统内核调用,不是每个命令都有系统调用(如:man 2 read)
  3. 库调用
  4. 特殊文件,如:/dev/tty1
  5. 文件格式(命令配置文件的语法,如:man 5 passwd)
  6. 游戏相关
  7. 杂项
  8. 管理员命令,如:fdisk

man命令查询操作参考《vi,vim用法》中的命令模式
man命令格式符意义:

[]:可选内容;
<>:必须给出内容;
a|b|c:多选一;
…:可以有多个;

info <Command>

有超链接的文档,info是信息页,提供作者、版本,什么时候发布等更详细信息,man手册是告诉你怎么用;

README

绝大多数程序都有相应的帮助文档,保存在/usr/share/doc文件夹中;

3. Shell的启动配置文件


当我们登录系统后,启动 bash 程序,并且会读取一系列称为启动文件的配置脚本,这些文 件定义了默认的可供所有用户共享的 shell 环境。然后是读取更多位于我们自己主目录中的启 动文件,这些启动文件定义了用户个人的 shell 环境。精确的启动顺序依赖于要运行的 shell 会 话类型。有两种 shell 会话类型:一个是登录 shell 会话,另一个是非登录 shell 会话。

登录 shell 会话会提示用户输入用户名和密码;例如,我们启动一个虚拟控制台会话。当我 们在 GUI 模式下运行终端会话时,非登录 shell 会话会出现。
登录 shell 会读取一个或多个启动文件,正如表 12 - 2 所示:


登录shell会话的启动文件.png

非登录 shell 会话会读取以下启动文件:


非登录shell会话的启动文件.png

除了读取以上启动文件之外,非登录 shell 会话也会继承它们父进程的环境设置,通常是一 个登录 shell。

浏览一下你的系统,看一看系统中有哪些启动文件。记住-因为上面列出的大多数文件名 都以圆点开头(意味着它们是隐藏文件),你需要使用带 “-a” 选项的 ls 命令。

在普通用户看来,文件 ∼/.bashrc 可能是最重要的启动文件,因为它几乎总是被读取。非 登录 shell 默认会读取它,并且大多数登录 shell 的启动文件会以能读取 ∼/.bashrc 文件的方式 来书写。

4. Mac系统的Shell的配置文件


打开mac终端,输入:

echo $SHELL

如果输出的是csh或者是tcsh,那么你用的就是C Shell。
如果输出的是bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种。
Mac OS X 10.2之前默认的是C Shell。
Mac OS X 10.3之后默认的是Bourne Shell。

在这里只介绍Bourne Shell(sh)关于配置文件的等级。

在Bourne Shell下有三种配置文件,如下:

/ ect/profile
/ect/bashrc
~/.bash_profile

注意:
有些文章说:Linux里边是.bashrc 而MAC 是.bash_profile,所以Mac下只需要设置profile和.bash_profile。
但是我发现mac下也有/ect/bashrc配置文件

它们的作用如下:

  1. /ect/profile(一般不建议修改这个文件)

    全局(公有)配置,不管是哪个用户,登陆是都会读取该文件。

  2. ~/.bash_profile

    一般在这个文件中添加用户级环境变量;
    若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次默认情况下,他设置一些环境变量。
    在.bash_profile中设置的配置信息只有在打开终端的时候执行有效,终端关闭后,之前的设置的命令则无效;

  3. /ect/bashrc(mac没有此配置文件)

    全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
    可以加入mysqlstart、mysql和mysqladmin命令的别名,保证每一个用户都可以使用这3个命令。

5. 应该使用哪个配置文件


按照通常的规则,添加目录到你的 变量或者是定义额外的环境变量,要把这些 更改放置到 文件中(或者其替代文件中,根据不同的发行版。例如, 使 用 文件)。对于其它的更改,要放到 文件中。除非你是系统管理员,需要为系统 中的所有用户修改默认设置,那么则限定你只能对自己主目录下的文件进行修改。当然,有可 能会更改 目录中的文件,比如说 文件,而且在许多情况下,修改这些文件也是明智 的,但是现在,我们要安全起见。

6. 命令的查找目录


当在终端直接输入命令时,如:guobinyongMac:~ guobinyong$ ls,系统会在一些指定的目录中查找相应命令的可执行文件,然后执行查找到的可执行文件;如果命令的可执行文件不在默认的目录中,则需要在输入命令时写出命令的路径,如:
假设我需要执行命令gby,而gby文件在目录./PATH/下,则需要这样输入命令:

guobinyongMac:~ guobinyong$ ./PATH/gby

这样是不太方便的,如果不想输入命令的路径,则可以把命令的所在目录配置为终端的命令查找目录;
如何配置呢?通过PATH变量!
PATH变量中保存的是命令查找路径的列表,目录之间用冒号 : 分隔;配置方法如下:
在终端的配置文件~/.bash_profile(如果不存在,则创建该文件)中添加如下代码:

export PATH=$PATH:新的路径     //把您要添加的路径写在$PATH:后面

7. 重点命令讲解

export命令

export命令Shell内建命令 export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

语法:

export(选项)(参数)

选项:

-f:代表[变量名称]中为函数名称;
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;
-p:列出所有的shell赋予程序的环境变量。

参数:

变量:指定要输出或者删除的环境变量。

上一篇 下一篇

猜你喜欢

热点阅读