linux基础
linux下的目录下的目录与文件不能重名
-
pwd 显示当前路径
-
touch 创建一个文件,如果文件存在,则可以修改文件的末次修改时间
-
ls 查看目录下的内容
- ls -a 显示指定目录下所有子目录与文件,包括隐藏文件
- ls -l 以列表方式显示文件的详细信息
- ls -h 配合-l以人性化方式显示文件大小
-
ls -a 显示隐藏目录
-
cd 切换目录
-
mkdir 创建一个文件夹
- mkdir -p 递归创建目录
-
rm 删除一个文件
- rm -f 强制删除,忽略不存在的文件,无需提示
- rm -r 递归的删除文件夹下的文件,删除文件夹必须要加此参数
-
rmdir 删除一个空的文件夹
-
cp 拷贝文件
-
mv 移动文件
-
clear 清屏
-
command –help 查看文档帮助命令
-
man command 查看详细文档帮助命令
ls通配符的使用
-
*代表任意字符
-
?代表任意一个字符,必须是一个
-
[] 表示可以匹配字符组中的任意一个
-
[a,b,c] 表示匹配a,b,c中的任意一个
-
[a~f] 表示匹配a到f范围内任意一个字符
cd的使用
-
cd 切换到用户的主目录
-
cd ~ 切换到用户的主目录
-
cd – 在最近工作的两个目录进行切换
-
cd . 保持当前的目录不变
-
cd … 切换到上级目录
拷贝和移动文件
-
tree 以树状查看目录结构
- tree -d 只显示目录
-
cp 源文件 目标文件 复制文件
- cp -i 覆盖文件前提示
- cp -r 复制一整个目录
-
move 源文件 目标文件 移动文件或给文件或目录重命名
- mv -i 覆盖文件前提示
查看文件内容
-
cat 查看文件内容,创建文件,文件合并,追加文件内容等功能
- cat -b 对非空输出行编号
- cat -n 对输出的所有行编号
-
more 分屏显示文件内容
- 空格键 显示手册页的下一屏
- Enter键 一次滚动手册页的一行
- b 回滚一屏
- f 前滚一屏
- q 退出
- /word 搜索word字符串
grep查找
- grep 搜索文本 文件名 搜索文本文件内容
- grep -n 显示匹配行及行号
- grep -v 显示不包含匹配文本的所有行(类似于求反)
- grep -i 忽略大小写
- ^a 行首,搜索以a开头的行
- ke$ 行尾,搜寻以ke结束的行
- 如果搜索的单词中有空格,则需要用””把单词引起来
echo和重定向和管道
- echo hello world 会在终端中显示参数指定的文字,一般和重定向一起使用
- 重定向, > 表示输出,会覆盖原有文件内容;>> 表示追加文件内容
- | 表示管道命令
- 命令1 | 命令2 表示执行完命令1之后的结果再执行命令2
关机
-
shutdown 选项 时间 关机,重新启动,默认一分钟之后完成
- shutdown -r 重新启动
- shutdown now 立刻关机
- shutdown -r now 立刻重新启动
- shutdown +10 系统再过10分钟之后关机
- shutdown 18:30 系统将在18:30的时候进行关机
- shutdown -c 取消 重新启动或关机
查看或配置网卡信息
- ipconfig 查看网卡配置信息
- ping ip地址 检测目标的ip地址是否导通
-
ssh [-p port] user@remote
- port 默认为22
- user为服务器名称
- remote 可以是ip地址,也可以是服务器别名
- 在进行xshell进行远程连接时,如果连接不上,那么就是unbuntu的ssh服务没有启动,再ubuntu终端中输入sudo apt-get install openssh-server,ps -e | grep ssh ,查看如果有sshd则说明已经启动成功,此时再用xshell连接即可。详情请参考https://www.cnblogs.com/yadongliang/p/8663146.html
-
scp -P port 源文件 user@remote:目标文件 远程拷贝文件
- -r 可以复制一个文件夹
- 在windows中进行远程文件交互,可以下载软件filezilla,以FTP格式进行传输,注意此时的端口号为21
- 在xshell中进行文件传输时,首先需要在unbuntu中安装lrzsz包,安装命令是 sudo apt-get install lrzsz,然后在ubuntu中操作,sz是把ubuntu中的文件下载到本地,rz是将本地的文件上传到unbuntu中。并且上传时不能有同名文件,否则会失败。
权限
- 使用 ls-l,对于终端中显示的界面,
| 目录 | 拥有者权限 | 组权限 | 其他用户权限 |
|---|---|---|---|
| – | rw- | rw- | r– |
| d | rwx | rwx | r-x |
d表示目录,r代表读,w代表写,x代表执行
- 修改权限 chmod +/-权限 文件名,例如 chmod +r hello.py,表示给hello.py增加读的权限
- 使用sudo 会进入到超级管理员root身份
组管理
- 在实际开发中,可以预先针对组设定好权限,然后将不同的用户添加到对应的组中,从而不用依次为 每一个用户设置权限
- 下面的操作均需加上sudo命令
- groupadd 组名 添加组
- groupdel 组名 删除组
- cat /etc/group 确认组信息
- chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组
用户管理
| 序号 | 命令 | 作用 | 说明 |
|---|---|---|---|
| 01 | useradd -m -g 组 新建用户名 | 添加新用户 | -m 自动建立用户家目录;-g 指定用户所在的组,否则会建立一个和同名的组 |
| 02 | passwd 用户名 | 设置用户密码 | 如果是普通用户,直接用passwd可以修改自己的账户密码 |
| 03 | userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
| 04 | cat /etc/passwd | grep 用户名 | 确认用户信息 | 新建用户后,用户信息会保存在/etc/passwd文件中 |
查看用户信息
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | id[用户名] | 查看用户的UID和GID信息 |
| 02 | who | 查看当前所有登陆的用户列表 |
| 03 | whoami | 查看当前登录的用户的账户名 |
-
usermod 可以用来设置用户的主组/附加组和登录shell,命令格式如下
-
主组:通常在新建用户时指定,在/etc/passwd的第四列GID对应的组
-
附加组:在/etc/group中的最后一列表示该组的用户列表,用于指定用户的附加权限
-
设置了用户的附加组之后,需要重新登录才能生效
-
usermod -g 组 用户名 修改用户的主组 usermod -G 组 用户名 修改用户的附加组 usermod -s /bin/bash 用户名 修改用户登录Shell -
默认添加的user用户是没有sudo命令的,可以用下面的命令为其添加sudo命令
- usermod -G sudo 用户名
- 当自己创建的用户,通过远程登录ubuntu时,其终端界面会默认是dash,没有颜色,而且上下键不能切换命令,此时我们需要在ubuntu下修改用户登录shell,使用usermod -s /bin/bash 用户名,重新远程连接即可。
切换用户
| 序号 | 命令 | 作用 | 说明 |
|---|---|---|---|
| 1 | su – 用户名 | 切换用户,并且切换目录 | – 可以切换到用户家目录,否则保持位置不变 |
| 2 | exit | 退出当前登录账户 |
- su 不接用户名,可以切换到root,但是不推荐使用,因为不安全
which
- 使用which 可以查看执行命令的所在位置,例如 which passwd
修改目录权限
| 序号 | 命令 | 作用 |
|---|---|---|
| 1 | chown 用户名 文件名/目录名 | 修改拥有者 |
| 2 | chgrp -R 组名 文件名/目录名 | 修改组 |
| 3 | chmod -R 755 文件名/目录名 | 修改权限 |
| 拥有者 | 组 | 其他 | ||||||
|---|---|---|---|---|---|---|---|---|
| r | w | x | r | w | x | r | w | x |
| 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
# 时间和日期
- date 查看当前系统时间
-
cal 查看日历
- cal -y 查看当前一年的日历
磁盘信息
- df -h 显示磁盘剩余空间
- du -h [目录名] 显示目录下的文件大小
- -h 以人性化的方式显示文件大小
进程信息
-
ps aux 查看进程的详细状况
- a 表示显示终端上的所有进程,包括其他用户的进程
- u 显示进程的详细状态
- x 显示没有控制终端的进程
-
top 动态显示运行中的进程并且排序
- 退出top,可直接输入q即可
- kill [-9] 进程代号 终止指定代号PID的进行,-9表示强行终止
- ps默认只会显示当前用户通过终端启动的应用程序
- 使用kill命令时,最好只终止当前用户开启的进程,不要终止root开启的进程,否则系统容易奔溃
find查找
-
find [路径] -name “文件名” 查找指定目录下的文件,包括子目录
- 学习的通配符照样可以使用在文件名中
- 如果不指定路径,则默认在当前文件夹下
ln软链接
-
ln -s 被链接的源文件 链接文件 创建一个文件的软链接,就类似于windows下的快捷方式
- 没有-s的创建的是一个硬链接,硬链接中两个文件占用相同的磁盘大小,工作中几乎不会创建硬链接
- 源文件要使用绝对路径,方便文件移动后可以继续使用
打包压缩
- tar是linux中最常用的备份工具,可以把一系列文件打包成一个大文件,也可以把一个打包的大文件变成一系列文件,tar只负责打包,不负责压缩,gzip负责压缩
-
打包文件
- tar -cvf 打包文件.tar 被打包的文件/路径
-
解包文件
- tar -xvf 打包文件.tar
- c 生成档案文件,创建打包文件
- x 解开档案文件
- v 列出归档解档的详细过程,显示进度
- f 指定档案名称,f后面一定是.tar文件,所以必须放选项最后。
- gzip是打包命令,后缀名为.gz,但是一般都是用tar打包之后,再用gzip压缩,所以压缩包的后缀名为.tar.gz
- tar 中有一个选项-z可以直接调用gzip,从而可以方便的实现压缩和解压缩的功能
- 命令格式 如下:
-
压缩文件
- tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
-
解压缩文件
- tar -zxvf 打包文件.tar.gz
-
解压缩文件到指定路径,目标目录必须存在
- tar -zxvf 打包文件.tar.gz -C 目标路径
- bzip2也是一种压缩,后缀名为.bz2,与gzip类似,只不过tar中调用bzip2使用-j,其他与gzip一样
apt软件安装
-
安装软件
- sudo apt install 软件包
-
卸载软件
- sudo apt remove 软件包
-
更新已安装的包
- sudo apt upgrade
VIM
| 命令 | 解释 |
|---|---|
| vim 文件名 | 创建或打开一个文件 |
| vim 文件名 +行数 | 快速定义到某一行,如果只写+号,则会定义到末尾 |
| i | 进入编辑模式 |
| Esc | 退出当前模式 |
| :w | 保存 |
| :q | 退出 |
| :wq | 保存并退出 |
| :q! | 强制退出 |
| 😡 | 保存并退出 |
| :e . | 会打开内置的文件浏览器,浏览当前目录下的文件,必须先保存当前文件 |
| :n 文件名 | 新建文件 |
| :w 文件名 | 另存为,但是会仍然编辑当前文件,并不会切换文件,必须先保存当前文件 |
| :sp[文件名] | 横向增加分屏 |
| :vsp[文件名] | 纵向增加分屏 |
| ctrl w w | 切换到下一个窗口 |
| ctrl w r | 互换窗口 |
| ctrl w c | 关闭当前窗口,但不能是最后一个窗口 |
| ctrl w q | 退出当前窗口,如果是最后一个窗口,则退出VIM |
| ctrl w o | 关闭其他窗口 |
| 先输入数字,在输入命令 | 让命令重复指定次数 |
| hjkl | 左下上右 |
| w | 向后移动一个单词 |
| b | 向前移动一个单词 |
| 0 | 回到行首 |
| ^ | 回到行首第一个非空白字符 |
| $ | 回到行尾 |
| gg | 移动到文件顶部 |
| G | 移动到文件末尾 |
| 数字gg | 移动到数字所在行数 |
| 数字G | 移动到数字所在行数 |
| :数字 | 移动到数字所在行数 |
| ctrl b | 向上翻页 |
| ctrl f | 向下翻页 |
| H | 移动到屏幕顶部 |
| M | 移动到屏幕中间 |
| L | 移动到屏幕底部 |
|
{ |
跳转到上一段的空行 |
| } | 跳转到下一段的空行 |
| % | 在成对的括号中进行匹配或切换 |
| mx | 添加标记x,x是a-z,A-Z中的任意一个字母 |
| ‘x | 直接定位到标记x的所在位置 |
| v | 进入可视模式,从光标位置开始按正常模式选择文本 |
| V | 进入可视行模式,选中光标经过完整的行 |
| ctrl v | 进入可视块模式,垂直方向选中文本 |
| 可视模式+移动命令 | 在可视模式下可以和移动命令连用 |
| ggVG | 选中所有文本 |
| u | 撤销 |
| ctrl r | 反撤销 |
| x | 删除光标所在字符,剪切,删除操作实际上就是剪切操作 |
| d(移动命令) | 删除移动命令对应的内容,剪切 |
| dd | 删除光标所在行,剪切 |
| D | 删除至行尾,剪切 |
| dw | 从光标位置删除到单词末尾 |
| d0 | 从光标位置删除到行首 |
| d} | 从光标位置删除到段尾 |
| ndd | 从光标位置向下删除n行 |
| d代码行G | 从光标位置删除到指定代码行 |
| d’a | 从光标所在行删除到标记a之间的所有代码 |
| y(移动命令) | 复制 |
| yy | 复制一行 |
| nyy | 复制n行 |
| p | 粘贴 |
| r | 替换光标字符 |
| R | 替换光标之后的行字符 |
| >> | 向右缩进4个字符,在可视模式V下,只需要按一个>号 |
| << | 向左缩进4个字符,在可视模式V下,只需要按一个<号 |
| . | 重复上次命令 |
| /str | 查找str |
| n | 查找下一个 |
| N | 查找上一个 |
| * | 向后查找当前光标坐在单词 |
| # | 向前查找当前光标所在单词 |
| :%s/旧文本/新文本/g | 查找并全局替换 |
|
先选中要替换文字的范围 然后输入:s/旧文本/新文本/g |
可视区域内进行替换 |
| :%s/旧文本/新文本/gc | 确认替换 |
| y | 替换 |
| n | 不替换 |
| a | 全部替换 |
| q | 退出 |
| i | 在当前字符前插入文本 |
| I | 在行首插入文本 |
| a | 在当前字符后添加文本 |
| A | 在行末添加文本 |
| o | 在当前行后面添加空行 |
| O | 在当前行前面添加空行 |
| ########## |
1、在命令模式下 2、输入10,表示要重复10次 3、输入i进入编辑模式 4、输入#也就是重复的数字 5、按下Esc返回到命令模式,返回之后vim就会把第3,4的操作重复10次 |
| 给多行代码添加注释 |
1、移动到要添加注释的第一行代码,按^来到行首 2、按ctrl v进入可视化模式 3、使用j向下选中要添加的代码行 4、输入I进入编辑模式,并在行首插入,注意,一定要是I 5、输入注释符号# 6、按下Esc返回命令模式 |