Linux基础学习笔记(持续更新)

目录

Linux基础

命令提示符

命令出错的情况

常用的快捷键

常用的历史命令

目录的操作

帮助

ls

绝对路径

相对路径

pwd

创建目录

删除目录

管道符

文件的操作

查找命令

grep

wc

awk

uniq

sort

列出你常使用的10条历史命令

用户管理

权限的操作

更改文件或目录的拥有者

vi/vim编辑器

下载

压缩和解压缩

zip unzip

软链接 ln

安装软件

数据备份

yum源切换

安装python

创建虚拟环境


Linux基础

命令提示符

[root@localhost ~]#
root 当前登录的用户
localhost 当前的主机名
~ 当前登录用户的家目录
# 超级管理员的家目录是/root   /俗称根目录 一切目录从根出发
# 普通用户的家目录  /home/普通用户名
# 家目录等同于windows系统上面c:\Users\用户名
# 表示管理员用户正在输入
$ 普通用户
​
su root # 切换到root用户
sudo # 以root身份执行命令

命令出错的情况

注意不要拼写错误

空格该有的不能少 没有的不能加

严格区分大小写

如果命令提示找不到 那么可能没有安装

yum -y install 安装软件的名字  # -y 不提示直接安装
yum -y install 软件1 软件2 软件3  # 空格隔开

常用的快捷键

  • tab > 补全命令和路径

  • ctrl+L clear > 清屏

  • ctrl+C > 强制终止

  • ctrl+A Home > 快速移动到本行命令的开头

  • ctrl+E End > 快速移动到本行命令的结尾

  • ctrl+U > 快速清空指针前命令

  • 上箭头 > 上一条命令

  • 下箭头 > 下一条命令

  • history > 显示所有的历史命令

  • !n > 接上面history 执行history第n条历史命令

  • ifconfig > 查看ip地址

  • ctrl+alt > 解放鼠标

常用的历史命令

whoami # 查看当前登录用户名
pwd # 显示当前位于哪个文件夹
ls # 列出所在文件夹下的子文件夹和子文件
​
cd /root # 切换到根目录下的root目录
[None@localhost tmp]$ # 当前位于tmp文件夹下面
​
init 6 | reboot # 重启
init 0 | poweroff | halt # 关机
shutdown -h now # 立马关机
​
cat /etc/redhat-release # 查看当前系统的版本
cat /proc/version # 查看linux版本

目录的操作

linux一切都是从根目录出发 /

yum -y install tree
# tree -L n 展示n级目录
[root@localhost /]# tree -L 1
.
├── bin -> usr/bin
├── boot
├── dev
├── etc # ☆主要的配置文件 
├── home # ☆普通用户的家目录
├── lib -> usr/lib # 等同于windows下面的system32
├── lib64 -> usr/lib64 # 64位操作系统 动态链接库
├── media
├── mnt # ☆用户手动挂载的目录
├── opt
├── proc
├── root #☆超级管理员用户的家目录
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp # 用来存放临时文件
├── usr # 用户安装软件存放的目录 等同于windows系统的program files
└── var # 日志 数据库文件都放到这里
​
除了tmp文件夹下面的 其他的文件夹删除一定要慎重!
.开头的文件是隐藏文件

帮助

任意命令 --help # 比如 ls --help
man 任意命令 # q退出 空格翻页 回车换行 上箭头往上翻
info 任意命令 # 帮助信息比man更丰富

ls

ls -a # 列出所有的文件 包含.开头的隐藏文件和文件夹
ls -l # 以列表的方式展示
ls -al # 以列表的方式展示所有的文件 等同于windows中以详细信息的方式展示目录下的所有文件
ll -a # 等同于 ls -al
​
lrwxrwxrwx.  1 root root    4 5月  19 23:17 haha -> /tmp
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
-rw-------.  1 root root   67 5月  19 22:43 .xauthMpWjiB
​
第一部分 l # d 目录 | - 普通文件 | l 链接 等同于windows系统的快捷方式 | b c 设备 硬盘 光驱等
第二部分 rwx    rwx     rwx   权限 # r:read 读 | w:write 写 | x:execute 执行 | - 没权限
       所有者  所属组   其他人
