一、基本概念及操作

终端本质上是对应着 Linux 上的 /dev/tty 设备
Linux 的多用户登录就是通过不同的 /dev/tty 设备完成的

Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下 command(命令行)和后来的 cmd.exe 。普通意义上的 Shell 就是可以接受用户输入命令的程序。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。

快捷命令:
#查看当前所在目录: pwd
**: ctrl+c(不会退出终端)
键盘输入结束或退出终端: ctrl+d
暂停当前程序(按任意键继续): ctrl+s
删除从光标所在位置到行末:ctrl+k
向前删除一个单词(以空格区分):Alt+⬅
终端向上/下滚动:Shift+PgUp/PgDown

查找帮助手册:
image.png eg: man 1 ls

在 man 中使用搜索**/<你要搜索的关键字>**
查找完毕后你可以使用**n**键切换到下一个关键字所在处,**shift+n**为上一个关键字所在处。
使用**Space**(空格键)翻页,**Enter**(回车键)向下滚动一行,或者使用**k****j**(vim 编辑器的移动键)进行向前向后滚动一行。

按下**h**键为显示使用帮助(因为 man 使用 less 作为阅读器,实为**less**工具的帮助),按下**q**退出。

快速查看命令的某个具体参数的作用:命令+—help eg:install —help

二、用户及文件权限管理

输入 who am i 输出的第一列表示打开当前伪终端的用户的用户名
(要查看当前登录用户的用户名,去掉空格直接使用 whoami 即可)

第二列的 pts/0 中 pts 表示伪终端,所谓伪是相对于 /dev/tty 设备而言的,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端,pts/0 后面那个数字就表示打开的伪终端序号。

如果没有输出,我们只需要打开一个登录 SHELL 的终端例如 Tmux,或者通过 ssh 登录到本机,再在新的终端里执行命令即可。

在 Linux 系统里, root 账户拥有整个系统至高无上的权限,比如新建和添加用户。

sudo <cmd> 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组。

新建一个叫 xxx 的用户:sudo adduser xxx
这个命令不但可以添加用户到系统,同时也会默认为新用户在 /home 目录下创建一个工作目录,输入ls /home查看

straydog用户的密码可以通过 **sudo passwd straydog** 命令进行设置。

退出当前用户跟退出终端一样,可以使用 **exit** 命令或者使用快捷键 **Ctrl+D**

将新创建的用户添加至sudo用户组:sudo usermod -G sudo xxx
删除用户:sudo deluser lilei —remove-home
Linux 里面一切皆文件

一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。

touch 创建文件

**ls** 命令:列出并显示当前目录下的文件
ls-alh 查看文件持有者 在目标用户下使用 sudo chown 用户名 文件名
可以更改文件持有者

更改文件权限:
每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,记住这个顺序是固定的。文件的读写执行对应字母 **rwx**,以二进制表示就是 **111**,用十进制表示就是 **7。**例如一个文件的权限是 **rw-rw-rw-**,换成对应的十进制表示就是 666,这就表示这个文件的拥有者,所属用户组和其他用户具有读写权限,不具有执行权限。

(一组rwx表示 读/写/执行 三个rwx分别对应拥有者,所属用户组,其他用户)
eg: (sudo) chmod 777 用户名

adduser 和 useradd 的区别是什么:
答:useradd 只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd 去设置新用户的密码。adduser 在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。

三、目录结构及文件基本操作

Linux 学习笔记 - 图2

相对路径,也就是相对于你当前的目录的路径,表现形式如: ./usr/local/bin ;
如果是当前目录的上一级目录,则需要使用 ..
比如你当前目录为 /home/straydog 目录下,根目录就应该表示为 ../../

使用 -p 参数, 创建一个多级目录(这在安装软件、配置安装路径时非常有用):
mkdir -p father/son/grandson

文件复制:(需要在文件所在目录)
cp + 文件名 + 目录

要成功复制目录需要加上 -r 或者 -R 参数,表示递归复制
cd /home/shiyanlou
mkdir family
cp -r father family

使用 rm(remove files or directories)命令删除一个文件: rm test
强制删除:rm -f test
跟复制目录一样,要删除一个目录,也需要加上 -r 或 -R 参数

使用 mv(move or rename files)命令移动文件(剪切)
命令格式是 mv + 源目录文件名 +目的目录

mv 命令除了能移动文件外,还能给文件重命名。命令格式为 mv 旧的文件名 新的文件名。

使用 cat,tac 和 nl 命令查看文件
前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。
nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令。

使用 file 命令查看文件的类型

(Linux 内部有 vim 学习教程,输入vimtutor可查看)

四、环境变量与文件查找

image.png image.pngimage.png Shell 的环境变量作用于自身和它的子进程

永久生效:
修改两个重要文件 /etc/bashrc/etc/profile ,它们分别存放的是 shell 变量和环境变量。

注意区别:每个用户目录下有个profile,这个文件的环境变量只对当前用户永久生效,而写在 /etc/profile 里面的是对所有用户永久生效,所以要注意区分。

可以使用 cat /etc/shells 命令查看当前系统已安装的 Shell

在每个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。实验楼的环境使用的 Shell 是 zsh,它的配置文件是 .zshrc,相应的如果使用的 Shell 是 Bash,则配置文件为 .bashrca

image.png添加后,可以在任何路径执行mybin中的命令,而且是自动执行、全局有效。

可以使用 unset 命令删除一个环境变量:

  1. unset mypath

image.png(如何立即让环境变量生效)