centos8切换其他用户执行命令 centos7终端切换用户_命令行


Linux终端

介绍Linux终端、命令行以及执行系统命令。对于新手,需要熟悉Linux终端,因为终端是与Linux系统交互的标准方式。一旦你掌握了这些命令基础,通过命令去与系统交互将会变得非常简单。

开始之前需要准备一台Linux服务器,课程使用的Windows10自带WSL下的Ubuntu 20.4。你也可以自行采购运营商的服务器,如果你是学生,可以以学生优惠价申请腾讯云、华为云和阿里云的基础配置服务器,非常划算可以自行前往了解。

终端仿真器

终端仿真器是系统应用程序,可以让你在可视化图形界面环境中使用。大多数都是基于终端仿真器开始学习Linux的,对于大多数Linux系统工作者而言,终端工具也是必须掌握的交互工具。

推荐几款终端工具:

> Mac: iTerms2

> Win: PuTTY、Windows Power Shell(win10自带终端工具)

> Linux: Terminal、KDE Konsole、XTerm

初学者可以根据自己的学习环境选择,这些终端工具都有自己的功能特色,需要自行培养使用习惯。

Shell(脚本语言)

在Linux中,`Shell`是解释用户命令和脚本文件的命令行接口规范,告诉操作系统用户的真实行为,操作系统具体需要完成的任务。目前`B Shell`和`C Shell`都有着广泛应用,关于解释命令的方式,每种`Sehll`都有自己的功能集合和复杂性,但是都具有输入输出重定向、变量以及条件测试等功能。

大多数Linux系统默认采用的Bourne-Again shell,通常指的是`bash`,包括Ubuntu、CentOS、RedHat。

命令提示符

当你登录到Linux服务器,终端上将会输出一些欢迎信息,包括系统版本、当前时间日期等信息。然后就会出现一行命令行提示符,等待用户的命令的输入,此时你可以输入合法的命令给系统。

Ubuntu的命令行提示符:

> lance@ubuntuserver0:~$

拆解如下:

- lance: 当前用户

- ubuntuserver0: 服务器主机名

- ~: 当前目录,在`bash`中`~`指定为当前用户的主目录,在此案例中即`/home/lance`

执行命令

在命令行提示符处通过指定可执行文件的名称发出命令,命令可以是二进制程序或者脚本。正常情况下Linux系统安装了很多的系统命令和使用的系统附带程序,比如浏览文件系统、安装软件包以及配置系统等。

正在运行的命令的实例成为进程,当你输入命令之后必须等待系统的执行返回才能再次回到命令行提示符,才可以再次向系统发起其他命令。

需要注意Linux系统是区分大小写的,包括你在命令行中输入文件或者目录名、命令、参数和选项,如果你的输入指令不能正常执行,需要注意检查输入是否有误。

执行命令不带参数和选项

执行命令,不带任何参数和选项,简单输入指令是能够有返回的。这取决于你输入的命令是否有默认行为,否则会有正确的命令使用规范提示输出。比如你执行`cd`命令,会切换目录到用户主目录;`ls`命令则会默认打印当前所在目录的文件和子目录。输入`ip`命令则会输出命令使用规范说明。

执行命令指定参数

一些命令接受参数和选项,输入的参数会影响命令的行为。比如你执行`cd /usr/local`,系统将会切换至`/usr/local`目录。

> cd /usr/local

执行命令指定选项

大多数命令接受选项输入,在应用程序中通常被称为标记或者切换开关,这些选项会引导命令的执行行为。通常选项需要附带在命令之后,由一些命令内置字符来指定其输入,比如使用`-`或者`--`来引导选项值的输入,然后有命令执行文件进行解析。

使用`ls --help`来查看`ls`命令选项说明:

- `-l`: 指定输出更长的信息清单,包括文件或者文件夹的所属用户以及权限,文件大小和修改时间

- `-a`: 打印指定目录下所有的文件和文件夹,包括系统隐藏文件和文件夹,比如以`.`开头的隐藏文件和文件夹

执行命令指定参数和选项

大多数情况,都是组合参与和选项来使用命令的。比如`ls -la /home/lance`

环境变量

环境变量是name-value形式定义的,用于改变命令和进程的执行方式。在首次登陆服务器或者启动服务器时,系统默认按照一定顺序从一些配置文件中加载一个或者多个环境变量。

我们可以通过`env`命令来查看系统为当前会话终端所设置的所有环境变量。

> `env`

查看会话环境变量

可以看到终端有许多的环境变量输出:

bash> SHELL=/bin/bash > WSL_DISTRO_NAME=Ubuntu > WT_SESSION=9e898215-21c0-47a5-9a10-60df73299120 > NAME=DESKTOP-JLRIVPD > PWD=/home/lance/lance > LOGNAME=lance > HOME=/home/lance > LANG=C.UTF-8

查看指定环境变量

1. 我们在终端查看我们想要知道的环境变量的值,可以通过执行`echo ${var}`的形式查看。

> `echo $PATH`

输出:

> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/Java/jdk-14.0.2/bin:/mnt/c/Program Files/Go/go1.15/bin:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/Lance/AppData/Local/Microsoft/WindowsApps:/mnt/c/storage/apps/devloper/Microsoft VS Code/bin:/mnt/c/Users/Lance/go/bin:/snap/bin

2. 也可以在命令行中使用环境变量,这样命令在执行中会自动将指定环境变量替换成具体变量值,再传输指令给系统。

> `cd $HOME`

* 但是需要注意,如果你在命令行或者脚本中使用一个未定义设置的环境变量,正常情况会被空字符串替代。

设置环境变量

在知道如何使用或者查看环境变量之后,需要进一步学习如何设置一个环境变量。

1. 设置一个环境变量时,需要以环境变量的名称开头,用`=`将变量命令与变量值相连,传输给系统。如果变量已存在则覆盖,否则为当前会话创建一个新的环境变量。

> `TEST_VAR=LANCE_TEST`

然后通过`echo $TEST_VAR`命令来获取查看设置变量的值,终端会输出`LANCE_TEST`。

2. 通过`export`命令实现环境变量设置

`bash`中包含`export`命令,用于导出变量,以便于子进程可以继承该变量。简而言之,就是允许你使用脚本引导当前会话中导出环境变量。更多的信息可以通过一些Linux论坛或者书籍中进一步了解学习。

`export`命令也可以引用已存在的环境变量。例如,我们在配置`Java`或`Go`开发环境时,需要设置开发环境变量至`$PATH`,此时可以通过`export`命令来实现,将一个环境目录追加至已存在的`$PATH`环境变量之后。

> `export $PATH:/usr/local/go/bin`

总结

学习完Linux终端的一些基础知识之后,需要自己尝试去掌握更多的Linux命令以及使用。