linux学习笔记
一:liunx基本语法
linux命令 | 全称呼 | 实际作用/功能 |
---|---|---|
ls | list | 查看当前文件夹下面的内容 |
pwd | print work directory | 查看当前工作目录 |
cd [目录名称] | changge directory | 切换文件夹 |
Touch [文件名] | touch | 如果文件不存在,则创建该文件 |
mkdir [目录名称] | make directory | 创建文件夹 |
rm [文件名] | remove | 删除文件 |
clear | clear | 清除当前屏幕上的内容 |
find [路径] -name “*.py” | 查找该路径下面的 .py 的文件,包括子目录 |
1. ls 列表详细使用方法
可以以 ls -xx 携带参数 查看更详细的内容 如 ls -a 查看当前目录下面的子目录与文件,包括隐藏文件
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
2. cd 切换的详细使用
命令 | 作用 |
---|---|
cd / | 回到根目录 |
cd .. | 回到上一级目录 |
cd . | 保持当前目录不变 |
cd - | 回到上次访问的目录中 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
3 . mkdir 新建文件夹详细使用
mkdir -p 1/2 含义:在当前文件夹下创建一个 1 文件夹,再在 1 文件夹下面创建2 文件夹。创建文件夹的文件夹
命令 | 含义 |
---|---|
mkdir -p | 递归创建目录 |
4 . rm 删除详细使用
使用 rm 命令要小心,因为文件删除后不能恢复
命令 | 含义 |
---|---|
rm -f | 删除文件或者目录,但是不提示 |
rm -r | 删除文件或者目录,需要确认 |
5. cp 拷贝详细使用
1:将 文件 za.txt 拷贝到 dir文件夹中
语法一:cp za.txt dir
语法二:cp -t dir za.txt
(推荐使用 语法一)
cp -r hello2.txt hello3.txt 在当前目录下复制hello2.txt
2: 整个 dir1 目录复制到目录 dir2 下
cp -r dir1/ dir2/
3:将dir1目录下的 hello.txt 拷贝到 dir2 中
单个文件拷贝: cp -r dir1/hello.txt dir2
多个文件拷贝: cp -r dir1/hello.txt dir1/hello2.txt dir2
多个文件拷贝: cp -r hello.txt hello2.txt hello3.txt ../dir1
4: 将文件拷贝到指定文件夹下 并重命名 原名:hello.txt。 拷贝后重命名:hello_copy.txt
cp dir1/hello.txt dir2/hello_copy.txt
5: 将dir1 目录下文件。拷贝到dir2中 新创建的dir1_copy 文件夹下面
cp -r dir1 dir2/dir1_copy
6: 拷贝的文件覆盖问题 可以添加参数进行控制
选项 | 含义 |
---|---|
-n | 不会发生覆盖问题 |
-i | 如果文件重复,提示是否覆盖 |
-b | 在覆盖前进行备份,备份文件名是原始文件名加上一个波浪线。 |
-u | 表示只有文件比较新的时候,才发生覆盖。(没看懂啥意思) |
7: 文件备份
cp --suffix=.bak file1 dir1
6. mv 移动的详细使用
1:将hello.txt 的内容 移动到 hello2.txt
mv hello.txt hello2.txt
2:将hello3.txt 移动到 上一目录下的 dir2 文件中。
hello3.txt 属于 dir1 文件夹。 dir1 与 dir2 同级目录
单个文件移动: mv hello3.txt ../dir2
多个文件移动: mv hello.txt hello2.txt ../dir2
移动遇到的覆盖问题
命令 | 含义 |
---|---|
-b | 当覆盖文件之前先行备份 |
-f | 当文件重复时时,不询问直接覆盖 |
-i | 当文件重复时,会询问是否覆盖: |
-u | 只有当源文件是最新更新时,才可以覆盖目标文件 |
7.rename 重命名的详细使用
1.将1.txt 格式更改成.doc
rename .txt .doc 1.txt
2.将1.doc 中的 1 更改成 a
rename 1 a 1.doc
3.将 a.doc 更改成wenjian.txt
rename a.doc wenjian.txt a.doc
命令使用总结
rename [更改之前部分] [更改之后部分] [文件名称]
8.相对路径与绝对路径
绝对路径:/usr/local
相对路径:../local
../ 表示上一级
9.tree 详细使用
1.简单介绍:tree命令以树状图列出目录的内容。
2.安装tree
yum install tree
3.基本使用
选项 | 含义 |
---|---|
-a | 现实所有的文件和目录 |
- C | 在文件和目录上显示色彩,加以区分 |
-d | 只显示文件夹 不显示文件 |
-D | 列出文件和目录更改时间 |
1.以树形结构列出 LinuxXueXi 文件夹 的 文件结构
tree LinuxXueXi/
2.只显示LinuxXueXi的 目录结构,不显示 文件
tree -d LinuxXueXi/
- 列出LinuxXueXi 文件和目录的更改时间。
tree -D LinuxXueXi/
4.只显示LinuxXueXi 文件夹的一级目录
tree -L 1 LinuxXueXi/
5.显示出LinuxXueXi 目录下面。文件目录的完整相对路径
tree -f LinuxXueXi/
10.nl 用来计算文件的行号
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
-p 在逻辑定界符处不重新开始计算。
1 基本使用
nl wenjian.txt #查看文件的行号 空行不显示行号
nl -b a wenjian.txt。 #空行也显示行号
nl -b t wenjian.txt。 #空行不显示显示行号
nl -n ln wenjian.txt #行号显示屏幕左边
nl -n rn wenjian.txt #行号显示屏幕右边
nl -n rz wenjian.txt #行号在自己栏位的最右方显示 且加 0
11 cut 从文件每一行中提取
命令 | 含义 |
---|---|
-b | 提取字节,英文单词 |
-c | 提取字符,中文单词 |
1.基本命令
cut -b 1 wenjian.txt #提取文件每一行第一个字符
cut -c 1,2 wenjian.txt #提取文件每一行第一个,第二个字符
cut -c 1-5 wenjian.txt #提取文件每一行第 1~5个字符
二:打包 揭包命令
打包文件
tar -cvf 打包文件.tar 被打包的文件/路径...
解包文件
tar -xvf 打包文件.tar
选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后 |
三: 软件安装
1 .安装软件
$ sudo apt install 软件包
2. 卸载软件
$ sudo apt remove 软件名
3 .更新已安装的包
$ sudo apt upgrade
四: cat 查看文件
1: 简单实用
查看 hello3.txt的文本内容
cat hello3.txt
2: 可选参数
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
五:more 的使用
1: 简单介绍
more 命令可以用于分屏显示文件内容,每次只显示一页内容
适合于 查看内容较多的文本文件
2: 可选参数
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter | 键 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
六:grep 使用
1 简单实用
Linux 系统中 grep 命令是一种强大的文本搜索工具
grep 允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。
2:可选参数
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(相当于求反) |
-i | 忽略大小写 |
3: 常用的查找模式
参数 | 含义 |
---|---|
^a | 行首,搜寻以 a 开头的行 |
ke$ | 行尾,搜寻以 ke 结束的行 |
七:系统信息相关命令
1:时间与日期
命令 | 作用 |
---|---|
date | 查看当前时间 |
cal | calendar 查看日历, -y 选项可以查看一年的日历 |
2:磁盘信息
命令 | 作用 |
---|---|
df -h | disk free 显示磁盘剩余空间 |
du -h [目录名] | disk usage 显示目录下的文件大小 |
3:进程信息
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细状况 |
02 | top | 动态显示运行中的进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程, -9 表示强行终止 |
4 :ps 使用参数
选项 | 描述 |
---|---|
-a | 显示所有终端机下执行的程序,除了阶段作业领导者之外。 |
a | 显示现行终端机下的所有程序,包括其他用户的程序。 |
-A | 显示所有程序。 |
-c | 显示CLS和PRI栏位。 |
c | 列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。 |
-C<指令名称> | 指定执行指令的名称,并列出该指令的程序的状况。 |
-d | 显示所有程序,但不包括阶段作业领导者的程序。 |
-e | 此选项的效果和指定"A"选项相同。 |
e | 列出程序时,显示每个程序所使用的环境变量。 |
-f | 显示UID,PPIP,C与STIME栏位。 |
f | 用ASCII字符显示树状结构,表达程序间的相互关系。 |
-g<群组名称> | 此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。 |
g | 显示现行终端机下的所有程序,包括群组领导者的程序。 |
-G<群组识别码> | 列出属于该群组的程序的状况,也可使用群组名称来指定。 |
h | 不显示标题列。 |
-H | 显示树状结构,表示程序间的相互关系。 |
-j或j | 采用工作控制的格式显示程序状况。 |
-l或l | 采用详细的格式来显示程序状况。 |
L | 列出栏位的相关信息。 |
-m或m | 显示所有的执行绪。 |
n | 以数字来表示USER和WCHAN栏位。 |
-N | 显示所有的程序,除了执行ps指令终端机下的程序之外。 |
-p<程序识别码> | 指定程序识别码,并列出该程序的状况。 |
p<程序识别码> | 此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。 |
r | 只列出现行终端机正在执行中的程序。 |
-s<阶段作业> | 指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。 |
s | 采用程序信号的格式显示程序状况。 |
S | 列出程序时,包括已中断的子程序资料。 |
-t<终端机编号> | 指定终端机编号,并列出属于该终端机的程序的状况。 |
t<终端机编号> | 此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。 |
-T | 显示现行终端机下的所有程序。 |
-u<用户识别码> | 此选项的效果和指定"-U"选项相同。 |
u | 以用户为主的格式来显示程序状况。 |
-U<用户识别码> | 列出属于该用户的程序的状况,也可使用用户名称来指定。 |
U<用户名称> | 列出属于该用户的程序的状况。 |
v | 采用虚拟内存的格式显示程序状况。 |
-V或V | 显示版本信息。 |
-w或w | 采用宽阔的格式来显示程序状况。 |
x | 显示所有程序,不以终端机来区分。 |
X | 采用旧式的Linux i386登陆格式显示程序状况。 |
-y | 配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。 |
-<程序识别码> | 此选项的效果和指定"p"选项相同。 |
–cols<每列字符数> | 设置每列的最大字符数。 |
–columns<每列字符数> | 此选项的效果和指定"–cols"选项相同。 |
–cumulative | 此选项的效果和指定"S"选项相同。 |
–deselect | 此选项的效果和指定"-N"选项相同。 |
–forest | 此选项的效果和指定"f"选项相同。 |
–headers | 重复显示标题列。 |
–help | 在线帮助。 |
–info | 显示排错信息。 |
–lines<显示列数> | 设置显示画面的列数。 |
–no-headers | 此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。 |
–group<群组名称> | 此选项的效果和指定"-G"选项相同。 |
–Group<群组识别码> | 此选项的效果和指定"-G"选项相同。 |
–pid<程序识别码> | 此选项的效果和指定"-p"选项相同。 |
–rows<显示列数> | 此选项的效果和指定"–lines"选项相同。 |
–sid<阶段作业> | 此选项的效果和指定"-s"选项相同。 |
–tty<终端机编号> | 此选项的效果和指定"-t"选项相同。 |
–user<用户名称> | 此选项的效果和指定"-U"选项相同。 |
–User<用户识别码> | 此选项的效果和指定"-U"选项相同。 |
–version | 此选项的效果和指定"-V"选项相同。 |
–widty<每列字符数> | 此选项的效果和指定"-cols"选项相同。 |
使用场景
ps -ef #显示所有当前进程
ps aux #显示所有当前进程
ps -ax #显示所有当前进程
ps -u pungki #根据用户过滤进程
ps -aux --sort -pcpu | less #根据 CPU 使用来升序排序
ps -aux --sort -pmem | less #根据用户过滤进程
ps -aux --sort -pcpu,+pmem | head -n 10 #查询全10个使用cpu和内存最高的应用
ps -C getty #通过进程名和PID过滤
ps -f -C getty #带格式显示的,通过进程名和PID过滤
ps -L 1213 #根据线程来过滤进程
ps -axjf(或pstree) #树形显示进程
ps -eo pid,user,args # 显示安全信息
ps -U root -u root u #格式化输出 root 用户(真实的或有效的UID)创建的进程
5:查看配置网卡信息
序 号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 |
02 | ping ip地址 | ping | 检测到目标 ip地址 的连接是否正常 |
6:远程登录
1: ssh 用户名@IP地址
ssh root@112.124.21.129
2:远程执行命令
在112.124.21.129主机上执行创建yuancheng 文件夹
ssh -t root@112.124.21.129 mkdir yuancheng
7:上传下载文件
**文件夹也是可以直接上传下载的**
1:上传
将当前目录下的 dir1 上传到 112.124.21.129主机下面 root /LinuxXueXi 文件夹下
单文件上传: scp -r dir1 root@112.124.21.129:/root/LinuxXueXi
多文件上传: scp -r dir1/hello.txt dir1/hello2.txt root@112.124.21.129:/root/LinuxXueXi
2:下载
将112.124.21.129主机下 root/LinuxXueXi 文件夹下的 1.txt。下载到本地/Users/liuguang/LinuxXueXi文件夹中
单文件下载: scp -r root@112.124.21.129:/root/LinuxXueXi/1.txt /Users/liuguang/LinuxXueXi
多文件下载: scp -r
root@112.124.21.129:/root/LinuxXueXi/hello2.txt
root@112.124.21.129:/root/LinuxXueXi/hello.txt //Users/liuguang/LinuxXueXi/dir3
3:可选择参数
参数 | 含义 |
---|---|
-1 | 强制scp命令使用协议ssh1 |
-2 | 强制scp命令使用协议ssh2 |
-4 | 强制scp命令只使用IPv4寻址 |
-6 | 强制scp命令只使用IPv6寻址 |
-B | 使用批处理模式(传输过程中不询问传输口令或短语) |
-C | 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) |
-p | 保留原文件的修改时间,访问时间和访问权限。 |
-q | 不显示传输进度条。 |
-r | 递归复制整个目录。 |
-v | 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 |
-c | cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh |
-F | ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。 |
-i | dentity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 |
-l | limit 限定用户所能使用的带宽,以Kbit/s为单位。 |
-o | ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式, |
-P | port 注意是大写的P, port是指定数据传输用到的端口号 |
-S | program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。 |
8:shut down
1.立刻关机
shutdown -h now
2:指定10分钟后关机,同时发送警告信息给登录用户
shutdown +10 "System will shutdown after 10 minutes"
3.消按照预定时间关机
shutdown -c
4.重新启动
shutdown -r now
5.指定时间关机
shutdown -h 22:00
6.常用参数
参数 | 命令举例 | 命令含义 |
---|---|---|
-c | shutdown -c | 取消关机操作 |
-f | 重新启动时不执行fsck | |
-F | 重新启动时执行fsck | |
-h | shutdown -h now | 系统立即关机 now可换成其他时间 如10:00 真正意义上的关机 |
-k | shutdown -k "即将关机" | 只是警告,但是实际上不会关机 |
-n | 不调用init程序进行关机,而由shutdown自己进行 | |
-r | shutdown -r now | shutdown之后重新启动。 关机之后再次启动 |
-t | 送出警告信息和删除信息之间要延迟多少秒 |
八:用户权限相关命令
1.更改文件权限
chmod o+r file.txt #为其他用户新增 文件增加读权限
chmod o+w file.txt #为其他用户新增 文件增加写权限
chmod o+x file.txt #为其他用户新增 文件增加可执行权限
chmod u+r file.txt #为文件所有者新增 文件增加读权限
chmod u+w file.txt #为文件所有者新增 文件增加写权限
chmod u+x file.txt #为文件所有者新增 文件增加可执行权限
chmod g+r file.txt #为文件所在组用户新增 文件增加读权限
chmod g+w file.txt #为文件所在组用户新增 文件增加写权限
chmod g+x file.txt #为文件所在组用户新增 文件增加可执行权限
chmod a+r file.txt #为所有用户新增 文件增加读权限
chmod a+w file.txt #为所有用户新增 文件增加写权限
chmod a+x file.txt #为所有用户新增 文件增加可执行权限
2.权限解释
r:可以读取
w:可以写入
x:可以指行
3.用户添加
useradd liuguangstudy #新增用户
passwd liuguangstudy #为用户设置更新密码
userdel liuguangstudy #删除用户
usermod -g 组 用户名 #更改用户所在的组