1. 怎么理解 I/O重定向?
答:I/O重定向可以更改进程获取其输入或输出的方式。可以从执行文件读取或写入而不是键盘,可以将输出或错误保存到文件而不是终端。
2. /dev/null 是什么,有什么用途?
答:它是一个空的特殊文件,但系统会持续清除其内容,可以理解为Linux中的垃圾箱但不可回收;可以用来清除不需要显示或保存的输出或错误。
3. 解释下列命令的结果:&> /dev/null 、2>> file
答:
- :将输出和错误都丢弃掉。
- :将输出输出在终端,将错误追加到file文件中。
4. 怎么理解管道?管道和重定向有什么区别?
答:管道相当于一个连接器,它将第一个命令的标准输出连接到下一个命令的标准输入。它和重定向都可以操作输入和输出,但管道的绝大部分对象是命令,也就是进程;重定向的对象是文件。
5. 在什么情况下需要使用 tee命令?举例说明如何使用。
答:tee可以理解为管道中的T型接口,当我们需要将管道和重定向结合使用时需要用到tee。
例:
当我们想将ls的输出保存在文件且以可翻动页面的形式输出在终端,如果我们使用ls > /tmp/saved-output | less,则只能达到保存的作用,因为这里的重定向已经将输出保存在文件中而不会传递到管道,这种情况下我们需要用到tee,ls | tee /tmp/saved-output | less则可以达到我们的需要。
6. vim是什么?vim和 vi有什么关系?
答:vim是Linux中的一种文本编辑器,它是基于vi编辑器改进得到的,具有很高的可配置性和效率,并提供分屏编辑、颜色格式和突出显示编辑文本等功能(/etc/vimrc)。
7. vim里有几种运行模式,分别说明每种模式下的简单操作。
答:vim拥有命令模式、扩展命令模式、编辑模式和可视模式,且其他模式从此进入。
- 命令模式:可以用于导航、剪切和粘贴,以及其他文本的修改。
- 扩展命令模式:在命令模式下按“ :”进入,可以写入文件、退出vim等操作。
- 编辑模式:在命令模式下按“ i ”进入,可以编辑文件的文本内容。
- 可视模式:在命令模式下按“ v ”进入,可在其中选择多个字符进行文本操作,Shift +V选择多行;Ctrl+V选择文本块。
8. shell会话是什么?一个用户可以启动多个 shell会话吗?
答:
- :shell会话是用户和shell(命令行解释器)之间建立的一种交互通信过程,用户可以在shell会话执行各种命令和脚本。
- :一个用户可以启动多个shell会话,但每个会话是独立的,都拥有自己的shell变量、环境变量、当前工作目录信息、传递给程序的命令行选项等。
9. 说明 shell变量(或 bash变量)和环境变量的区别。
答:shell变量只有shell能使用它,shell变量被导出为环境变量后shell和shell运行的任何程序都可以使用该变量,在通常情况下不会持久化。
10. PATH环境变量有什么重要作用?
答:该变量包含一个含有程序的目录的冒号分隔列表。在用户运行命令时,shell会按照顺序逐一在这些目录中寻找对应可执行文件,且运行它找到的第一个匹配文件。当我们需要将其他目录中可执行文件或脚本像常规命令一样运行,我们可以将此目录附加到当前PATH变量(export PATH=${PATH}:其他目录)但不会持久化,如有需要可以修改~/.bashrc等配置文件来持久化。
11. 分别在/etc/profile、~/.bash_profile 和 ~/.bashrc 设置环境变量时有什么区别?
答:
- :/etc/profile、~/.bash_profile文件配置的是交互式登录shell的Bash环境;~/.bashrc文件配置的是交互式非登录shell的Bash环境。
- 补充:同时/etc/profile和~/.bash_profile也分别提供/etc/bashrc和/.bashrc文件。/etc/profile和/etc/bashrc文件适用于整个系统;~/.bash_profile和~/.bashrc文件特定于用户。