Ctrl + a:将光标移到行头;
Ctrl + e:将光标移到行尾;
option + 方向键(wiondows: Alt + B/Alt + F):以单词为单位移动光标;backward/forward
Ctrl + u:擦除光标到行首的所有命令;
Ctrl + k:擦除光标到行尾的所有命令;
Ctrl + w:擦除光标前一个单词;
Ctrl + y:粘贴Ctrl + u/Ctrl + k/Ctrl + w删除的命令;
Ctrl + p:(up)查看上一个命令。相当于pageUp键;
Ctrl + n:(down)查看下一个命令。相当于pageDown键;
Ctrl + r:(research)搜索历史命令。
ssh -p 21316 [email protected]
/**
-p 后面时端口号
root 是服务器用户名
218.21.247.142 是服务器ip
*/
scp -P 21316 /Users/jiaohailong/Desktop/PU/PU-GCN-master.zip [email protected]:/home/jhl
-P 这里的P是大写 后加端口号
/Users/jiaohailong/Desktop/PU/PU-GCN-master.zip 是本地文件的绝对路径
/home/jhl 将本地文件上传到服务器的路径
scp -P 21316 [email protected]:/home/jhl/PU-GCN-master.zip /Users/jiaohailong/Desktop/PU
-P 这里的P(Port)是大写 后加端口号
-r 递归复制整个文件夹
-q 不显示传输进度条
/home/jhl 远程服务器文件地址
/Users/jiaohailong/Desktop/PU 要复制到的本地地址
远程操作Linux的操作工具(软件):
Xshell(Linux的模拟终端软件)仅仅模拟终端,不能向Linux系统传文件
查看Linux系统的ip地址:ifconfig
Xftp(本地操作系统和远程Linux之间进行文件传输)
Linux系统大致分为两类:
RedHat系列:Redhat、Centos、Fedora等
常见安装包格式:.rpm(Red hat package manager)包
常用的包管理工具:
rpm(RedHat Package Manager,RPM)
yum(Yellowdog Update Modifie):改进版的rpm包管理工具
Debian系列:Debian、Ubuntu等
常见安装包格式:.deb包
常用的包管理工具:
dpkg:Debian包管理系统(Debian Package Management System)
apt(Advance package tool高级包管理工具)
apt-get
apt-cache
yum(Redhat中的包管理工具):查找、安装、删除软件包
apt(Ubuntu中的包管理工具):查找、安装、升级、删除软件包
apt需要root(超级管理员权限)
Home-brew(Mac中的包管理工具):安装、卸载、更新、查看、搜索等操作软件包
命令是:brew
由根目录 / 写起。例如:/usr/share/doc
不是由 / 写起。例如:/usr/share/doc 跳到/usr/share/man目录底下。可以写:cd …/man这就是相对路径的写法。
ls(list flie):列出目录及文件名
-a:查看所有文件包括隐藏文件(以.开头的也会显示)
cd(change directory):切换目录
若路径省略,则切换至使用者的home目录。~也代表home目录
(base) MacBook-Pro / % cd
(base) MacBook-Pro ~ %
(base) MacBook-Pro / % cd ~
(base) MacBook-Pro ~ %
pwd(print working directory):显示当前目录
mkdir(make directory):创建一个新目录
rmdir(remove directory):删除一个空目录
cp(copy file):复制文件或目录
-r:递归复制
rm(remove):删除文件或目录
-r:递归删除
mv(move file):移动文件或目录,⚠️或修改文件或目录
touch:创建一个空文件
注意⚠️:可以使用man cp查看cp命令的使用文档。
-i 表示确认命令是否执行
cat:从第一行显示文件内容
tac:从最后一行显示
nl:显示文件的同时,显示行号
more:一页、一页显示文件内容
less:与more类似,可以翻页
head:只显示前几行
tail:只显示后几行
注意⚠️:-n:默认想要显示的行数
-c(create):创建新的tar包
-x(eXtract提取或–get):从tar包中解压文件(同名文件,会覆盖)
-C:解压到指定路径
-f(或–file):从指定文件读取(解压)文档或将存档写入(压缩)指定文件
-v(或–verbose 冗余):显示指令执行过程
注意:⚠️在打包备份或解压缩文件过程中,可以指定压缩算法。
-z,–gunzip,–gzip(仅限于压缩):使用gzip指令处理文件。
-j:bz2属性的
# 压缩 使用组合-zcvf
(base) MacBook-Pro test % ls -l
total 0
-rw-r--r-- 1 jiaohailong staff 0 6 25 08:50 1.txt
-rw-r--r-- 1 jiaohailong staff 0 6 25 08:50 2.txt
(base) MacBook-Pro test % tar -zcvf test.tar 1.txt 2.txt
a 1.txt
a 2.txt
(base) MacBook-Pro test % ls -l
total 16
-rw-r--r-- 1 jiaohailong staff 112 6 25 08:56 1.txt
-rw-r--r-- 1 jiaohailong staff 0 6 25 08:50 2.txt
-rw-r--r-- 1 jiaohailong staff 256 6 25 08:56 test.tar
# 解压 使用组合-zxvf
(base) MacBook-Pro test % ls
1.txt 2.txt test.tar
(base) MacBook-Pro test % tar -zxvf test.tar -C ../test02
x 1.txt
x 2.txt
-q:不显示压缩/解压过程,quiet
-r:压缩文件夹,递归执行(文件夹下的所有文件)
-d:指定解压后我呢就爱你存放路径
# 解压 使用 unzip 解压 .zip 文件到当前目录
~ % unzip -q compress.zip
# 压缩 将文件和文件夹压缩成 .zip 文件
~ % zip -q -r compress.zip file directory
x(eXtract with full paths) : 表示解压文件(按原始目录树解压。参数e是将所有文件解压至根下,不是自己原有的文件夹下)
a(Add):表示添加文件/文件夹到压缩包(压缩文件)
-r(Recurse subdirectories):表示递归解压缩所有子文件
-o(Set Output directory):表示解压至指定目录(注意⚠️-o后没有空格,直接接目录)
# zip 或 rar 推荐使用 7z 命令
# 安装p7zip
~ % apt-get update
~ % apt-get install p7zip-full -y
# 压缩 将 ./new_excel.xlsx目录下的所有文件打压缩成new_excel.7z压缩文件
(base) MacBook-Pro Desktop % 7z a new_excel.7z ./new_excel.xlsx
# 解压 如果 zip 超过 1GB 推荐使用 7z 命令解压,-o后直接加解压缩路径
~ % 7z x compress.zip -o/hy-nas
# 解压 .rar 文件到当前目录
~ % 7z x compress.rar
(base) MacBook-Pro ~ % ls -l
total 856
drwxr-xr-x 5 jiaohailong staff 160 4 7 09:10 Go学习
drwxr-xr-x@ 22 jiaohailong staff 704 4 25 16:00 Java笔记
drwxr-xr-x 5 jiaohailong staff 160 4 7 20:33 Lecodeshuati
drwx------@ 106 jiaohailong staff 3392 4 3 12:59 Library
-rwxr-xr-x 1 jiaohailong staff 314 4 25 18:02 Linux.sh
drwx------ 11 jiaohailong staff 352 4 3 13:02 Movies
drwx------+ 5 jiaohailong staff 160 12 28 12:41 Music
lrwxr-xr-x 1 jiaohailong staff 55 3 29 09:50 OneDrive -> /Users/jiaohailong/Library/CloudStorage/OneDrive-个人
drwx------+ 6 jiaohailong staff 192 4 24 11:37 Pictures
drwxr-xr-x+ 4 jiaohailong staff 128 12 28 12:41 Public
-rw-r--r-- 1 jiaohailong staff 143 4 20 16:40 dump.rdb
-rw-r--r--@ 1 jiaohailong staff 423853 11 25 10:49 requests库的基本用法.ipynb
drwxr-xr-x 18 jiaohailong staff 576 4 25 11:16 springboot-pre
-rw-r--r-- 1 jiaohailong staff 20 4 25 18:16 test.sh
......
每个文件的基本属性,由左边第一部分的10个字符表示,第1个字符表示文件类型;之后3个表示主权限;接着3个字符表示组权限;再接着3个字符表示其他用户权限。
r:readable可读
w:writeable可写
x:executable可执行
第一个字符代表这个文件是:文件、目录、
d表示是目录
-表示是文件
l表示是链接文档(link file)
三种模式:命令模式(一般模式)、输入模式、底线命令模式
用户刚刚输入vi/vim就进入了命令模式(一般模式,可以执行一些命令)
三种模式之间互相切换:
x:删除当前光标所在字符;nx(连续删除n个字符)
dd:删除游标所在行;ndd(删除光标所在的向下n行)
yy:复制游标所在行;nyy(复制游标所在的向下n行)
p,P:p粘贴数据在光标的下一行(Ctrl + v);P粘贴数据在光标的上一行
u:复原前一个动作(相当于Ctrl + z)
[Ctrl] + r:重做上一个动作。
gg:光标跳至第一行,G光标跳至最后一行
nG:光标跳至第n行
r、R进入替换模式:r只是替换光标所在字符;R一直替换光标所在字符。
h、j、k、l(nh、nj、nk、nl):左、下、上、右移动光标
:切换到底线命令模式
/word:搜索word字符串,按n搜索下一个word字符,N搜索上一个word字符。
i(o\a都可以):切换到输入模式,输入字符
[Esc]:切换到一般模式(在底线命令模式下,或者在输入模式下)
:set nu/:set nonu:显示行号/取消行号
保存、退出指令
:w 将编辑的数据写入硬盘档案中
:q 离开vi/vim
:wq 将编辑的数据写入硬盘文件,并离开vi/vim
:w! 若文件属性为「只读」时,强制写入。【是否可以写入到底还是跟该文档的权限有关】⚠️「 !」在vi中,具有强制的意思。
:q! 强制退出
使用以下命令,显示Linux目录。“/”表示根目录。“.”表示当前目录。“..”表示上级目录。
(base) jiaohailong@jiaohailongdeMacBook-Pro ~ % ls /
Applications Volumes etc sbin
Library bin home tmp
System cores opt usr
Users dev private var
1、系统启动必须
/boot:
Boot(启动)存放启动Linux时使用的核心文件
/etc:‼️
Etcetera(等等)存放系统管理所需要的配置文件和子目录(/etc/profile:系统配置文件)
/lib:
Library(库)存放系统最基本的动态连接共享库
/sys
(虚拟档案系统)与pro很类似。记录与核心相关的资讯。
2、指令集合
/bin:
Binaries(二进制文件),存放经常使用的命令
/sbin:
s是Super User的意思。Super User Binary(超级用户二进制文件),存放的是系统管理员使用的系统管理程序。
3、外部文件管理
/dev:
Device(设备)存放Linux的外部设备。Linux访问设备和文件的方式相同。
/media:
(媒体),存放可移除装置。例如软碟、光碟、DVD等都可暂时挂载在这里
4、临时文件
/tmp:
temporary(临时)存放临时文件(一般使用者,或者正在执行的程序暂时放置档案的地方)
/run:
临时文件系统,存储系统启动以来的信息。系统重启时,这个目录下的文件应该被删除或清除。
5、账户
/home:
用户主目录。一般为用户名,比如:bob
/root:
系统管理员目录,超级权限者的用户主目录。
/usr:
unix shared resources(共享资源)用户的很多应用程序和文件存放在该目录下
运行过程中要用
/proc:
Processes(进程)管理内存空间。伪文件系统(虚拟文件系统),存储当前内核运行状态的特殊文件,这个目录时一个虚拟目录,是系统内存的映射,可以通过访问这个目录获取系统信息
这个目录的文件不在硬盘上,而是在内存上。
/var:
variable(变量)存放经常修改的数据。存放着不断扩充着的东西,习惯将不断被修改的目录放在这个目录下。包括各种日志文件。
扩展用的
/opt:
optional(可选)给主机额外安装软件的目录。比如安装一个ORACLE数据库,就在这个目录下。默认是空的
/srv:
(service)存放服务器启动后需要取用的数据(不存在服务器就是空的)
‼️重要的几个目录:
/home;每一个用户的根目录(默认目录名和用户名相同)保存用户私人数据。
/etc:系统中的配置文件(如果更改了某个文件,可能导致系统不能启动)
/bin,/sbin,/usr/bin,/usr/sbin:系统预设的执行文件放置目录。比如:ls就是在/bin/ls目录下。
其中/bin,/usr/bin:是给系统用户使用的指令(除root用户)。/sbin,/usr/sbin:是给root用户使用的指令。
/var:系统上跑了很多程序,每个程序的相应日志被记录在这个目录下,具体在/var/log目录下。
linux中一切皆文件(无论盘符、视频、音频、游戏等都是文件),即操作文件的命令可以操作所有(盘符、视频,音频,文件,文件夹等)
Linux中不靠扩展名区分文件类型,但是有一些约定俗称的扩展名
压缩包: * .gz、* .bz2、 * .tar.bz2、* *.tgz
二进制文件:*.rpm
网页文件:*html、 *jsp、 *.php
脚本文件:*.sh
配置文件:*.conf
Linux grep(Global Regular Expression Print)命令用于查找文件里符合条件的字符串,可使用正则表达式搜索文本,匹配的行显示出来。
shell是一种应用程序。用于解释用户输入的命令,将命令传递给内核,也可以在其中进行编程
查看shell类型,使用命令:echo $SHELL
输出是:
常见的shell类型:
和PHP指令类似,用于字符串输出
(base) jiaohailong@jiaohailongdeMacBook-Pro ~ % echo "It is a test"
It is a test
(base) jiaohailong@jiaohailongdeMacBook-Pro ~ % echo It is a test
It is a test
echo显示变量
echo "$name It is a test variable" # echo显示变量name
文件test.sh
```
your_name="JC" # 注意⚠️,=前后不能有空格
echo $your_name
echo ${your_name} # 变量名外面的花括号加不加都可以,只是为了增加边界感
```
执行输出:
JC
JC
文件test.sh
for skill in Ada Coffe Action Java;do
echo "I am good at ${skill}Script"
done
执行结果:
I am good at AdaScript
I am good at CoffeScript
I am good at ActionScript
I am good at JavaScript
# cd到test.sh所在路径下。
~ % chmod +x ./test.sh # 给脚本添加执行权限
~ % ./test.sh # 作为可执行脚本
Hello World!!
# .命令和sourse命令是同一个命令。是sourse命令的缩写
# cd到test.sh所在路径下
1)~ % source test.sh # 作为解释器参数
Hello World!!
2)~ % bash test.sh # 作为解释器参数
Hello World!!
3)~ % sh test.sh
Hello World!!
your_name="Jack"
# shell变量类型
# 1)局部变量;2)环境变量;3)shell变量。
# 单引号
str1='this is a string'
# 限制
1)单引号中的变量无效;
2)单引号中的字符串中不能出现单独的单引号,需成对出现。
# 双引号
your_name="World"
str2="Hello, I know you are \"$your_name\"!/n"
# 好处
1)可以有变量
2)可以有转义字符
# test.sh文件
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数:$1";
echo "第二个参数:$2";
echo "第三个参数:$3";
# 执行命令
~ % chmod +x ./test.sh
~ % ./test.sh 1 2 3
# 执行结果
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数:1
第二个参数:2
第三个参数:3
(base) MacBook-Pro Desktop % echo minglinghangzhankai{001..100..10}
minglinghangzhankai001 minglinghangzhankai011 minglinghangzhankai021 minglinghangzhankai031 minglinghangzhankai041 minglinghangzhankai051 minglinghangzhankai061 minglinghangzhankai071 minglinghangzhankai081 minglinghangzhankai091
# 查看别名
(base) jiaohailong@jiaohailongdeMacBook-Pro Desktop % alias
run-help=man
which-command=whence
cls=clear. # 表示cls命令和clear命令是一样的,只是起了另一个名字而已。
# 设置别名
(base) MacBook-Pro Desktop % alias rm='echo 你这个大笨 蛋,别瞎用rm别名'
(base) MacBook-Pro Desktop % rm hello.py
你这个大笨蛋,别瞎用rm别名 hello.py
# 显示历史命令
(base) MacBook-Pro Desktop % history
1044 ls
1045 unalias
1046 unalias
1047 alias rm='echo 你这个大笨蛋,别瞎用rm别名'
# 执行1044行的命令
(base) MacBook-Pro Desktop % !1044
ls
Basic-Transformer-Demo
PU-GCN
PointAttN-main
bash_test.txt
test_involution
(base) MacBook-Pro Desktop % pwd
/Users/jiaohailong/Desktop
# 执行上一条命令
(base) MacBook-Pro Desktop % !!
pwd
/Users/jiaohailong/Desktop
# 查看ps命令的帮助信息
man ps
ps支持的三种语法格式:
1)UNIX风格:选项前必须有“-”一个连字符,且可以组合。常用组合-ef
2)BSD风格:选项前不能有“-”一个连字符,但可以组合。常用组合aux
3)GNU风格的长选项:选项前有“–”两个连字符
Linux上进程的五种状态:
1)R运行(Runnable)
2)S中断(Sleeping)
3)D不可中断()
4)Z僵死(“zombie”)
5)T停止(Traced of stoped)
显示当前系统中的进程信息,当前(执行ps命令时)进程的快照。动态显示可以使用top命令
ps参数:
-A 列出所有进程(等价-e)
-a 显示一个终端的所有进程,除了会话引线(utility)[代表all]
-e 显示所有进程
-f 全部列出(全格式),通常和其他选项联用
-h 不显示标题(第一行)
**-u 显示进程属于指定的用户名⚠️(这是一个改变,导致-aux不能使用,如果想使用,可以使用aux)**之前含义是:显示有效的进程id和用户名。
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-w 显示加宽,可以显示较多资讯
au 显示较详细咨询
aux 显示包含其他使用者的行程
注意⚠️:The biggest change is in the interpretation of the -u option, which now displays processes
belonging to the specified username(s). Thus, “ps -aux” will fail (unless you want to know about
user “x”). As a convenience, however, “ps aux” still works as it did in Tiger.
au(x)输出格式:
USER | PID | %CPU | %MEM | VSZ | RSS | TT | STAT | STARTED | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
进程拥有者 | 进程ID | 占用CPU使用率 | 进程内存占用率 | 所用虚存大小 | 占用记忆体大小 | 与进程关联的终端 | 进程状态 | 进程开始时间 | 进程使用的总CPU时间 | 正在执行的命令行命令 |
# 常用
# ⚠️" | " 符号,是一个管道符。表示将前一个命令的处理结果输出传递给后面的命令处理。
# -ef显示所有进程连带命令行
/ % ps -ef | grep redis
501 38532 37061 0 7:58上午 ttys000 0:00.01 grep redis
#
/ % ps au
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
# 常用
/ % ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
/ % ps -A
PID TTY TIME CMD
/ % ps -u jiaohailong
UID PID TTY TIME CMD
用于动态显示进程信息。
kill向进程发送信号,不是杀死。
参数:
-1 (HUP):重新加载进程。
-9 (KILL):无条件退出一个进程,由进程自行决定是否退出。(这是-9不能终止系统进程和守护进程的原因)
-15(TERM):正常停止一个进程。
wget命令是Linux从Web下载文件的命令行工具。支持HTTP、HTTPS、FTP协议下载文件。
# 语法格式
wget [选项] [URL]
# 选项
# -O 其他名称保存文件
# -P 将文件下载至指定目录
wget -P /Users/jiaohailong/Desktop https://spring.io/projects/spring-framework
错误: 无法验证 spring.io 的由 “CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US” 颁发的证书:
无法本地校验颁发者的权限。
要以不安全的方式连接至 spring.io,使用“--no-check-certificate”。
使用这个选项,以不安全方式下载:–no-check-certificate
作用:
(base) MacBook-Pro ~ % ping baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: icmp_seq=0 ttl=49 time=29.971 ms
64 bytes from 220.181.38.148: icmp_seq=1 ttl=49 time=31.327 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=49 time=31.195 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=49 time=29.347 ms
64 bytes from 220.181.38.148: icmp_seq=4 ttl=49 time=39.480 ms
64 bytes from 220.181.38.148: icmp_seq=5 ttl=49 time=37.757 ms
^C
--- baidu.com ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 29.347/33.179/39.480/3.937 ms
# 结果说明:
# bytes值:数据包大小(字节)
# time值:响应时间【往返时间/往返时延RTT】(时间越小,说明所连接地址速度越快)
# TTL值(Time To Live):表示DNS记录在DNS服务器上存在的时间