KANIKIG

KANIKIG

just for fun | 兴趣使然 Ph.D. in Engineering|❤️ #NFT $ETH| [Twitter](https://twitter.com/kanikig2)|[Github](https://github.com/KANIKIG)|[Telegram channel](https://t.me/kanikigtech)

Linux基础笔记

image

去年学习 python 基础课时包含的 linux 基础课程笔记

记得很简略基本上只有自己看得懂。。

一、操作系统与 Linux#

1. Operating System#

1)操作硬件
2)将操作硬件的方法封装为系统调用

1.1 操作系统分类#

  • 桌面操作系统
  • 服务器操作系统
  • 嵌入式操作系统
  • 移动设备操作系统

2. 操作系统发展史#

2.1 Unix#

星际旅行
BCPL->B 语言 ->C 语言
Unix
多用户

2.2 Linux#

在 minix 基础上
内核

2.3 Linux 内核与发行版#

增加了终端命令
内核是封装好的系统调用
发行版是在内核基础上开发的一套应用程序

2.4 Linux 文件系统#

win 盘符
因为 xp 之前都是单用户

linux
home 下放着各个用户的文件夹

etc 系统配置文件
bin 可执行二进制文件
home 用户目录

二、Linux 终端命令#

掌握常用的十几个即可,不常用的查表

ctrl +/- 放大终端字体

1. 最常见的 7 个命令:#

  1. ls list 查看当前文件夹下的内容
  2. pwd print work directoty 查看当前文件夹
  3. cd change directory 切换文件夹
  4. touch touch 如果文件不存在则新建文件
  5. mkdir make directory 创建目录
  6. rm remove 删除文件
  7. clear 清屏

2. 终端命令格式#

command [-option][parameter]

rm -r 文件夹

3. 查阅命令帮助信息#

两种方式

command --help

man command
空格 翻页
回车 下一行
b 回滚一页
f 翻页
q 退出

(command 为对应命令)

4. 文件和目录常用命令#

ls cd touch rm mkdir

tab 自动补全文件名 如果有其他选择,再按一次,系统会提示可能命令

上下可以切换至以前的命令
ctrl c 直接回到最下

拷贝和移动
tree cp mv

查看文件内容
cat more grep

1) ls#

. 开头为隐藏文件 ls 需要 - a (all)
如果需要创建隐藏文件,只需要加.

. 当前目录
.. 上级目录

ls -a 显示全部文件
ls -l 列表方式显示文件全部信息
ls -h 配合 - l 人性化显示文件大小

drwxr-xr-x 4 kanikig kanikig 4096 5 月 19 18:02 AppWebCache
drwxr-xr-x 3 kanikig kanikig 4096 6 月 16 22:55 Audio
drwxr-xr-x 2 kanikig kanikig 4096 5 月 18 18:13 CloudRes
-rw-r--r-- 1 kanikig kanikig 33280 5 月 26 15:05 CustomFace.db
-rw-r--r-- 1 kanikig kanikig 494509 7 月 9 14:01 CustomFace.dbc
-rw-r--r-- 1 kanikig kanikig 132096 7 月 9 14:01 DingDongStorage.db
-rw-r--r-- 1 kanikig kanikig 0 5 月 18 18:08 DingDongStorage.db-journal
-rw-r--r-- 1 kanikig kanikig 25600 7 月 9 14:01 DocImport.db

d 代表目录

ls -l -h
文件大小更直观
drwxr-xr-x 4 kanikig kanikig 4.0K 5 月 19 18:02 AppWebCache
drwxr-xr-x 3 kanikig kanikig 4.0K 6 月 16 22:55 Audio
drwxr-xr-x 2 kanikig kanikig 4.0K 5 月 18 18:13 CloudRes
-rw-r--r-- 1 kanikig kanikig 33K 5 月 26 15:05 CustomFace.db
-rw-r--r-- 1 kanikig kanikig 483K 7 月 9 14:01 CustomFace.dbc

选项可以连写 如
ls -alh

ls 与通配符

  • 任意字符串
    ? 任意字符
    [] 匹配字符组任意一个 [1-9] [abc]

如 ls m* 找 m 开头的

2) cd#

常用参数

cd 直接回家
或者加波浪号~直接返回家目录
cd - 在最近两次目录切换

相对路径
绝对路径 / 或者~开头

3) touch#

如果已经存在,则修改日期更新

4) mkdir#

-p 连续创建目录

mkdir -p a/b/c/d

(linux 一个目录下 文件夹和文件也不可重名)

5) rm#

