Linux命令+基础知识

Linux常用终端快捷键

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)搜索历史命令。

Linux远程操作——使用ssh和scp

终端利用ssh登录远程服务器

ssh -p 21316 [email protected]
/**
-p 后面时端口号
root 是服务器用户名
218.21.247.142  是服务器ip
*/

使用scp上传本地文件到远程服务器

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( secure copy )下载远程服务器上的文件到本地

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和Xftp

远程操作Linux的操作工具(软件):

  • Xshell(Linux的模拟终端软件)仅仅模拟终端,不能向Linux系统传文件

    查看Linux系统的ip地址:ifconfig

  • Xftp(本地操作系统和远程Linux之间进行文件传输)

Linux包管理工具「 yum和apt(Mac中有Home-brew)」

Linux系统大致分为两类:

  • RedHat系列:Redhat、Centos、Fedora等

    1. 常见安装包格式:.rpm(Red hat package manager)包

    2. 常用的包管理工具:

      rpm(RedHat Package Manager,RPM)

      yum(Yellowdog Update Modifie):改进版的rpm包管理工具

  • Debian系列:Debian、Ubuntu等

    1. 常见安装包格式:.deb包

    2. 常用的包管理工具:

      dpkg:Debian包管理系统(Debian Package Management System)

      apt(Advance package tool高级包管理工具)

      apt-get

      apt-cache

yum(Redhat中的包管理工具):查找、安装、删除软件包

apt(Ubuntu中的包管理工具):查找、安装、升级、删除软件包

​ apt需要root(超级管理员权限)

Home-brew(Mac中的包管理工具):安装、卸载、更新、查看、搜索等操作软件包

​ 命令是:brew

Linux文件与目录管理

绝对路径

由根目录 / 写起。例如:/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 表示确认命令是否执行

Linux文件内容查看

cat:从第一行显示文件内容

tac:从最后一行显示

nl:显示文件的同时,显示行号

more:一页、一页显示文件内容

less:与more类似,可以翻页

head:只显示前几行

tail:只显示后几行

注意⚠️:-n:默认想要显示的行数

文件解压和压缩

tar(Tape Archive,TAR)包管理工具(打包和压缩)

-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
zip/unzip命令

-q:不显示压缩/解压过程,quiet

-r:压缩文件夹,递归执行(文件夹下的所有文件)

-d:指定解压后我呢就爱你存放路径

# 解压 使用 unzip 解压 .zip 文件到当前目录
~ % unzip -q compress.zip

# 压缩 将文件和文件夹压缩成 .zip 文件
~ % zip -q -r compress.zip file directory
7z命令

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

文件基本属性

  • chown(change owner):修改所属的用户与组
  • chmod(change mode):修改用户权限
    chmod [ugoa…] [±=] [rwxX…] …
    其中u(user文件拥有者)、g(group表示与文件拥有者在同一个用户组的)、o(other其他)、a(以上三者都是);+表示增加权限;-表示减少权限;=表示唯一设定权限
(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
......

Linux命令+基础知识_第1张图片

每个文件的基本属性,由左边第一部分的10个字符表示,第1个字符表示文件类型;之后3个表示主权限;接着3个字符表示组权限;再接着3个字符表示其他用户权限。
r:readable可读

w:writeable可写

x:executable可执行

第一个字符代表这个文件是:文件、目录、

d表示是目录

-表示是文件

l表示是链接文档(link file)

vi/vim使用(vim是vi的增强版本)

三种模式:命令模式(一般模式)、输入模式、底线命令模式

​ 用户刚刚输入vi/vim就进入了命令模式(一般模式,可以执行一些命令)

​ 三种模式之间互相切换:

Linux命令+基础知识_第2张图片

一般模式可用的命令

​ 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系统目录结构(重点)

使用以下命令,显示Linux目录。“/”表示根目录。“.”表示当前目录。“..”表示上级目录。

(base) jiaohailong@jiaohailongdeMacBook-Pro ~ % ls /
Applications	Volumes		etc		sbin
Library		bin		home		tmp
System		cores		opt		usr
Users		dev		private		var

Linux命令+基础知识_第3张图片

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与windows的区别

  • linux中一切皆文件(无论盘符、视频、音频、游戏等都是文件),即操作文件的命令可以操作所有(盘符、视频,音频,文件,文件夹等)

  • Linux中不靠扩展名区分文件类型,但是有一些约定俗称的扩展名

    ​ 压缩包: * .gz、* .bz2、 * .tar.bz2、* *.tgz

    ​ 二进制文件:*.rpm

    ​ 网页文件:*html、 *jsp、 *.php

    ​ 脚本文件:*.sh

    ​ 配置文件:*.conf

grep命令

Linux grep(Global Regular Expression Print)命令用于查找文件里符合条件的字符串,可使用正则表达式搜索文本,匹配的行显示出来。

shell相关(我们使用bash shell)

shell是一种应用程序。用于解释用户输入的命令,将命令传递给内核,也可以在其中进行编程

查看shell类型,使用命令:echo $SHELL

输出是:

  • csh/tcsh,使用的是C shell(csh)
  • zsh, sh, bash, 使用的是Bourne shell的变种

常见的shell类型:

  • sh(Bourne shell是个人名,第一个流行的shell。UNIX版本都配有)、
  • csh(第二个流行起来的shell,类似于C,得名C shell)、
  • tcsh(csh的增强版,加入了命令补全功能)、
  • ash(轻量级的Shell)、
  • bash(Bourne Again Shell。Linux默认的shell,兼容sh「即sh编写的代码可以不加修改的在bash中运行」也有些区别,不影响使用)等。

shell的echo命令

和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

执行命令(sh/bash/sourse/.)

作为可执行程序执行
# 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!!

shell变量

your_name="Jack"
# shell变量类型
# 1)局部变量;2)环境变量;3)shell变量。

shell字符串

# 单引号
str1='this is a string'
# 限制
  1)单引号中的变量无效;
  2)单引号中的字符串中不能出现单独的单引号,需成对出现。


# 双引号
your_name="World"
str2="Hello, I know you are \"$your_name\"!/n"
# 好处
	1)可以有变量
	2)可以有转义字符

shell传递参数

# 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

shell命令行展开

(base) MacBook-Pro Desktop % echo minglinghangzhankai{001..100..10}
minglinghangzhankai001 minglinghangzhankai011 minglinghangzhankai021 minglinghangzhankai031 minglinghangzhankai041 minglinghangzhankai051 minglinghangzhankai061 minglinghangzhankai071 minglinghangzhankai081 minglinghangzhankai091

shell命令别名

# 查看别名
(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

shell历史命令记录

# 显示历史命令
(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

Linux命令

Linux进程管理命令:ps (process statue)

# 查看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

Linux进程管理命令:top

用于动态显示进程信息。

Linux命令:kill

kill向进程发送信号,不是杀死。

参数:

-1 (HUP):重新加载进程。

-9 (KILL):无条件退出一个进程,由进程自行决定是否退出。(这是-9不能终止系统进程和守护进程的原因)

-15(TERM):正常停止一个进程。

Linux命令:wget

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

ping(Packet Internet Groper)因特网包探索器

作用:

  • 判断网络是否连通,帮助分析网络故障。
  • 根据域名得到服务器IP
  • 根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。
(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服务器上存在的时间

你可能感兴趣的:(笔记,linux,服务器,vim)