共计3215个字符,预计需要花费9分钟才能阅读完成。
Linux 知识
Linux,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于 1991 年 10 月 5 日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如基于社区开发的 debian、archlinux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux 等。
主要目录
Linux 系统是多用户操作系统,只有一个根目录 /,没有盘符概念。
-
/
根目录,一般根目录下只存放目录,在终端里输入 /home,其实是在告诉电脑,先从 /(即根目录)开始,再进入到 home 目录;
-
/bin,/user/bin
可执行的二进制文件的目录,如常用的命令:ls,tar,mv,cat 等;
-
/boot
放置 Linux 系统启动时用到的一些文件,如 Linux 内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub;
-
/dev
存放 Linux 系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱:mount /dev/cdrom /mnt;
-
/etc/
系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有:/etc/initab etc/fstab etc/init.d /etc/xll /etc/sysconfig /etc/xinetd.d;
-
passwd
存放这用户的信息,由 6 个分号组成
用户名: 密码:UID:GID: 用户全名: 家目录: 登录命令 密码:x 表示加密的密码 密码存放在 /etc/shadow UID:用户标识 普通用户从 1000 开始 用户权限由 UID 决定 root 用户为 0 如果把某一用户的 UID 改成 0 那么他具有 root 权限 GID:组标识
-
shadow
存放密码信息 是 /etc/passwd 的影子文件
用户名: 加密密码: 最后一次更改密码时间: 天数
-
group
存放组信息
组名: 密码:GID: 包含的用户
-
gshadow
是 /etc/group 的影子文件
组名: 密码: 管理者: 组群成员
-
-
/home
系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下:~ 表示当前目录的家目录,~edu 表示用于 edu 的家目录;
-
/lib,/user/lib,/usr/local/lib
系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助;
-
/lost+fount
系统异常产生错误时,会将一些遗失的片段放置于此目录下;
-
/mnt,/media
光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载;
-
/opt
给额外安装软件所放置的目录;
-
/proc
此目录的数据都在内存中,如系统核心外部设备、网络状态,由于数据的都存放于内存中,所以不占用磁盘空间,比较重要的文件,有:/proc/cpuinfo,/proc/interrupts,/proc/dma,/proc/ioports,/proc/net/* 等;
-
/root
系统管理员 root 的家目录。
-
/usr/share/doc
收录了完整系列的软件说明文件
家目录
-
~/.ssh/
保存着 ssh 的信息的目录
-
config
用于配置 ssh 的信息
配置别名
Host <别名> HostName
User <用户> Port <端口> -
known_hosts
保存着记录过的服务器信息
-
authorized_keys
认证过的公钥信息
-
id_rsa
生成的私钥信息
在连接端生成私钥和公钥
再将公钥复制给服务器
就能免密登录服务器
-
id_rsa.pub
生成的公钥信息
公钥交给服务器
就能免密登录服务器了
-
-
~/.bash
-
~/.bash_history
命令的历史记录文件
所有之前执行过的命令都会保存在这里
-
~/.bashrc
每次登录都会执行的 bash 命令
-
环境变量
-
查看环境变量:env
-
设置系统环境变量
export name="值" #(注意:这只是临时设置环境变量,在下次登录 shell 时就失效了)# 永久方法:# 在 /etc/profile.d 目录下创建 sh 文件 # 在每次登录 shell 时都会执行 /etc/profile.d 文件夹里面的所有 sh 文件
命令
命令格式:
command [-options] parameter
command -lh
和command -l -h
的效果是一样的查询帮助:
command --help
man command
快捷键:
Tab 自动补全
↑ / ↓ 快速切换历史命令
Ctrl + C 退出选择,取消执行当前命令
命令 | 英文 | 作用 | 参数 |
---|---|---|---|
man < 命令 > | manual | 查找命令的帮助信息 | |
ls [查找内容] | list | 查看当前文件夹下的内容 | -a 查看包括隐藏文件的所有文件 -l 列出文件的详细信息 -h 更好的显示文件大小 通配符: ls 1* ls 1?1.txt ls [A-Z]* |
tree [目录名] | tree | 树状图显示目录结构 | -a 显示所有文件(隐藏文件) -d 只显示目录 |
pwd | Print Work Directory | 查看当前文件夹 | |
cd [目录名] | Change Directory | 切换文件夹 | cd 切换到用户目录 cd ~ 切换到用户目录 cd . 保持当前目录 cd .. 返回上一级目录cd - 返回上次的目录 |
touch < 文件名 > | touch | 创建文件 | 创建文件或者修改文件修改时间信息 |
mkdir < 目录名 > | Make Directory | 创建文件夹 | -p 创建递归目录mkdir -p a/b/c/d |
cp [原文件] [目标文件] | copy | 复制文件 | -i 文件覆盖前提示 -f 强制覆盖文件 -r 复制文件夹及里面的内容 |
mv [原文件] [目标文件] | move | 移动文件 / 重命名文件 | -i 文件覆盖前提示 -f 强制覆盖文件 |
rm < 文件名 > | remove | 删除指定文件 | -f 强制删除文件 -r 删除文件夹及内容 -d 删除空的目录 -i 删除前提示 |
find [路径] | Find | 查找文件 | -name "*.py" 指定查找的文件名 |
cat [文件名] | concatenate | 查看文件 / 修改文件 / 文件追加 | -b 非空行编号 (相当于nl )-n 对所有行编号 cat > 1.txt 写入文件 1.txtcat 1.txt > 2.txt 将 1 中的内容覆盖到 2 cat 1.txt >> 2.txt 将 1 中的内容追加到 2 cat < 1.txt 2.txt 将打印 2 中的内容 |
nl [文件名] | Number of Line | 查看文件(非空行显示行数) | |
more [文件名] | more | 分屏显示文件内容 | 空格键 下一页 Enter 键 滚动一行 b 向后滚动一屏 f 向前滚动一屏 q 退出 |
less [文件名] | less | 分屏显示文件内容 | |
grep [内容] [文件名] | Globally search a Regular Expression and Print | 搜索文本内容 | -n 显示行数 -v 显示不包含行 -i 忽略大小写 |
echo [内容] | echo | 输出指定文本 | echo xxx > 1.txt 输出到文件 echo xxx >> 1.txt 追加到文件 |
clear | clear | 清屏 | |
shutdown | shutdown | 关机 | -r 重新启动电脑 -c 取消关机 shutdown now 立即关机否则 1 分钟后关闭 |
reboot | reboot | 重启 | |
ifconfig | network interfaces configuring | 查看 / 配置网卡 | |
ping [IP 地址] | ping | 测试网络联通 | -I 使用指定网卡 -c 指定次数 |
ssh 用户名>@<地址:[路径] | Secure Shell | ssh 远程连接 | -p 使用指定端口(默认 22) |
scp [原文件] [目标文件] | Secure Copy | 远程拷贝文件 | -P 使用指定端口 -r 传送目录里的所有内容 |
ssh-keygen | Secure Shell Key Generate | 生成 SSH 钥匙 | |
ssh-copy-id 用户名>@<地址:[路径] | Secure Shell Copy Idification | 复制公钥到服务器 | -p 使用指定端口(默认 22) |
su [用户名] | Substitute User | 切换用户 | – 切换后到默认工作目录 默认切换为 root 超级用户 |
sudo < 命令 > | Substitute User Do | 用超级用户执行命令 | 5 分钟内不用重新输入密码 |
chmod [ugoa][+/-/=][rwx] [文件 / 目录] | Change Mode | 更改文件权限 | -R 递归修改文件夹下的所有内容 chmod +x file 为文件添加可执行的权限 |
chgrp < 组名 > < 文件 > | Change Group | 修改文件所属组 | -R 递归修改所有文件夹里面的内容 |
chown < 用户名 >[: 组名] < 文件 > | Change Owner | 修改文件所属用户 | -R 递归修改所有文件夹里面的内容 |
groups [用户名] | Groups | 查询用户所在组 | cat /etc/group 可以查询所有用户组 |
groupadd < 组名 > | Group Add | 添加用户组 | |
groupdel < 组名 > | Group Delete | 删除用户组 | |
useradd < 用户名 > | User Add | 新建用户 | -m 自动建立家目录 -g [组] 指定用户组 |
userdel < 用户名 > | User Delete | 删除用户 | -r 自动删除家目录 |
usermod < 用户名 > | User Modify | 修改用户信息 | -g [组] 设置用户主组 -G [组] 设置用户附加组 -s [/bin/shell] 修改用户的登录命令 |
passwd [用户名] | Password | 设置用户密码 | cat /etc/passwd \| grep < 用户 > 可以查询用户 |
id [用户名] | Idification | 查询用户的 UID 和 GID | |
who | Who | 当前登录到当前计算机的用户 | |
whoami | Who Am I | 显示当前登录的用户名 | |
which | Which | 查看命令的所在文件位置 | |
exit | Exit | 退出终端 | |
date | Date | 查看当前的系统时间 | |
cal | Calender | 查看日历 | -y 查看一年的日历 |
df | Disk Free | 查看磁盘信息 | -a 查看所有信息 -h 人性化显示文件大小 |
du [目录] | Disk Usage | 查看目录占用信息 | -s 显示总大小 - h 人性化显示文件大小 |
ps [aux] | Process Status | 查看进程的状况 | a 显示所有进程 u 显示详细信息 x 显示没有终端的进程 |
top | Top | 动态显示进程且进行排序 | |
kill < 进程 PID> | Kill | 杀死某一个进程 | -9 强制终止程序 |
ln < 被链接文件 > < 链接文件 > | Link | 创建链接 | -s 建立软链接 不带该参数默认建立硬链接 |
tar | Tape Archive | 打包 / 解包 | -c 生成档案文件 -x 解开档案文件 -v 列出进度 -f 指定文件名称 -j 通过 bzip2 压缩 -z 通过 gzip 压缩 -C 指定解压目录 tar -cvf xxx.tar xxx 打包文件 tar -xvf xxx.tar 解包文件 |
zip < 压缩包.zip> < 文件 > | Zip | 压缩 | -v 列出进度 -r 递归压缩文件夹下的所有内容 -n [1~9] 压缩级别 -u 追加文件到 zip |
unzip < 压缩包 > | Unzip | 解压 | -d < 路径 > 指定解压文件夹 -P < 密码 > 指定密码 -l 列出压缩包内容 |
apt | Advanced Packaging Tool | 管理软件包 | |
chattr | 加锁和解锁 只读权限 root 也无法修改 | chattr +i /etc/resolv.conf chattr -i /etc/resolv.conf |
|
alias | alias | 给命令定义别名 | alias rm =‘rm -i’ |
unalias | unalias | 取消别名 | unalias rm |
diff | 显示文件不同的地方 | diff file.txt file1.txt 也可以显示文件夹不同的地方: diff -r / /home |
用户和权限
超级用户
-
root
账号是超级用户账号 -
用于系统的维护和管理
-
不建议直接使用超级用户
用户符号
用户 | 英文 | 简写 |
---|---|---|
所有者 | owner | u |
用户组 | group | g |
其他用户 | other | o |
所有用户 | all | a |
权限符号
权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | excute | x | 1 |
无权限 | – | 0 |
八进制语法 | 权限 | 缩写 |
---|---|---|
7 | 读 + 写 + 执行 | rwx |
6 | 读 + 写 | rw- |
5 | 读 + 执行 | r-x |
4 | 只读 | r– |
3 | 写 + 执行 | -wx |
2 | 只写 | -w- |
1 | 只执行 | –x |
0 | 无权限 | — |
文件类型 | 文件 / 目录 | 拥有者权限 | 组权限 | 其他用户权限 |
---|---|---|---|---|
普通文件 | – | rw- | rw- | r– |
目录文件 | d | rwx | rwx | r-x |
管理文件 | p | |||
连接文件 | l | |||
块设备文件 | b | |||
字符设备文件 | c | |||
套接字文件 | s |
常用软件包
名称 | 作用 | |
---|---|---|
Samba | nas 服务器 远程硬盘 | |
Transmission | 远程文件下载器 | |
OpenStack | 云平台 | |
KVM | 虚拟机 | |
WebVirtMgr WebVirtCloud | 虚拟机管理 WEB | |
Rclone | 它可以将 webdav 协议的共享文件夹挂载到电脑本地硬盘。此外,Rclone 还支持 HTTP、WebDav、FTP、SFTP、dlna、Amazon S3、阿里云 OSS……等多达 40+ 种常用网络共享协议。 | |
关于 Shell
通配符
星号 *
用于匹配任何字符,包括数字、字母和符号。可以使用星号指定应用程序需要查找的字符相应位置的任何字符。
# 删除所有文件后缀为.bak 的文件
rm *.bak
问号 ?
用于匹配单个任意字符。
# 列出所有任意一个字符开头,后面为 bc.txt 的文件
# 例如:abc.txt bbc.txt 1bc.txt
ls ?bc.txt
文件别名
# 给命令设置别名
# alias < 别名 >="< 原命令 >"
alias test="ls -l /"
# 取消别名
# unalias < 别名 >
unalias test
管道
# 管道的符号为 |
[命令]|[命令]|[命令]
重定向
# 输出重定向
# 将命令执行的输出保存在文件里 直接覆盖
[命令] > [文件]
ls /etc > 1.txt
# 追加重定向
# 追加来替代直接覆盖文件
ls /etc >> 1.txt
# 输入重定向
[命令] < [文件]
grep test < 1.txt
# 追加重定向
# 获取一段分隔符之间的内容
[命令] << [分隔符]
> [内容]
> [内容]
> [分隔符]
# 错误重定向
# 把命令发生的错误写到文件里
[命令] 2> [文件]
ls /nofile 2> 1.txt
ls /nofile 2>> 1.txt
# 同时实现输出和错误重定向
[命令] &> [文件]
write by dudu233