-f 强制删除
-r 递归删除

同样可使用通配符

6) tree#

树状图列出文件系统

-d 只显示目录

7) cp#

cd 源文件 目标文件

文本编辑器 ctrl s 快速保存

后面可以指定文件名
不改的话可以只写目录

-i 覆盖文件前提示
-r 递归复制整个文件夹

8) mv#

mv 源文件 目标文件
-i 覆盖前提示

9) cat#

concatenate
查看文件内容

-b 对非空输出行编号
-n 对全部输出行编号

10) more#

分页显示
用来查看大文件

操作快捷键和 man 一样

11) grep#

强大的文本搜索工具

-n 显示行号
-v 不包含文本内容的行(求反
-i 忽略大小写

模式查找
^asdasd 行开头匹配
asdasd$ 行尾匹配

12) echo#

在终端输出

重定向:把本应该在终端输出的内容输出到文件里

'>' 输出到文件(覆盖)

'>>' 追加

\ 就是换行
不仅可以用与 echo
ls 也可重定向

ls -lh >>a

13) |#

管道
一个命令的输出通过管道作为另一个命令的输入

ls -lha | more 分页显示
ls -lha | grep ds 筛选输出

三、远程管理#

1.shutdown#

shutdown 选项 时间

默认是一分钟后关机
now 立即重启

shutdown 20:25
shutdown +10 十分钟后关机

-r 重启

2. 查看配置网卡#

网卡
负责网络通讯的硬件设备
ip 地址是设置在网卡上的地址信息

ifconfig 查看 / 配置网卡信息
ping 测试连接是否正常

ifconfig | grep inet 快速看 ip
一个物理网卡和多个虚拟网卡
物理网卡 ens..

ping
ctrl c 停止

3. 远程登录和复制#

1) ssh#

Secure Shell

域名 ip 地址别名
端口号 通过端口号可以找到计算机运行的应用程序
ssh 端口号默认 22 可缺省
ftp 21
web 服务器 80

ssh [-p port] user@remote
remote 为远程 ip
port 默认 22

exit 退出登录

2) scp#

远程拷贝文件

从远程下到本地 scp -P (大写!) 22 源文件 user@remote: 目标文件
从本地传到远程 scp user@remote: 源文件 目标文件
-r 传送文件夹
-P 指定端口

3) ssh 高级#

免密码登录
配置别名

ssh 的配置信息都在.ssh 下

免密码登录:
本地 .ssh 目录下执行 ssh-keygen 一路回车 生成两个文件 (公钥,私钥)
然后 ssh-copy-id [-p] user@remote 会把一个授权文件传到服务器的.ssh 下

非对称加密算法
使用公钥加密的数据,需要用私钥解密
用私钥加密的数据,用公钥解密

在本地通过私钥加密数据,在服务器的公钥对数据解密

配置别名:
在.ssh 下创建 config 文件
在其中写入

Host h1
HostName 202.182.115.91
User root
Port 22

四、用户与权限#

用户与权限的概念
用户管理
组管理
修改权限

1. 用户与权限#

读 r 4
写 w 2
执行 x 1

用户组

1)#

​ 权限 用户 组
drwxr-xr-x 3 kanikig kanikig 4.0K 5 月 18 16:45 Music
drwxr-xr-x 2 kanikig kanikig 4.0K 5 月 18 22:17 Pictures
drwxr-xr-x 3 kanikig kanikig 4.0K 7 月 8 22:58 PycharmProjects
-rw-r--r-- 1 kanikig kanikig 485 7 月 11 15:39 shadowsocks.json
-rw-r--r-- 1 kanikig kanikig 485 7 月 11 15:25 shadowsocs.json
-rw-r--r-- 1 kanikig kanikig 0 5 月 18 16:44 stale_outputs_checked
drwxr-xr-x 2 kanikig kanikig 4.0K 5 月 18 14:25 Videos

硬链接数 有多少种方式能够访问一个文件或目录
文件一般是 1 即绝对路径
文件夹 2 或以上 因为可以 cd. 或者从子目录 cd..(这里可以无数个)

所以硬链接数可以判断子目录个数

第一列 文件或文件夹
之后每 3 个字符一组
第一组 文件或目录的拥有者
第二组 用户组的权限
第三组 其他用户

2) chmod#

修改文件或目录权限
changemod

chmod +/-rwx 文件或目录

对于目录 可读是阅读目录内容 可写是修改目录内容 可执行是在目录下执行终端命令

3)root#

sudo
substitute user do
5 分钟有效期限

