Linux 基操笔记

linux目录结构及属性

  • / --- 操作系统的启示路径|根路径
  • /bin --- 普通用户和root都可执行的命令字
  • /sbin --- 只有root才可执行的命令字 比如reboot
  • /boot --- 引导,主引导目录,独立的分区,启动菜单,内核
  • /dev --- 设备存放目录
  • /etc --- 配置文件存放目录
  • /home --- 普通用户的家目录
  • /root --- root的家目录
  • /media --- 光驱挂载目录
  • /temp --- 临时文件存放目录
  • mnt --- 临时设备挂载目录
  • /proc --- 存临时数据|进程的目录
  • /usr --- 软件安装的目录
  • /var --- 存日志,邮件等常变量文件的目录

linux基本操作

快捷键

  • tab自动补全的这个基操很多人不知道😂,特此告知
  • ctrl + l 相当于clearl 不是 i 快速清屏 至于为什么快速,谁用谁知道
  • ctrl + c 终止程序

进入文件 cd

  • cd xxx 进入到某目录下 比如cd /root (和window不同 window直接磁盘名:就可以了

  • cd .. 进入上一层目录

查询文件

  • cat 内容较少时比较适合用cat
  • more 内容较多时使用,翻页查看
  • tail 查看文件末尾内容,适合查看log文件
  • head 查看文件开头内容,适合查看log文件

显示目录的文件 ls

ls 普通的显示目录下的文件

ls -l 显示详细信息

ls -a 显示所有信息 (包括隐藏文件)

ls -lh 显示文件的大小

ls -R 显示当前目录中所有文件夹中的文件

创建操作


创建文件 torch

创建文件夹 mkdir

剪切移动文件

mv xx1 xx2 把xx1移到xx2里
如果xx1 和xx2 在同一个目录下,则是重命名操作


复制文件

cp

cp xx path 把xx复制到path路径里

可以创建一个符号链接(类似于快捷方式)

ln -s 绝对路径path1源文件 绝对路径path2建立的链接文件 将源文件的文件创建一个链接到path2下

eg:

ln -s /temp/name1.txt /root/Desktop/name2.txt

写入文件 vim

这里只简要介绍一下基本操作

快捷键

  • dd 删除光标所在行的内容
  • ZZ 保存文件内容
  • o 光标所在下一行进行插入内容操作
  • x 删除光标处内容

也可以看这里


删除


删除文件

rm -f 文件 强制删除

删除目录

rm -rf name 加-r是递归删除,从而实现删除目录

压缩与解压


首先创建一个bigfile(比如100M)

dd if=/dev/zero of=/tmp/just_a_bigfile bs=1M count=100

dd是一个命令(用指定大小的块来拷贝一个文件,并同时转换,具体可百度)

if 是input file of是outputfile

bs是单位 count是重复次数

/dev/zero就是一个编译以后全为0的文件

注意:查看文件大小ls -lh filename但是查看目录大小是 du -sh filename

压缩

压缩文件

  • gzip filename

  • bzip2 filename

压缩文件夹

首先要创建一个tar文件(打包)

  • tar -cf path1 path2 将path2的文件夹打包到path1 cf是create file

再正常压缩即可

解压

解压文件

  • gunzip 压缩包

  • bunzip2 压缩包

解压文件夹

先解压成tar文件然后再压缩

解压成tar文件 :

tar -xf path1 path2 将path1解压到path2

这么麻烦?不不不其实有简单的方法

tar -zcf path1 path2

将path2打包的同时压缩到path1 z是gzip的意思 换成j就是用bzip2压缩

下载文件

这里不同系统不同仅以Ubuntu为例

一般都是默认下载到/ect下,具体某个目录还得看软件

sudo apt-get|apt install ..

如果install的文件错误再次使用apt命令的话会显示被锁进程被占用

解决方案

强制解锁

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

mysql数据库

服务器操作

sudo service mysql staus
sudo service mysql restart
sudo service mysql stop
sudo service mysql start

库操作

登录|退出数据库

sudo mysql -uroot
(会提示你要密码)
quit;

之后就是用的sql语法

查看所有数据库

show databases;(注意这个有s!)

创建数据库

create database name charset=utf8

删除数据库

drop database name

查看当前数据库

select database()

表操作

查看当前数据库的所有表

show tables;

创建表create table

注意要先进入要创建的数据库 (use name)

create table name (
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
height decimal(1,10),
sex enum ('男','女'),
age tinyint unsigned default 0,
password varchar(20) not null default 123456
);

查看表的字段desc

desc tablename

修改表字段change

# alter table name change 原名 新名 新类型 (约束 ...)
alter table students change sex gender enum (not null default ..)
# modify 不能修改column名字
alter table students modify column_name type ..	

意思就是 把sex 名字改为gender enum约束变为不能为空

添加表字段add

alter table name add ...

删除表|列drop

alter table name drop column_name|table_name

查看创建表|库时的语句 show create table

show create table name|show create database name

对表中数据进行操作

查看表中的数据select

# 查看所有数据
select * from table_name 

# 查询部分列数据
# where 后面讲...
# 排序默认asc 从小到大 desc是从大到小
# limit关键字:后面第一个代表开始的索引默认0,第二个数字是每页显示的行数
# 注:括号表示这个语句可以不要 不是代表要加括号
select name1,name2 from table_name (where 条件) (order by column_name asc|desc,order by ..) (limit start count);

# select 是可以嵌套的(因为会先执行子查询),可以将结果视为元组作为where的判定条件

select * from students where (gender,age)=('male',select max(age) from students)

聚合函数|分组

# 查询column_name 下的个数|最大值|最小值|平均值|和(null忽略)
# min(col_name) max(column_name) sum avg
select count(column_name) from table_name;
# 这样更常用
select count(*) from table_name;
# 分组
select column_name,count(*),group_concat(col_name) from table_name group by column_name
# 以gender 为例, count(*) 是分别代表性别男的个数,和性别女的个数
# group_concat(col_name)代表将同一组的都逗号分隔更美观

添加数据到表里insert into

# value 后面跟的是表里的所有列的值 default代表当前列是默认值
# id是主键所以第一个value 放default null 0 都行
# value 一定要和插入的列对应 
# value 后面几个括号代表插入几个数据
insert into table_name value(default,...),(...),(...),...;
# 部分列插入数据
insert into table_name(column_name1,column_name2,...) value(...),(...),(...),...;

修改表中数据 update

update table_name set column_name1=xx,column_name2=xx where 条件

删除表中的数据delete

# 物理删除,不能撤销
# 实际上数据是很珍贵的,一般都是加个flag代表是否删除
# 而且这样还方便查询
delete from table_name where 条件

设置别名 as

# 显示时显示别名,哪都能用
xxx as xx

查看时删除重复数据distinct

# 注意这个只是查看时忽略重复数据,数据本身并没有变化
# column_name 必须要全部重复才不会显示
select distinct column_name1,column_name2,... from table_name

where 关键字

# 注意where里面是可以带括号的
# % 代表匹配任意多个字符
# __ 代表匹配任意一个字符
# in (...) 
# beteewn xx and xx
# 逻辑关键 not () and or
# 判定空 xx is null
where 条件

连接查询 join

# 交集inner join,并集,左连接 left join,右连接 right join
# 左连接是以左表为主(左表的全都有,再加上交集) 右连接同理
# 当连接查询不到时会自动填充null
select column_name1,... from table_name1 inner join table_name2 on 条件  

source

# 可以通过执行.sql文件来批量执行命令
source path/xxx.sql
posted @ 2020-11-01 18:57  Sakura_Momoko  阅读(171)  评论(0编辑  收藏  举报