第三部分 1 # 文件链接数量
第四部分 root # 所有者
第五部分 root # 所属组
第六部分 4 # 文件大小
第七部分 5月  19 23:17 # 文件的修改时间 上一次的修改时间
第八部分 haha -> /tmp # 文件的名字

绝对路径

从根出发 /root 这种就是绝对路径

以当前的目录为参照物 相对于当前目录而言

相对路径

  • .当前路径

  • ..上一级目录

  • cd ~ 用户的家目录 | cd - 从哪切换过来的就回到哪去

  • cd 表示回到家目录

pwd

用来查看当前位于哪个目录下

创建目录

目录就是文件夹 文件夹就是目录

mkdir 目录名字 # 支持批量创建
mkdir 目录1 目录2 目录3 # 空格隔开
mkdir -p a1/a2/a3/a4/a5 # 递归创建5个文件夹
mkdir -p a/{b,c}/{d,e,f}
├── a
│   ├── b
│   │   ├── d
│   │   ├── e
│   │   └── f
│   └── c
│       ├── d
│       ├── e
│       └── f

删除目录

rmdir 目录名 # 目录必须空
rmdir -p a1/a2/a3/a4/a5 # 目录必须空 递归删除
# 如果目录非空 可以采用 rm -rf 目录名 | -f 强制 | -r 递归
rm -rf /* # 强制删除根目录下的所有 慎用!

管道符

前面的输出作为后面的输入

文件的操作

touch 文件名 # linux不区分后缀名 windows系统区分
touch 文件1 文件2 文件3 # 支持批量创建文件 空格隔开

echo '内容' > 文件名 # 也可以创建一个新文件 并写入内容 下一个内容会替换上一个
echo '内容' >> 文件名 # 将内容追加到该文件中

cat 文件 # 查看文件的内容 内容是从上往下输出
# > 替换 | >> 追加
cat 文件1 文件2 > 文件3

tac 文件 # 从下往上输出

head -n 文件 # 从上到下显示文件的前n行

tail -n 文件 # 从上到下显示文件的后n行
tail -f 文件 # 动态监视文件的后几行内容 只能接受通过 '内容' >> 文件 这种追加过来

watch # 实时显示整个文件的内容
watch -d -n 秒数 cat 文件名 # -d 变化的部分高亮显示 | -n 指定多少秒刷新一次

more 文件名 # 按页展示 空格键翻页 | 回车换行 | 不支持前翻 | Q 退出

less 文件名 # 按页展示

find [路径] [参数] 文件名
find -name 按照文件名查找 # find / -name 11*
find -iname 按照文件名查找 # 跟上面区别在于iname不区分名字大小写
find -mtime +/- n # + 超过 | - 以内 | n 表示天
find -user # 根据所属用户查找 find / -user None --> 查找根目录下所属用户是None的
find -size +/- c k M G # c:字节 k:kb M:mb G:gb
find -maxdepth # 根据目录的深度查找

查找命令

which 命令 # which python
whereis 命令 # whereis python

grep

linux的正则表达式

[root@localhost ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

grep '马' 10.csv
-i 忽略大小写 | -c 只显示匹配行的数量 | -r 递归查找子目录 | -n 显示行号 
-w 只匹配单词 不匹配单词的一部分 | -E 正则表达式搜索
--color 单独的颜色 | --include '*.py' 仅仅搜索 .py 文件 | --exclude '*.py' 排除 .py 文件

wc

[root@localhost ~]# cat /etc/passwd | grep -E '^r' | wc -l # 查看行数
5

awk

一行行的读取文件 默认以空格为分隔符 对切开的部分进行处理

 awk -F ':' '{print $3, $4}' /etc/passwd
 
 awk -F ':' '{sum += $3};END {print sum}' /etc/passwd
 # 根据:进行切割 然后拿到第三列 求第三列的和

uniq

独一无二

一般是配合sort来用

-c 每行前面显示出现的次数 编号
-d 只输出重复的行
-D 输出重复的所有行
-i 忽略大小写

sort

也是以行为单位

  • -k 按照指定的列排序

  • -n 按照数值排序

  • -t 指定分隔符

  • -r 逆向排序

cat /etc/passwd | sort -r # 默认按照字母进行排序

cat /etc/passwd | sort -k 3 -t ':' -n # t指定':'分割 第三列进行排序 -n 指定按照数值排序

列出你常使用的10条历史命令

history | awk '{print $2}' | sort | uniq -c | sort -nr | head -10

用户管理

useradd 用户名 # 添加用户之后 会在/etc/passwd添加一条记录 并且/home下也会创建一个以用户名为命名的文件夹
root:x:0:0:root:/root:/bin/bash
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

第一部分 用户名
第二部分 密码  # 存在于/etc/shadow
第三部分 用户ID
第四部分 所属组ID
第五部分 备注信息
第六部分 用户的家目录
第七部分 /bin/bash 									/sbin/nologin
		只要你是bin/bash 可以通过 su 用户名的方式登录	表示不能通过 su 用户名的方式登录
		
userdel 用户名 # 默认只删除数据库中的记录 不删除家目录
userdel -r 用户名 # 删除用户家目录	

passwd 用户名 # 修改密码 会有提示密码过于简单 不用管继续输入
passwd root # 管理员才可以修改管理员

sudo组 比普通用户权限大 比超级管理员权限小
usermod -a -G sudo 用户名 # 将用户添加到sudo组
# -a 是add添加的意思 | -G 附属组

权限的操作

rwxr--r--

r read 读 | w write 写 | x execute 执行 | - 没有权限
rwx 所有者 | r-- 所属组 | r-- 其他用户
rwx 111 | r 100 4 | w 010 2 | x 001 1 | - 000 0

chmod 权限 文件或目录
u 拥有者 | g 所属组 | o 其他用户 | a 所有人 = u + g + o
+ 在原来基础上增加 | - 在原来基础上减少		也可以对权限重新赋值

chmod o+x,g+w,u+x 文件或者目录 # 拥有者增加执行的权限 所属组增加写入的权限 其他用户增加执行的权限
chmod a-x 文件或目录 # 所有人减去执行的权限
chmod a=rwx a.txt

# 755 rwx r-x r-x 新建一个文件夹 默认的权限
chmod 777 a.txt

chmod -R 权限 目录 # 目录及子目录 子文件都跟着改

更改文件或目录的拥有者

chown 用户名 文件名或目录名 # 更改文件或目录的拥有者
chown -R 用户名 文件名或目录名 # 递归修改
chown 用户名:组名 文件名或目录名 # 修改所属用户和所属组

chattr
当一个文件 如果只能往里写 可以读 但是不能修改权限 不能删除的时候 这个文件需要申请保护
+ -
i 给文件增加或去除只读属性 | a 只能追加数据 不能修改和删除

只能对文件进行保护

chattr +i 文件 # 这个文件只能读 不能写 不能删除 不能修改权限 想删除 修改权限 只能chattr -i
chattr +a 文件 # 只能 echo >> 追加的方式写入内容 不能编辑 不能删除 不能修改权限
chattr -a 文件 # 取消对文件的保护

vi/vim编辑器

vim是vi的升级版

  • 命令模式

  • 编辑模式

  • 底部命令模式

vim test.txt	命令模式 ---iao---> 编辑模式 ---esc---> 命令模式
				命令模式 ---/?:---> 底部命令模式

!v # 打开最近使用vim打开的文件
vim test.txt +n # 将光标定位到第n行
vim test.txt +  # 将光标定位到最后一行

编辑模式

按键作用
i光标位置前面插入元素
a光标后面位置插入元素
o下一行插入元素
O上一行插入元素
s删除光标当前位置的字符 进入输入模式
S删除光标所在行 进入输入模式
esc回到命令模式
I在行首输入元素
A在行尾输入元素

命令模式

按键作用
ZZ(shift + zz)保存退出
h
j
k
l
yy复制一行
nyy复制n行
p粘贴一次
np粘贴n次
dd删除一行
ndd删除n行
gg回到第一行 所有行的开头
ngg定位到第n行
G回到最后一行 所有行的结尾
u撤销上一次的操作
ctrl + r反撤销
.重复上一次的操作
shift+6 / home / ^ / 0快速回到本行的行首
shift+4 / end / $快速回到本行的结尾
shift+9一个段落的开头
shift+0一个段落的结尾
nx向右删除n个字符
nX向左删除n个字符

底部命令模式

英文输入法 : / ? 由命令模式进入底部命令模式

按键作用
:w保存
:q退出
:wq保存并退出
:w! / :q! / :wq!! 强制
:x! 等同于 :wq!强制保存并退出
:set nu显示行号
:set nonu取消显示行号
:n快速将光标定位到第n行
/ 查找的内容n 从上往下找 / N 从下往上找
? 查找的内容n 从下往上找 / N 从上往下找
:s/要查找的字符串/要替换的字符串光标所在的行 而且只替换第一个关键词
:s/要查找的字符串/要替换的字符串/g光标所在的行的关键词全部替换
:%s/要查找的字符串/要替换的字符串替换全文每一行的第一个关键词
:%s/要查找的字符串/要替换的字符串/g全文每一行的所有的关键词全部替换
:n1,n2s/要查找的字符串/要替换的字符串/gn1到n2行的指定字符串关键词全部替换

特殊符号 / 前面加上 \ 进行转义

下载

压缩和解压缩

windows压缩格式

  1. rar

  2. zip

  3. 7zip

  4. iso

linux

  1. zip

  2. gz tgz

  3. bz2

  4. xz

gz

gzip

gzip 文件1 文件2 ... 文件n # 支持批量压缩文件 原文件被替换 .gz 后缀
gzip 不能压缩目录
gzip -d # 支持批量解压缩 .gz的源文件不在了

bz2

bzip2

bzip2 文件1 文件2 ... 文件n # 支持批量压缩文件 原文件被替换 .bz2 后缀
bzip2 不能压缩目录
bzip2 -d # 支持批量解压缩 .bz2的源文件不在了

xz

xz

xz -z 文件1 文件2 ... 文件n # 支持批量压缩文件 原文件被替换 .xz 后缀
xz 不能压缩目录
xz -d # 支持批量解压缩 .xz的源文件不在了

tar

打包命令 上面只能压缩文件 不能压缩目录

有了 tar 之后 先打包再压缩

-c 打包
-v 显示打包的过程
-f 指定文件
-x 解包

tar -cvf 压缩文件名 1.txt 2.txt 3.txt
tar -xvf 压缩文件名 haha.tar

# 上面仅仅是打包 没有压缩

-z:gz对 tar 进行压缩解压缩
-j:bz2对 tar 进行压缩解压缩
-J:xz对 tar 进行压缩解压缩

tar -zcvf 名字.tar.gz 文件 目录 文件 目录 # 使用gz 的方式 打包并压缩文件或者目录
tar -zxvf 名字.tar.gz # 使用gz 的方进行解包并解压缩  


tar -jcvf 名字.tar.bz2 文件 目录 文件 目录 # 使用bz2 的方式 打包并压缩文件或者目录
tar -jxvf 名字.tar.bz2 # 使用 bz2 的方进行解包并解压缩  


tar -Jcvf 名字.tar.gz 文件 目录 文件 目录 # 使用xz 的方式 打包并压缩文件或者目录
tar -Jxvf 名字.tar.gz # 使用xz 的方进行解包并解压缩

zip unzip

yum -y install zip unzip

软链接 ln

就是一个windows的快捷方式

ln -s 源文件 目标文件

ln -s /usr/bin/python /root/快捷方式的名字

python 等同于 ./root/快捷方式的名字  # ./等同于函数的() 也就是执行的意思

安装软件

  • rpm

    • 像windows安装软件一样 需要下载rpm包(windows系统是exe包)

    • 优点:简单

    • 缺点:要求严格按照安装顺序 因为软件和软件之间有依赖关系

    • abcd:b依赖于a c依赖于b d依赖于c

    • 先下载rpm包 然后切换到包所在的目录 rpm -ivh ***.rpm

    • Rpmfind mirror > 查找rpm包的网址

  • yum

    • 自动识别依赖关系 并且自动下载依赖包并自动安装

    • 安装的还是rpm包

    yum -y install 包名 # 不用提示直接下载
    yum list # 列出已经安装的包列表
    yum -y remove 包名 # 删除指定的包
    yum -y update 包名 # 更新指定的包
  • 编译安装

    linux 软件都是c和c++写的 属于底层语言编写 需要编译

    缺点:麻烦

    优点:性能最好

    1. 安装必备依赖库

    2. 下载软件 gz bz2 xz tgz

    3. 解包并解压缩

    4. 配置 软件装在哪里 启动哪些选项 依赖于哪些选项等

      ./configure

      --prefix 指定安装在哪里 /usr

      no- 禁用选项

      --with 依赖于哪些模块

      --enable 启用哪些选项

    5. 编译

      make

    6. 安装

      make install

    make && make install

数据备份

  • cp 拷贝

    • cp 文件 文件1 # 复制文件一份 名字为文件1

    • cp -r 目录 新目录 # 复制目录为新目录

  • mv 移动 重命名

mv 文件1 新名字 # 同一个目录下面 相当于重命名
mv 文件1 其他目录 # 剪切
不同目录移动 也可以指定移动后的文件的新名字

yum源切换

1. cat /etc/redhat-release # 查看你系统的版本
# 将默认的文件进行备份
2. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载阿里云镜像文件
3. wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
4. yum clean all # 清空缓存区
5. yum makecache # 生成缓存

安装python

  1. 安装依赖

    yum -y install gcc gcc-c++ openssl-static
  2. 下载python\openssl安装包

    wget -c https://www.openssl.org/source/old/1.1.1/openssl-1.1.1e.tar.gz --no-check-certificate
    wget -c https://www.openssl.org/source/old/1.1.1/openssl-1.1.1e.tar.gz
    tar -zxvf openssl-1.1.1e.tar.gz # 解包并解压缩
  3. 安装openssl

cd openssl-1.1.1e # 切换到解压后的openssl文件夹
./config --prefix=/usr/local/openssl no-zlib # 配置安装路径及禁用模块
make && make install # 编译及安装
  1. 修改openssl软链接

rm -rf /usr/include/openssl/ # 删除原来的命令 用安装好的进行替换(软链接)
ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl
rm -rf /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1

rm -rf /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1  /usr/lib64/libcrypto.so.1.1

rm -rf /usr/bin/openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

echo '/usr/local/openssl/lib' >> /etc/ld.so.conf

cd ~ 

[root@localhost ~]# openssl version
  1. 安装python

cd Python-3.7.9/

./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl

make && make install
  1. 查找python所在的位置

which python

cd /usr/bin 
ls -al | grep python # 发现 python-> python2 python2-> python2.7

rm -rf /usr/bin/python

ln -s /usr/local/python3/bin/python3 /usr/bin/python

cd ~  # 切换到家目录 

测试:

[root@localhost ~]# python
Python 3.8.0 (default, May 23 2022, 16:40:42) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> 

以上证明没有问题  


上面没有问题 但是 yum 出问题了 
vim /usr/bin/yum 

第一行 将  #!/usr/bin/python   改成#!/usr/bin/python2.7 
保存并退出  

vim /usr/libexec/urlgrabber-ext-down
#! /usr/bin/python 改成 #! /usr/bin/python2.7
保存并退出 
vim /usr/bin/yum-config-manager

#!/usr/bin/python -tt  改为  #!/usr/bin/python2.7 -tt



将pip 进行配置 跟 python配套  

/usr/bin 下面的命令 可以直接输入  
rm -rf /usr/bin/pip 
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip


# 设置国内pip 源  
mkdir -p ~/.pip

vim ~/.pip/pip.conf

[global]
timeout = 60
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com


保存并退出 
:wq



pip install requests 

pip install --upgrade pip # 更新一下pip  warning 黄色 可以忽略 error 红色 

创建虚拟环境

windows

python -m pip install --upgrade pip 
pip install virtualenvwrapper-win 

mkvirtualenv 环境的名字  # 创建一个新的虚拟环境 
deactivate # 退出当前的虚拟换景 

lsvirtualenv # 列出使用mkvirtualenv创建的所有虚拟环境 
workon 虚拟环境名字  # 进入执行的虚拟环境 

查看虚拟环境所在的位置 

1.先进入指定的虚拟环境
C:\Users\neyo>workon python3_crawl
2.cdvirtualenv 
(python3_crawl) C:\Users\neyo>cdvirtualenv
(python3_crawl) C:\myvirtualenv\python3_crawl>

# C:\myvirtualenv\python3_crawl 这就是 python3_crawl 所在的位置

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值