2. 组管理#

groupadd 组名
groupdel 组名
cat /etc/group 确认组信息
chagrp -R 组名 文件 / 目录 修改文件目录所属的组

3. 用户管理#

useradd -m -g 组 用户名
-m 自动建立用户目录
-g 指定用户的组,否则自动建立一个同名组

passwd 设置用户密码
userdel -r 用户名
-r 删除用户家目录
cat /etc/passwd | grep 用户名 确认用户信息
passwd 文件
1 用户名
2 密码 x
3uid
4gid
5 用户全名
6 家目录
7 登录使用的 shell

查看用户信息
id 用户名 查看用户 id 和组 id
who 查看当前登录的用户列表
whoami 查看当前登录的用户名

usermod
设置用户主组、附加组和登录 shell

主组 建立用户时指定的组
附加组 指定附加组

usermod -g 组 用户名 修改用户主组
usermod -G 组 用户名 修改附加组
usermod -s /bin/bash 修改 shell

usermod -G sudo 用户名 将用户添加到 sudo

shell 输入终端命令的软件

dash
bash

which
查看执行命令的所在位置

/etc/passwd 保存用户信息
/usr/bin/passwd 修改密码的程序

su 用户名 切换用户
exit 退出

4. 修改文件权限#

chown 修改拥有者
chagrp 修改组
chmod 修改权限

chown 用户名 文件或目录
chgrp -R 组名 文件或目录
chmod -R 755 文件或目录

7 拥有者的权限
5 组成员权限
5 其他用户权限

r=4
w=2
x=1

所以可以推测

五、系统信息#

1. 时间日期#

cal 本月日历 -y 一年的日历
date 当前系统时间

2. 磁盘信息#

df -h disk free 显示磁盘剩余空间
du -h [目录名] 查看目录的占用空间

3. 进程信息#

进程:当前正在执行的程序

ps aux process status 查看进程详细情况
top 动态显示进程并排序 q 退出
kill [-9] 进程代号 -9 强行停止

ps 默认只能看到终端启动的程序
a 所有用户的进程
u 显示进程详细状态
x 显示没有控制终端的进程

最好不要 kill root 的进程

4. 其他命令#

  • find 查找文件
  • ln 软连接 (相当于快捷方式)
  • tar 打包压缩
  • apt-get 软件安装

find [路径] -name “*.py”
ln -s 源文件 链接文件
源文件要用绝对路径
如果没有 - s 会创建一个硬链接

对于软连接,如果源文件被移动或删除,则会失效,硬链接不会

硬链接:
linux 中,文件名和文件数据是分开存储的
通过文件名访问数据
而硬链接是和文件名等价的,直接访问数据,相当于别名
软连接是通过软连接文件数据,访问源文件的文件名,间接访问数据
日常基本不会建立硬链接
硬链接数为 0 时,文件的数据才会删除

5. 打包压缩#

linux 常用 tar.gz
tar 只是打包,不压缩

tar -cvf 打包文件.tar 被打包文件 / 路径 打包
tar -xvf 打包文件.tar 解包

-v 列出打包详细过程
-f 指定文件名(f 必须放最后)

gzip
压缩打包后的文件

tar -zcvf 打包文件.tar.gz 被压缩文件
tar -zxvf 打包文件.tar.gz 解压缩
tar -zxvf 打包文件.tar.gz -C 目标路径 解压到指定路径

bzip2(two)

tar.bz2

在选项最前加 - j

6.apt#

advanced packaging tool

sudo apt install 软件包
sudo apt remove 软件包
sudo apt upgrade 更新软件包

sl 小火车
htop top 的升级版
linuxlogo
screenfetch

让终端变得有意思
在终端输入 sudo visudo
在 “Defaults” 末尾(文件的前半部分)添加一行 “Defaults insults”。
保存
之后当你使用 sudo,在输入密码的时候,如果输入错误了,那么终端开始胡说八道了

cmatrix 黑客帝国
rev 逆序输出 一般用于管道后
lolcat 彩色输出
cowsay 一头牛说出输出结果
aptitude moo 也是一头牛,但是是用来玩的
fortune 随机输出一段话 -zh 输出中国诗
toilet 打印出大字母
figlet 同上
aafire 这个会在屏幕上显示除一团燃烧着的火焰 sudo apt install libaa-bin
oneko 一只小猫追着鼠标跑
factor 分解质因数
espeak 朗读

fork 炸弹。。指数自乘直到占用所有系统资源

bb 一个不太一样的播放器
ASCIIquarium 水族馆

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.