此文章主要针对ubantu22.04.1以及CentOS7中常用的命令和问题做汇总。
ubantu、CentOS安装:去国内镜像源下载即可,地址如下:
中科大源:http://mirrors.ustc.edu.cn/
清华源:https://mirror.tuna.tsinghua.edu.cn/
在VMWare中安装时,根据操作执行最小安装即可,注意在安装ubantu时,如果键盘布局那个直接跳过,然后在安装过程中如果不想等待,当skip按钮亮时,点击直接跳过就好,还有一个就是安装过程中遇到飘红的安装硬盘分区选择哪一项,按照默认的执行就好。
在安装完成后,可能会遇到以下问题,就是明明自己的Windows网络连接是正常的,但是右下角图标却显示没网络,这个问题去打开网络适配器,然后诊断一下Windows的网络连接,然后重启电脑就可以了,但是过一段时间又会不对,所以直接在更改适配器选项中,把所有的VMware网络禁用即可。
如果用filezilla或其他连接虚拟机,装ssh服务。
sudo apt-get install openssh-server
sudo apt-get install openssh-server
安装完成后,如果需要用Xshell连接ubantu,如果在连接过程中发现了 如下问题
先检查用户名和密码是否正确,记住,不论ubantu的用户名中是否存在大写,在Xshell中输入时必须全部小写,如果还是不行,看下面的操作。
这是因为sshd默认设置不允许root用户用密码来远程登录的,需要修改配置文件。
sudo vim /etc/ssh/sshd_config
将
PermitRootLogin prohibit -password
修改为
PermitRootLogin yes
然后保存并退出
systemctl restart sshd # 重启sshd
sudo /etc/init.d/ssh restart # 重启ssh服务
此处还有一个大坑,在完成上述配置后还是拒绝密码,说明一定是用户名或者密码错了 ,如果root的用户名是自定义的,记得在输入用户名时全部小写,例如我的Ubantu用户名时Ethan,在Xshell中用户名填Ethan就显示拒绝,填ethan就会成功进入。
sudo apt update (更新数据)
sudo apt upgrade(升级)
sudo apt install net-tools
安装不同版本python sudo apt-get install python3.5-dev
卸载pip包 sudo apt-get remove python3-pip
python3更新pip python3 -m pip install --upgrade pip
linux下切换python版本
首先看一下有没有关于pyhton的可选项
update-alternatives --display python
update-alternatives #错误: 无 python 的候选项
那首先先建立python的组,并添加Python2和Python3的可选项
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 # 添加Python2可选项,优先级为2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1 #添加Python3可选项,优先级为1
选择python版本
sudo update-alternatives --config python
基于用户修改python版本的方法
alias python='/usr/bin/python3.5'
source ~/.bashrc(或者 . ~/.bashrc)
常用的快捷键整理
ubantu:
Ctrl + Alt + T:打开终端
Ctrl + Shift + T:在同一个窗口新建终端标签页
Ctrl + Shift + W:关闭标签页
Ctrl + Shift + N:新建终端窗口
Ctrl + Shift + Q:关闭终端窗口
Ctrl + D:关闭标签页
Ctrl + L:清除屏幕
Ctrl + P:显示上一条历史命令
Ctrl + N:显示下一条历史命令
Ctrl + J/M:回车(同enter键功能)
Tab:命令或文件名自动补全
Ctrl + Win + ↑:最大化当前窗口
Ctrl + Win + ↓:还原/最小化当前窗口
Ctrl + Win + D:最小化所有窗口
├── bin -> usr/bin # 用于存放二进制命令
├── boot # 内核及引导系统程序所在的目录
├── dev # 所有设备文件的目录(如磁盘、光驱等)
├── etc # 配置文件默认路径、服务启动命令存放目录
├── home # 用户家目录,root用户为/root
├── lib -> usr/lib # 32位库文件存放目录
├── lib64 -> usr/lib64 # 64位库文件存放目录
├── media # 媒体文件存放目录
├── mnt # 临时挂载设备目录
├── opt # 自定义软件安装存放目录
├── proc # 进程及内核信息存放目录
├── root # Root用户家目录
├── run # 系统运行时产生临时文件,存放目录
├── sbin -> usr/sbin # 系统管理命令存放目录
├── srv # 服务启动之后需要访问的数据目录
├── sys # 系统使用目录
├── tmp # 临时文件目录
├── usr # 系统命令和帮助文件目录
└── var # 存放内容易变的文件的目录
cd .. | 返回上一级目录 |
cd ~ cd |
返回home目录 |
cd / | 返回根目录 |
cd - | 返回上次工作的目录 |
cd 路径 | 返回指定路径 |
clear | 清空屏幕 |
(1) pwd 查看当前目录所在位置
(2) ll 查看当前目录下内容
(3) ls 查看当前目录下文件信息
-l | 以列表的方式显示 |
-h | 以大小单位显示,默认是字节(需要配合-l来使用) |
-a | 显示隐藏文件和隐藏目录 |
-l --block-size=MB | 以MB来显示文件大小 |
(4) tree 以树状形式返回目录结构
示例:tree opt/ 把opt目录及其子目录按照树状形式返回
权限更改
r | 读取权限,数字代号为 4 |
w | 写入权限,数字代号为 2 |
x | 执行权限,数字代号为 1 |
- | 不具有任何权限,数字代号为 0 |
文件所属用户为User | 简写为u |
文件所属组为Group | 简写为g |
其他用户为Other Users | 简写为o |
所有人为all Users | 简写为a |
增加权限 | + |
删除权限 | - |
设定权限 | = |
方法一:通过字母来更改权限
chmod u+r a.txt 给user添加读取权限
chmod u-w,g+x a.txt 删除user写入权限,并给group加执行权限
方法二:通过数字来更改权限
chmod 777 a.txt 解开a.txt的所有权限,7是4+2+1,相当于解开所有权限
命令 | 说明 | 示例 |
mkdir 目录名 | 创建目录 | mkdir AAA |
mkdir 目录名/目录名 -p | 创建嵌套目录 | mkdir AA/BB/CC -p |
touch 文件名 | 创建文件 | touch test.txt |
rmdir 目录名 | 删除空目录 | rmdir AAA |
rm 目录名(文件名) 参数: -f 忽略不存在文件,不提示 -i 每次删除前进行提示 -l 删除递归目录或超过3个文件时进行提示 --interactive[=WHEN] 从不提示,没WHEN时总是提示 --preserve-root 保护根目录不被删除 --no--preserve-root 不保护根目录 -r,-R,--recursive 删除递归目录及内容 -v,--verbose 显示删除时的详细工作内容 |
删除目录(文件) | rm -rf AAA |
cp -r 目录 新目录 参数: -r 表示递归copy目录下的内容 -i 交互式提示 -v 显示copy后的文件描述 -a 保留文件原有权限 cp 文件 |
拷贝目录、文件 |
cp -r AAA /opt cp test.txt |
cp -r aaa /opt/bbb 将aaa目录copy到/opt目录下,并改名为bbb |
拷贝并改名 | |
mv 目录名(文件名) 新的目录名(新的文件名) | 重命名目录、文件 |
mv AAA AA |
mv /aaa /bbb 将根目录下的aaa移动到bbb,如果bbb不存在,则会重命名 |
移动目录(文件) | |
mv aaa /opt/bbb 将当前目录下的aaa移动到/opt目录下,并改名为bbb |
移动并改名 | |
mkdir {dirA,dirB} |
批量创建目录 批量创建文件 |
find / -name 'b' 查询根目录下(包括子目录),名为b的目录和文件
find / -name 'b*' 查询根目录下(包括子目录),名以b开头的目录和文件
find . -name '*.pyc' -exec rm -rf {} \ 递归删除.pyc格式的文件
find . -name "*" -size 145800c -print 打印当前文件夹下指定大小的文件
find . -name "*" -size 145800c -exec rm -rf {} \ 递归删除指定大小的文件(145800)
find . -name "*" -size 145800c -print -exec rm -rf {} \ 递归删除指定大小的文件,并打印出来
. | 从当前目录开始递归查找 |
-name '*.exe' | 根据名称查找,查找所有以.exe结尾的文件夹或者文件 |
-type f | 查找类型为文件 |
输出查找的文件目录名 | |
-size 145800c | 指定文件的大小 |
-exec rm -rf {} \ | 递归删除(前面查询出来的结果) |
> | 如果文件存在会覆盖文件中内容,相当于文件操作中的'w' |
>> | 如果文件存在会追加写入文件末尾,相当于文件操作中的'a' |
只要在终端能显示信息的命令都可以使用重定向,例如
ls -a > /opt/test.txt 将当前目录中的信息以w的方式写入opt目录下的test.txt文件中。
cat a.txt | 查看文件的最后一页内容 |
more a.txt | 从第一页开始查看文件内容,按回车键一行一行进行查看, 按空格键一页一页进行查看,q退出 |
less a.txt | 从第一页开始查看文件内容,按回车键一行一行的看,按空格键一页一页的看, 按键盘上下方向键显示上下内容,支持使用PageDown和PageUp翻页,q退出; 它不会读取整个文件,所以速度比more快,并且退出后不会在shell中留下刚刚显示的内容 |
head a.txt 参数:-q 隐藏文件名 -v 显示文件名 -c <字节> 显示字节数 -n <行数> 显示的行数 |
查看文件中前10行内容 |
tail a.txt 参数: -f 循环读取 -n <行数> 显示行数 |
查看文件中后10行内容 |
grep [options] [pattern] file 命令 参数 匹配模式 被匹配的文件 参数:-v 排除匹配结果 -n 显示匹配行与行号 -i 不区分大小写 -c 只统计匹配的行数 -E 使用正则进行匹配 --color-auto 为grep过滤结果显示颜色 -w 只匹配过滤的单词 -o 只输出匹配的内容 |
grep abc a.txt 在a.txt中查找含有abc的行 此部分参考以下链接,详细示例请去该网页查询: https://blog.csdn.net/m0_50370837/article/details/125068528x |
文件分割split | 去该网址: https://blog.csdn.net/qq_43382735/article/details/122188277 |
原文链接:https://blog.csdn.net/lydms/article/details/101368670
可将指令连接起来,前一个指令的输出作为后一个指令的输入。
一些示例
grep 'error' email.log 从email.log文件中查询包含error的行
grep 'error' email.log | grep -o '\[0-9\]' 获取到error的行,并取[]含有数字的
ps -ef|grep tomcat |grep -v 并过滤掉含有当前进程
grep 123.txt | sed -n 's/\"//gw test01.txt' 替换后将数据保存在文中
grep 'input' 123.txt | awk -F ',' '{print $2}' | sed 's/\"//g; s/,/\n/g' | awk -F ":" '{print $1 >> "test01.txt"}'
将文件123.txt,按,切分,去除",按:切分后,将第一列存到文件test01.txt中
使用管道注意的要点
(1)只处理前一个命令正确输出,不处理错误输出。
(2)右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
(3)sed,awk,grep,cut,head,top,less,more,c,join,sort,split等
8. echo
主要用来在屏幕上输出字符。
参数: -n 表示输出以后不换行
-e 表示将一些特殊字符转义,特殊字符如下:
硬链接:
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。如果为f1文件建立一个硬链接f2,那么他们的inode 节点号是一样的。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软链接:
类似于Windows中的快捷方式。如果为f1文件创建一个软链接f3,它俩的节点号是不一样的,并且当删除了f1文件后,f3会变成一个无效的链接。
Linux默认支持的压缩格式:.gz,.bz2,.zip。
.gz和.bz2的压缩包需要使用tar命令来压缩和解压缩。
.zip的压缩包需要使用zip命令来压缩,使用unzip命令来解压缩
tar命令 ,参数如下所示:
独立参数(只能出现一个) | 说明 |
-c | 创建打包文件 |
-x | 解包 |
-t | 查看内容 |
-r | 向压缩文件末尾追加文件 |
-u | 更新原压缩包中的文件 |
必须参数(必须出现的参数) | 说明 |
-f | 指定文件名称,必须紧紧跟着参数放 |
附加参数(可出现多个) | 说明 |
-v | 显示打包或解包的详细信息 |
-z | 压缩或解压缩(.gz) |
-j | 压缩或解压缩(.bz2) |
-C(解压专用,独立使用) | 解压缩到指定目录 |
-Z | 有compress属性的 |
-O | 将文件解开到标准输出 |
一些示例:
tar -cf all.tar *.jpg 将所有.jpg的文件打成一个名为all.tar的包
tar -rf all.tar *.gif 将所有.gif的文件增加到all.tar的包里面去
tar -uf all.tar logo.gif 更新原来tar包all.tar中logo.gif文件
tar -tf all.tar 这条命令是列出all.tar包中所有文件
tar -xf all.tar 这条命令是解出all.tar包中所有文件
tar -czf jpg.tar.gz *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,
生成一个gzip压缩过的包,名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,
生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,
生成一个umcompress压缩过的包,命名为jpg.tar.Z
zip命令:压缩成.zip格式的文件
zip命令参数 | 说明 |
-b | 指定存放文件的目录; |
-d | 删除压缩文件内指定的文件; |
-f | 更新压缩包的文件; |
-m | 将文件压缩并加入压缩文件后,删除原始文件; |
-q | 不显示执行过程; |
-r | 递归处理,将指定目录下的所有文件和子目录一并处理; |
-v | 显示指令执行过程或显示版本信息(默认选项); |
-sf | 显示文件; |
unzip命令:解压缩.zip格式的文件
unzip命令 | 说明 |
-d | 后接目录名,把文件解压到目录中。 |
-f | 更新归档中的文件,没有的新增。 |
-l | 列出归档中的文件。 |
-p | 文件解压到管道,不打印输出。 |
-t | 测试归档数据。 |
-T | 设置归档的时间戳与最新文件的一致。 |
-u | 更新文件,如果不存在则新建文件。 |
-v | 展示详细信息或展示版本信息。 |
-x | 将后接的文件除外。 |
一些示例:
zip test.zip *.txt 将单个文件压缩
zip -r test.zip lib/ 将lib目录进行压缩
zip -r test.zip a.txt b.txt 将多个文件进行压缩
unzip test.zip 解压test.zip
unzip test.zip -d AA 解压test.zip至AA目录中
vim是Linux自带的文本编辑器,用来修改文件,开启时长按shift进入管理界面,按e换界面。
三种工作模式:
1. 命令模式:用于对文章内容的操作,如复制,粘贴,删除,光标定位
2. 插入模式:用于编写文件
3. 末行模式:用途保存文件,读写文件,复制,粘贴,光标定位,vim参数设置等
4. esc:在不同模式当中切换的,退到命令模式
在命令行模式下操作
:w | 写入 |
:q | 退出 |
:q! | 强制退出 |
:wq | 保存并退出 |
u | 命令行模式下撤销 |
Delete和x | 删除光标压住的字 |
dd | 删除整行 |
3dd | 删除3行 |
yy | 复制一行 |
3yy | 复制3行 |
p | 粘贴,大写粘贴在上,小写粘贴在下 |
h,j,k,l | 负责上下左右移动 |
ctrl+f | 前一页 |
ctrl+b | 后一页 |
o | 移动到行的第一个字符 |
^ | 移动到行的第一个可见字符处 |
$ | 移动到行的最后一个字符处 |
G(shift+g) | 移动到文件的最后一行 |
gg | 移动到文件的第一行 |
7G | 移动到第7行 |
:set nu | 打开行号标识 |
7K | 从当前行向前移动7行 |
w | 前移一个单词 |
b | 后移一个单词 |
/word | 在光标前查找word |
?word | 在光标后查找word |
在INSERT模式下操作,随便按下面六个字母中的一个就可以进入INSERT模式:
i | 在光标之前插入 |
a | 在光标之后插入 |
I | 在光标所在行的行首插入 |
A | 在光标所在行的行末插入 |
o | 在光标所在行的上面插入一行 |
O | 在光标所在行的下面插入一行 |