文章目录
cite: https://www.lanqiao.cn/courses/1
概述
linux各个版本发行图
linux学习路径图
终端 / shell
-
终端本质上是对 Linux 上的 /dev/tty 设备。Linux 的多用户登录,就是通过不同的 /dev/tty
设备完成的,Linux 默认提供了 6 个终端 “terminal”来让用户登录。 -
/dev/tty: 真终端。
桌面的终端:伪终端。当你在图形用户界面使用 /dev/tty1~ 7时每打开一个终端就会产生一个伪终端
终端Terminal ——> 命令解析器shell(“提供给使用者使用界面”的软件,类似于command命令行和cmd.exe )——> Linux内核
UNIX/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。
快捷键
终端快捷键
快捷键 | |
---|---|
切换到终端 | Ctrl+Alt+F1~F6 |
切换到图形界面 | Ctrl+Alt+F7 |
退出终端 或 退出当前用户 | Ctrrl+d 或 输入exit (再一次:退出系统) |
撤销停止当前程序 | Ctrl+c |
暂停当前程序(按任意键恢复) | Ctrl+s |
恢复历史输入命令 | 方向上键↑0 |
补全shell命令 | Tab |
将终端显示向上滚动 | Shift+Up |
将终端显示向下滚动 | Shift+Down |
光标 移动到行首 | Home 或 Ctrl+a |
光标 移动到行末 | End 或 Ctrl+e |
GNOME桌面快捷键
快捷键 | |
---|---|
打开终端 | Ctrl+Alt+t W |
显示桌面 | Win+d |
复制 | Ctrl+Shift+c |
黏贴 | Ctrl+Shift+v |
shell命令
通配符
字符 | 含义 |
---|---|
* | 匹配多个字符(包括0个) |
? | 匹配任意一个字符 |
[ ] | 匹配一个字符 |
[list] | 匹配 list 中的任意一个字符 |
[c1-c2] | 匹配 c1-c2 中的任意一个字符 如:[0-9][a-z] |
[^list] | 匹配 除 list 中的任意一个字符以外的字符 |
{ } | |
{string1,string2,…} | 匹配 string1 或 string2 (或更多)其一个字符串 |
{c1..c2} | 匹配 c1-c2 中全部字符 如{1..10} |
常用命令
命令 | 类型 | 说明 | 举例 |
---|---|---|---|
curl | 网页传输 | 下载,多功能 | |
wget | - | 快速下载 | |
文件管理 | |||
whereis | - | 查找文件(二进制、源代码、帮助文件) | |
locate | - | 查找文件(数据库中,不实时) | |
find | - | 查找文件(硬盘中) | find . -name “*.c” #当前目录下,延伸档名是 c 的文件 |
tar | 备份压缩 | 解压总结: (1) tar -xvf *.tar (2) tar -xzf *.tar.gz或*.tgz (3) tar -xjf *.tar.bz2 (4) tar -xZf *.tar.Z (5) unzip *.zip (6) unrar e *.rar (7) gzip -d *.gz (8) bzip2 -d *.bz2 (9) uncompress *.Z (10) xz -d *.tar.xz 解压成 *.tar,继续解压 |
sudo apt-get update
用户-命令
# 查看用户
whoami # 只输出用户名
who am i
# 增加用户
# 创建一个新用户、密码、新用户组、新工作目录
sudo adduser <user> # 工作目录:home/<user>
# 添加用户到sudo组
su - <user>
sudo ls # 查看当前用户是否在sudo组中
su - # 切换至root或sudo组中用户
sudo usermod -G sudo <user>
# 单独设置密码
sudo passwd <user>
# 删除用户
sudo userdel -r <user> #包括工作目录
或
sudo deluser <user> --remove-home #包括工作目录
# 查看所属的用户组
groups # 当前用户
groups <user> # 用户<user>
# 查看所有用户组
cat /etc/group | sort
cat /etc/group | grep -E "<group>" #只看<group>组
目录及文件-命令
linux一切皆文件,目录也是文件
# 列出所有文件及目录
ls
ls -a # 包括隐藏文件
ls -l # 详细信息
ls -al
ls -alh # 详细信息,显示大小为k
ls -asSh # 显示大小为k
# 修改文件的所有者
sudo chown <user> <file>
# 修改文件的权限
chmod 600 <file> # 二进制权限表示:只能所有者读写,所属用户组和其他用户不能做任何操作
或
chmod go-rwx <file> # ugo(所有者、所属用户组、其他用户),rwx(读、写、执行),+-(追加、删去)
# 查看目录结构(树形)
tree <dir> # 要apt-get安装,<dir>:包括绝对路径和相对路径
# 查看当前目录
pwd
# 转到用户的工作目录(/home/<user>或/root)
cd ~
# 相对路径
cd . # 到当前目录
cd .. # 到上一级目录
cd ../../ # 到上一级目录的上一级目录
# 新建文件
touch <file> # 空白文件,若已存在,则不覆盖(不新建)
touch file{1..5}.txt # 创建5个文件.txt
# 新建目录
mkdir <dir> # 一个空目录
mkdir -p <dir> # 多级空目录
# 删除
rm -f <file> # 删除文件:-f: 忽略权限
rm -rf <dir> # 删除目录:-r: 递归删除, -f: 忽略权限
# 查看属性
file <file> # 查看文件类型(根据内容,而不是后缀)
# 查看文件内容
# cat和tac
cat <file>
cat -n <file> # 输出打印添加行号
tac <file> # 倒看
# more和less
more <file> # enter键向下翻一行,space键向下翻一屏,q键退出
# head和tail
head <file> # 默认看前10行
head -n 3 <file> # 看前3行
tail <file> # 默认看后10行
# 编辑文件
vim <file> # file不存在,则新建
# 复制
cp <file> <dir> # 复制文件
cp -r <dir_source> <dir_dest> # 复制目录dir_source
# 移动 /重命名
mv <file_dir> <file_dir_dest> # 若file_dir_dest存在,则将前者移动到后者下。若file_dir_dest不存在,则将前者重命名为后者
# 批量重命名
rename 's/\.txt/\.c/' *.txt # 要apt-get安装,搭配正则。先匹配第二个参数(所有.txt文件),重命名为第一个参数(.c文件)
# 查找文件
# find
find <path> -name <file_name>
# which
which <程序名> # 确定否安装了某个指定的程序,只从 PATH 环境变量指定的路径中去搜索命令并且返回第一个搜索到的结果
# eg:which nginx
# whereis
whereis <file> # 只能找二进制文件、源代码文件
# locate
sudo updatedb # 要apt-get安装locate,更新 /var/lib/mlocate/mlocate.db 数据库
loacte <file> # 匹配<file>查找
# eg:locate /usr/share/\*.jpg # 转义\
loacte -c <file> # 只统计数目
loacte -i <file> # 忽略大小写
解压压缩文件-命令
打包与压缩:Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件先打包成一个文件,然后再就原来的压缩程序进行压缩。
文件后缀 | 说明 |
---|---|
*.rar | rar 程序压缩的文件 |
*.zip | zip 程序打包压缩的文件 |
*.7z | 7zip 程序压缩的文件 |
*.bz2 | bzip2 程序压缩的文件 |
*.gz | gzip 程序(GNU zip)压缩的文件 |
*.xz | xz 程序压缩的文件 |
*.tar | tar 程序打包,未压缩的文件 |
*.tar.7z | tar 打包,7z 程序压缩的文件 |
*tar.bz2 | tar 打包,bzip2 程序压缩的文件 |
*.tar.gz | tar 打包,gzip 程序压缩的文件 |
*.tar.xz | tar 打包,xz 程序压缩的文件 |
# zip
zip -r -q -o <file>.zip <file_or_dir> # -r:递归打包子目录。-q:安静模式,即不向屏幕输出信息。-o:输出文件,需在其后紧跟打包输出文件名。
du -h <file>.zip # 查看打包后文件的大小
file <file>.zip # 查看文件类型
zip -r -e -o <file>.zip <file_or_dir> # 加密打包
zip -r -l -o <file>.zip <file_or_dir> # 在 windows下解压文件换行正常
# unzip
unzip <file>.zip
unzip -q <file>.zip -d <dir> # 安静解压,<dir>不存在则自动创建
unzip -l <file>.zip # 只查看,不解压
unzip -O GBK <file>.zip # 中文文件,windows为GBK编码(Linux为UTF-8编码)
# tar。
tar -cf <file>.tar <dir> # -f:创建的tar包名。-c:目录。
tar -f <file>.tar -c ~ # 打包工作目录
# .gz
tar -czf <file>.tar.gz <dir>
#
tar -xf <file>.tar -C <dir> # <dir>已存在。
tar -tf <file>.tar # 只查看,不解包
# .gz
tar -xzf <file>.tar.gz
tar命令的参数(加在-cf中间、-xf中间) | |
---|---|
.tar.gz | -z |
*.tar.xz | -J |
*tar.bz2 | -j |
安装桌面-命令
一开始进入的是tty界面,需要安装桌面。
apt-get install ubuntu-desktop
重启
reboot
此时,只能以客人方式进入,需添加root登录方式。
CTRL + ALT + F1,出现命令行,输入root用户,然后输入密码。
输入命令:startx,此时,进入无任务栏,桌面也没有任何图标。
右键 - 从终端打开:
su root
gedit /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
在文件中追加:
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false
autologin-user=root
再重启。
此时会出现:读取/root/.profile时发现错误。
打开终端:
gedit /rot/.profile
将 mesg n,修改为:tty -s && mesg n。
shell脚本编程
declare tmp
tmp=123 #赋值:等号两边不能有空格
echo $tmp #输出变量的值
用户管理
su 与 sudo
命令 | 功能 | 当前环境 |
---|---|---|
切换用户 | ||
su <use> | 切换用户 pw: 目标用户密码 | 原用户 |
su - <user> | 切换用户 pw: 目标用户密码 | 目标用户 |
执行命令 | ||
sudo <cmd> | 以root权限执行,且原用户在sudo组中 pw: 原用户密码 | 原用户 |
- su和sudo都可获得root权限
- su: 切换用户
- sudo:受限制的su,执行完命令后,自动退回原用户,多用户环境下 。不在sudo组中的用户不能用“sudo”命令。
cite: https://blog.csdn.net/happiness_llz/article/details/82022293
用户、用户组
一个用户可以属于多个用户组
sudo组:sudoers 文件(/etc/sudoers)
不在sudo组中的用户不能用“sudo”命令
目录及文件
linux目录结构图
FHS 标准
文件权限
详细信息(命令ls -l)
目录文件同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件
文件的权限表示
二进制表示
一个文件:三组权限(拥有者,所属用户组,其他用户),每组权限(r、w、x)
每组权限表示图如下:
例如:
某文件权限为:-rw-rw-r–,对应二进制表示为:110-110-100,对应十进制为:664
文件编辑
vim
Vim 具有 6 种基本模式和 5 种派生模式
- 普通模式(打开文件的默认模式)。按Esc键进入。移动光标、删除内容等等。
- 插入模式。按 a 键 或 i 键进入。编辑文本内容。
- 命令行模式。输入成为会被解释并执行的命令。按 : 键进入。
- 可视模式
- 选择模式
- Ex 模式
按键区分大小写
普通模式 | |
---|---|
光标移动 | |
左移 | h键 |
下移 | j键 |
上移 | k键 |
右移 | l键 |
进入插入模式 | |
i键 | 在光标处插入 |
a键 | 在光标后插入 |
o键 | 在光标行后插入一个新行(换行插入) |
I键 | 在行首插入 |
A键 | 在行末插入 |
O键 | 在当前行前插入一个新行 |
删除文本内容 | |
x键或Delete键 | 删除光标所在的字符 |
X | 删除游标所在前一个字符 |
dd键 | 删除整行 |
3dd键 | 删除3行 |
d$或D键 | 删除至行尾 |
dG | 删除到文档结尾处 |
dw | 删除一个单词(不适用中文) |
d1G | 删至文档首部 |
插入模式 | 平时写文档一样的 |
---|---|
光标移动 | ←、→、↑、↓键 |
删除字符 | BackSpace键、Delete键 |
命令模式 | |
---|---|
保存 | “:w”+Enter键 |
不保存退出 | “:q!”+Enter键 |
保存并退出vim | “:wq!”+Enter键 |
环境变量
当前shell的环境变量
环境变量3种
- 当前用户自定义变量。 当前 Shell 进程私有用户自定义变量,只在当前 Shell 中有效。
- shell内建环境变量。 Shell 本身内建的变量。
- 导出的环境变量。 从自定义变量导出的环境变量。
打印环境变量信息的命令 | |
---|---|
set | 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。 |
env | 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。 |
export | 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。 |
永久环境变量(配置文件)
Linux 变量可分为两类:
- 永久的:需要修改配置文件,变量永久生效
- 临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。
用户 | 环境变量 |
---|---|
所有用户 (系统) | 根目录/: /etc/enviroment、 /etc/profile(环境变量)、 /etc/bashrc(shell变量,用bash命令时加载)、 /etc/bash_profile |
当前 用户 | 用户的工作目录: ~/.profile(环境变量) 、 ~/.bashrc(shell变量,用bash命令时加载) 、 ~/.bash_profile |
- linux环境变量加载顺序: /etc/environment ——> /etc/profile ——> /etc/bashrc ——> ~/.profile ——> ~/.bashrc
- 当我们在 Shell 中执行一个命令时,系统就会按照 PATH 中设定的路径按照顺序依次到目录中去查找,如果存在同名的命令,则执行先找到的那个。
# 添加一个路径
echo "PATH=$PATH:<path>" >> .bashrc # <path>绝对路径,>>重定向,不覆盖
echo $PATH #输出
# 删除环境变量的一个路径
mypath=$PATH
echo $mypath
mypath=${mypath%<path>} # 删除<path>
# 删除变量
unset mypath # 删除mypath
# 更新
source <dir> # <dir>为配置文件
cite:https://www.cnblogs.com/qiuhong10/p/7815943.html
软件下载、安装、卸载
linux所有版本的安装软件命令详解
deb、rpm、AppImage、tar、apt-get、yum、run、bin) https://www.cnblogs.com/linuxAndMcu/p/10717565.html
系统 | 包 | 命令 | 包管理工具 |
---|---|---|---|
debian系统 (ubuntu) | deb包 | dpkg | apt-get |
Fedroa系统 (centos) | rpm包 | rpm | yum |
所有 | tar.gz / tar.bz2源代码包 |
centos
方法一:yum安装、查询、卸载
yum命令:
#帮助
yum -h
#安装过程提示选择全部为"yes"
yum -y
#不显示安装的过程
yum -q
#安装命令
yum install #全部安装
yum install <package_name> #安装指定的软件
#更新
yum update #全部更新
yum update <package_name> #更新指定程序包
yum check-update #检查可更新的程序
#查找
yum provides 文件名 #查询某文件所在的软件包
yum search 关键字
#显示
yum list #显示所有已安装和可以安装的程序包
yum list <package_name> #显示指定程序包的安装情况
yum info <package_name> #显示程序包信息
#卸载
yum remove <package_name> #删除程序包
#清除缓存
yum clean
注:卸载
yum remove firefox
whereis firefox #卸干净
#firefox: /usr/lib64/firefox
cd /usr/lib64/
rm -rf firefox
方法二:rpm包安装、查询、卸载
(1)安装
举例:安装chrome
用sudo
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
rpm -ivh google-chrome-stable_current_x86_64.rpm
注:
若报错,被指需要依赖包
/usr/bin/lsb_release 被 google-chrome-stable-74.0.3729.169-1.x86_64 需要
libXss.so.1()(64bit) 被 google-chrome-stable-74.0.3729.169-1.x86_64 需要
libappindicator3.so.1()(64bit) 被 google-chrome-stable-74.0.3729.169-1.x86_64 需要
liberation-fonts 被 google-chrome-stable-74.0.3729.169-1.x86_64 需要
则安装这些包
sudo yum -y install liberation-fonts
sudo yum -y install libXss*
sudo yum -y install libappindicator*
对于错误:
/usr/bin/lsb_release 被 google-chrome-stable-74.0.3729.169-1.x86_64 需要
则先查找对应的安装包,再安装
sudo yum provides */lsb_release #找到安装包:redhat-lsb-core-4.1-27.el7.centos.1.x86_64
sudo yum install redhat-lsb-core-4.1-27.el7.centos.1.x86_64
(2)查询
rpm -qa | grep mysql
(3)卸载
rpm -e mysql #普通删除模式
rpm -e --nodeps mysql #强力删除模式
方法三:tar.gz源代码包安装、卸载
(1)安装
tar -xzvf xxx.tar.gz #解压
cd xxx
./configure #配置文件
make #编译
make install #安装生成的二进制文件
(2)卸载
cd xxx #源代码包
make uninstall