Linux
服务器都是linux 系统
远程连接工具:xshell/finalshell
- 目录结构
bin 二进制文件
boot 启动系统的核心文件
cdrom 镜像
dev 系统设备配置文件
etc 服务配置文件
home 用户信息
initrd 初始化目录
lib 库文件
mnt 系统挂载文件
proc 虚拟文件系统
快捷方式的对应 bin-> usr/bin
图标也不一样
详细版
●常见目录结构:
●/ : 根目录,是linux系统的最顶层的父目录,系统中所有的文件或目录都在根目录下面。
●root : 系统管理员的主目录,root账号登录到系统默认所在的目录就是root的主目录。
●home:普通用户的主目录,普通用户登录到系统默认所在的目录就是home,所有的普通用户共享一个home主目录
●sbin:该目录中存放的是超级管理员经常使用的一些命令
●bin:该目录中存放的是普通用户以及管理员进场使用的一些命令
●boot:存放的是系统启动时需要加载的一些自启动文件
●dev:该目录中存放的是一些第三方的设备,如鼠标,键盘,打印机等
●etc:该目录中存放的是一些系统相关的配置文件
●lib:库文件目录,存放的是bin跟sbin目录中命令执行时需要加载的库文件
●mnt:挂载文件目录,挂载的是一些第三方的临时设备,如:U盘
●opt:是一个跟系统不相关的三方软件安装目录,在该目录中我们可以自己新建文件,安装部署项目,跟系统隔离开。
●tmp:临时目录,用来存放一些临时文件,会定期删除,关机重启就自动清空
●usr:用户文件目录,该目录中存放的是一些不适合存放在根目录中的文件就存放在usr目录中
●var:存放的是一些变量文件,会发生变化的一些文件
- 远程连接xshell,finalshell
需要已知linux服务器的ip地址和ssh端口(默认是22) - 命令大全 点击跳转
cd
cd ~ #切换到Home主目录
pwd #显示当前所在的目录
ls#列出目录 文件信息
ls -a #显示目录下所有子目录和文件 包括隐藏的
ls -l #每行列出详细信息 文件类型与权限 连接数 所有者 所属组 文件大小 最近修改时间 文件名字
#password- 是password的备份文件
#0:0 用户组id:用户id
#Grep 管道过滤 过滤’g’ ‘l’ 目录或文件等
ls -lh #显示文件目录或大小 要和l一起连用
ls -lha path #组合
ls --help | more |是管道,more进行分页
ls *.txt #匹配
ls ?.txt
ls [abcd].txt
ls [a-z].txt
ls /bin/*.sh
[csdn ~]$
这是linux的命令提示符
csdn: 表示当前的登陆用户,这里是使用csdn账户登陆.
~: 代码当前用户所在目录.
$: 命令提示符.如果是root用户提示符是'#';Linux用这个符号标识登陆用户的权限.
mkdir web #创建文件夹web
mkdir -p /home/user/documents/project/files#-p选项会自动创建所有必要的父目录
# rmdir删除指目录
rmdir web
#Tips: 前面学过的rm命令也可以删除目录.
#-r 递归删除 -f强制删除
reboot #重启
shutdown -h 20:25 #定时关机
cat /proc/version #查看当前操作系统版本信息
cat /etc/issue #查看版本当前操作系统发行信息
gedit #启动记事本
top #动态显示任务管理器 按q退出
#m 或shift+m 按内存使用率降序排列
#p 或shift+p 按cpu使用率降序排列
#PID进程号
#查看系统进程
ps -aux
ps -aux|grep bin #查找特定程序进程 苹果没有这个方法
#windows任务管理器也可以查看PID
ps -ef|grep 'bin'#苹果电脑使用这个方法
#关闭进程
kill -9 PID #-9是强制关闭
#查看系统监听端口 网络状态及软件对应端口
netstat [-anptu]
netstat -anp | grep mysql #查看特定进程mysql
netstat -anp | grep '3306' #查看特定3306端口
'
-a 显示所有已打开端口
-p 显示对应进程id
-n 用数字显示对应端口
-t 显示所有tcp协议端口
-u 显示所有udp协议端口
'
tcp6 0 0:::3306 :::* LISTEN 1734/mysqld
#进程号1734 端口号3306
#根据端口查到对应进程号
lsof -i:22 #22是端口号
#-i 查看所有已打开的进程端口 如果后面:端口号 则查看特定端口
command --help #帮助信息
man command #显示该命令文档
#管道| 左边放内容 右边取内容
grep 选项 查找模式 文件名1...2....
#grep过滤器查找左边放的内容中的某种内容 查找模式为正则表达式
ls -l | grep ^d #显示当前目录以d开头的所有文件的详细信息
ls -l | grep more #左边详细信息中取出包含more的内容
which python3#安装路径
echo ls #回声 后面是什么 就返回什么
echo -e "Hello\nworld!" #让echo识别转义字符
variable_name = variable_value
echo $name #输出变量name的值
echo `date`#输出当前date and time
#重定向> >>
>#将命令输出结果覆盖到对应文件中
>>#将命令输出结果追加到对应文件中
>cat 1.txt > 2.txt
>cat 1.txt 2.txt > 3.txt #1+2=3
>ls -l > 3.txt #把ls详细信息放入3
ifconfig #查看网络信息 windows ipconfig
route #查看路由
ping ippath
curl https://api.example.com/data #GET Request: Retrieve data from a server.
curl -X POST -d "name=John&age=30" https://api.example.com/submit
#POST Request: Send data to a server (e.g., submitting a form).
#-X POST: Specifies that the request should use the POST method.
#-d '{"name": "John", "age": 30}' sends form data的另一种形式
curl -H "Content-Type: application/json" -X POST -d '{"name": "John"}' https://api.example.com/data
#Adding headers
#touch 用来创建一个空白文件,但如果文件已存在,则会更新时间.
touch edu.txt
mv src dest
#可实现重命名,也可移动文件或文件夹
#-i 交互式执行 有覆盖提示
#-f 强行覆盖 不提示
#-v 显示复制的进度
cp src dest #copy
#-r 复制文件夹 即该目录下所有内容
#-i 交互模式
#-f 强行覆盖
#-v 详细模式
# 使用 rm 文件名 命令可以删除文件或目录
rm edu.txt
#可以使用 rm --help 命令来查看 rm 相关的参数介绍
rm --help
#比较两个文件差异
diff file1 file2
diff -i file1 file2 #忽略大小写 即ignore case
diff -b file1 file2 #忽略空格字符量的不同
cmp file1 file2#如果相同不显示任何信息,如果不同则标示第一个不同之处的字符和列号
# 检查文件系统磁盘空间使用情况disk file
df
df -a #包含所有的具有 0 Blocks 的文件系统(即 空的或有问题的) all
df -T #同时显示文件系统的形式 查看提交日志。
# 查询并打印当前目录及其所有子目录下所有文件的大小,以块为单位 disk usage
du
du -a filename #以块为单位打印指定文件 code.txt 大小
du -h #查询并打印当前目录及其所有子目录下所有文件的大小,以 K,M,G 为单位 human-readable
#显示内存大小
free
#软链接命令 即linux的快捷方式
ln -s 源文件 目标文件
#源文件用绝对路径,移动后仍可用
#可以链接目录
#不带-s参数创建的是硬链接
#硬链接文件大小与源文件相同,即使删除源文件,链接文件依然存在;但软链接会失效。
#硬链接只能是普通文件,不能说文件夹
#-f 强制创建链接,即使目标文件已经存在
权限&用户管理
- 用户权限
运行ls -l看到
第一列是文件类型,-普通文件,d文件夹,link是快捷方式
由10个字符分成4个部分
对应位下标 | 1 | 234 | 567 | 890 |
---|---|---|---|---|
对应字符段 | [d] | [rwx] | [r-x] | [—] |
- 使用 chmod 命令对其文件的权限进行修改,有两种方式:1、数字法,2、字母法(不是很常用,这里略)
u user 文件的所有者
g group 用户组(同组用户)
o other 其他用户
a all 所有用户
+增加权限
-减少权限
=设置权限
格式:chmod+ u权限分值+ g权限分值+o权限分值+文件名或目录名
例子1:所有用户可读可写可执行权限:
chmod 777 test.log (权限分值[4+2+1][4+2+1][4+2+1])
例子2:某些文件不希望被用户组内其他人修改,不想被用户组外的人看见:
chmod 740 test.log (权限分值[4+2+1][4+0+0][0+0+0])
例子3:字母法
chmod u+x,g-w,o=rwx 1.txt
chmod a=- 1.txt #全都没有权限
chmod u+w 1.txt #只改所有者权限
- 用户管理
【一般只有运维才用】
#查看当前系统用户
cat /etc/passwd
#添加用户
useradd username
#-d 新用户每次登陆时所使用的家目录
#-g 指定用户对应的用户组
#-G 定义此用户为多个不同组的成员
useradd -g root username #指定用户组为root
#修改用户
usermod [选项] 用户名
'
-d<登入目录> 修改用户登入时的目录
-g<群组> 修改用户所属的群组
-G<群组> 修改用户所属的附加群组
-e<有效期限> 修改账号的有效期限
-f<缓冲天数> 修改在密码过期后多少天即关闭该账号
-l<账号名称> 修改用户账号名称
'
userdel username
#-f 强制删除用户账号
#-r 删除用户主目录及其中的任何文件
#切换用户
su user
su root
sudo command
#设置密码 需要root用户
passwd username
passwd #设置当前用户密码
who #查看登陆账户
-q 或 --count #只显示用户登录账号和登陆用户数量
-u 或 --heading #显示列标题
whoami #查看当前用户名
id #打印用户id、组id uid、gid
#-un 只打印自身有效id -gn只打印组id -ur 打印真实id
exit#退出当前终端/ssh远程登录账户/切换后的登陆用户回到上一个用户
归档压缩解压
- 归档和压缩的区别
归档:把⽂件打包,⼤⼩不会变
压缩:把⽂件按照指定的格式进⾏压缩,⼤⼩会变⼩ - 压缩的格式
xz:压缩⽐最⼤,速度最慢 -J
bzip:压缩⽐适中,速度适中 -j
gzip: 压缩比最⼩,速度最快 -z - 归档命令
tar
只归档不压缩: tar -cvf 归档名 源⽂件 …
先归档再压缩:tar -zcvf 压缩包名 源⽂件 …
解压归档⽂件: tar -xvf 归档名 [-C 路径]
解压压缩⽂件: tar -zxvf 压缩包名 [-C 路径] - unzip,zip⽤于解压或压缩zip格式⽂件
#打包压缩命令
tar -cvf xx.tar 文件/目录 #打包
tar -xvf xx.tar #解包
:'
-c 创建打包文件 create
-v 显示进度 visible
-f 指定打包文件名 放选项最后 file
-x 表示解包 extract
'
tar -cvf mike.tar *.txt *.png
tar -xvf mike.tar -C abc/ #指定路径
:'
gzip -> .tar.gz
biz2-> .tar.bz2
zip,unzip ->.zip
命令同理
'
tar -zcvf xx.tar.gz 文件/目录 #打包
tar -zxvf xx #解包
tar -jcvf xx.tar.bz2 文件/目录 #打包
tar -jxvf xx #解包
zip -r xx.zip 文件/目录 #-r表示压缩的是一个目录 压缩的文件名后面可不带后缀
unzip -d 解压目录 压缩文件名
#-d 是一个选项,用于指定解压缩的目标目录(destination directory)
#不用默认放在当前目录下
查找文件/库
#查找目标目录以及子目录下的文件及文件夹
find 起始目录 查找条件 操作 #directory只是起始目录 查询当前目录及其子目录下
#查找条件有-a and /-o or/ ! not/-name 基于文件名找 /
#-type typechar 基于文件类型找
'
1) f:普通文件,如文本文件,可执行文件
2) d:目录
3) l:软链接文件
4) c:字符设备,如终端,磁带机等
5) b:块设备,如光盘,硬盘等
'
find . -name "*.c"
find [路径] -name 文件名
#路径不填 默认是当前目录
#文件名可用通配符表示
find . -name test.sh
find . -name *.sh
find directory -empty #查询当前目录及其子目录中的所有空文件并列出
# -iname 忽略大小写
find . -size +0 -type f
#+0 表示大于0
#-type f限制只能是文件 不能是文件夹或其他
find sub_dir -size 0 -type f > file
#sub_dir查询当前目录的子目录
#>重定向 写入file
find directory #查询当前目录及其子目录下所有文件和目录并列出
#如果是当前路径 省略directory
#-type f 不含目录列出 -type d 只含目录列出
#查找文件
grep 找文件里面的内容 见下方查看文件
find 找硬盘中的某个文件
查看文件
命令 | 作用 |
---|---|
cat filename.txt | 显示文件内容 |
cat file1 file2 > newfile | 合并文件 |
cat file1.txt file2.txt | 不合并,只是查看多个文件 |
cat > newfile | 创建新文件 |
cat -n filename.txt | 显示带行号的内容 |
cat -s filename.txt | 去除多余空行 |
cat file1.txt >> file2.txt | 追加到新文件 |
cat largefile.txt | less | 可以根据文件大小选择显示less 或more的量 |
#查看文件全部内容 较少内容的
cat
#查看较多内容的文件【常用】
grep 文件名
#-v 取反
#-n显示匹配的行和行好
#-i忽略大小写
#-c 计数
grep -n '^a' 1.txt #查询1.txt里面的匹配
grep -ni 'ke$' 1.txt
grep -nv '[abc]def[gh]' 1.txt
grep string filename#在文件中找含某字符串的行
grep -A -B -C 属于上下文控制(Context control)
grep -A 显示匹配指定内容及之后的n行
grep -B 显示匹配指定内容及之前的n行
grep -C 显示匹配指定内容及其前后各n行
#例:
grep -A 5 name test.txt
#显示test.txt中与“name”字符串匹配的行,和其后面的五行
#查看文件 默认显示前10行
head 文件名
head -20 filename.x #显示前20行
tail 文件名
tail -f 文件名#实时显示日志文件信息(记事本自己加字符保存这种不会显示)
ls -l >1.txt #这种加入可以实时显示
ping ...xx >1.txt
#查看少量文件内容
less file1 #回车一行行显示 空格一页页显示 q退出 more相同
#查看较多内容的文件 分屏显示
more
#空格下一页 回车滚动显示下一页 b上一页 f下一页 q退出
#stat 命令用来显示文件或文件系统的详细信息
#包括文件的访问时间(Access time)、修改时间(Modification time)等、文件大小
stat temp1#查看文件
stat -f . #查看文件 temp1 所在文件系统的信息
stat * #查看当前所有文件的信息
类似于编程语言的功能
- 变量
a=1
b=2
let c=a+b
let a++
echo $a $b $c
Vi/Vim
- 普通模式
用来管理文件, 首次进入vi/vim编辑器使用的是普通模式
以行为单位,操作:
yy 复制
p粘贴 <-> Mac中粘贴直接用ctrl+v
dd剪切 - 插入模式/编辑模式
用来修改文件
I,i,a,A进入插入模式,按ESC回到命令行模式 - 命令行模式
用来保存/退出文件
shift+ : 或直接冒号
进入命令行模式,ESC退出命令行模式
w:保存并回到命令行模式
q:退出编辑器
!:强制
wq!:强制保存并退出
vim a.txt #打开a.txt
i #光标前面插入
I #光标所在行开始处插入
a #光标后面添加
A #光标所在末尾添加
x #删除光标处字符
dd #删除光标处整行
yy #复制光标所在整行
p #将复制后的文本粘贴到光标处
u #撤销操作
esc #退出编辑模式
:q #不保存退出
w #写入
q #退出
:q! #放弃修改,强行退出
:wq #保存并退出
SSH
远程连接工具
ssh ip_address