Linux学习小记

============================================
1.系统基础命令介绍

=mkdir 创建文件/文件夹命令===
1)创建新的目录:make directory --> mkdir
语法结构:mkdir [OPTION]… DIRECTORY…
实践操作01:创建一个目录:
mkdir /data
实践操作02:创建多个目录
创建有序多个文件夹
使用序列–mkdir /data{01…50} 创建data01 一直到 data50 共50个文件夹
创建等差序列的文件夹
mkdir /data{01…50…2}
创建无序列关系的文件夹
mkdir /data{conf,data,code,log}
实践操作03:创建多级目录 data/log/log_01
mkdir data/log/log_01 此种方式会报错 因为 mkdir不能直接创建多级目录 需加参数
mkdir -p data/log/log_01
-p:含义
1.想要创建的目录不存在不报错
2.当创建一个目录是需要创建父级目录
使用 man mkdir查看命令的帮助文档
使用tree命令查看 文件的树形结构 如果未安装 则需要使用sudo yum install -y tree
tree data
[cool@localhost Documents]$ tree data/
data/
└── log

1 directory, 0 files

=rmdir 删除文件夹命令===

2)删除系统空目录:rmdir - remove empty directories

删除空目录语法:rmdir [OPTION]… DIRECTORY…

实践操作01:删除 /home/cool/Documents/data/log/目录下的log.log文件:rm /home/cool/Documents/data/log/log.log

=cd 切换系统目录命令===
3)切换系统目录: Change the shell working directory.
切换目录语法结构:cd [-L|[-P [-e]]] [dir]
实践操作01:切换根目录下的home/cool cd /home/cool

两种路径说明:
1:绝对路径:从根目录出发切换目录 /home/cool
2:绝对路径:从当前目录为出发点切换目录 【比如说当前路径是在home目录,要想进入到cool目录下,则可以使用cd cool/】

返回到上一级目录:cd …/
当前目录:cd ./

=cp 复制文件命令===
4)复制文件命令:cp - copy files and directories
语法格式:cp [OPTION]… SOURCE… DIRECTORY
实践操作:复制根目录下的a.log文件到opt目录下:cp /a.log /opt/

那如果我们想要复制文件夹呢 如果只是用cp命令就无法实现了,需要使用到参数
cp -R 原文件夹路径 目标文件夹路径 (-R 和 -r都可以使用)

cp命令不改变原文件,而mv命令会直接操作源文件

=mv 移动文件|重命名文件命令===
5)移动或重命名文件:mv - move (rename) files
语法结构:mv [OPTION]… SOURCE… DIRECTORY
实践操作:移动根目录下的a.log文件到opt目录下:mv /a.log /opt/
重命名文件 /opt/a.log 为 b.log : mv /opt/a.log /opt/b.log

=rm 删除文件命令===
6)删除文件:rm - remove files or directories
语法结构:rm [OPTION]… FILE…
1、有提示的删除某个文件 rm file
rm anaconda-ks.cfg
rm: remove regular file ‘anaconda-ks.cfg’?
输入y表示确认删除 n表示不删除
2、强制删除某个文件 【-f】
rm -f
3、删除文件夹【-r】
rm -r
常用组合方式 rm- rf

=touch 创建文件命令===
7)创建文件 touch - change file timestamps
语法结构:touch [OPTION]… FILE…
小试牛刀:创建一个mysql.txt文件在/opt目录下:touch mysql.txt

=stat 查看文件状态命令===
8)查看文件状态:stat - display file or file system status
语法结构:stat [OPTION]… FILE…

stat命令:
刚才创建的mysql.txt文件为例,使用stat mysql.txt查看
[root@localhost opt]# stat mysql.txt
File: ‘mysql.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 68489385 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:usr_t:s0
Access: 2022-12-17 08:25:13.840641648 +0800
Modify: 2022-12-17 08:25:13.840641648 +0800
Change: 2022-12-17 08:25:13.840641648 +0800

>>>>>>>>>>>会有三个时间,这里需要说明:<<<<<<<<<<
1、Access:当我们使用vi 命令进入到文件里面,但不做任何操作,说白了就是查看文件内容 Access时间就会改变
2、Modify:当我们修改了文件的内容,则Modify时间就会改变
3:Change:与文件的元数据相关,类似于Windows桌面文件的属性信息改变,所以该文件Change也会改变 修改权限也会变

=Linux链接<>windows系统的快捷方式=====
9)ln命令:ln - make links between files
语法结构:ln [OPTION]… TARGET… DIRECTORY
1、软连接:ln -s 目标文件 连接名称
2、硬链接:ln 目标文件 连接名称
软连接往往会在磁盘空间创建一个节点去指向

=cat 查看文件内容===
10)查看文件全部内容 cat :cat - concatenate files and print on the standard output
语法结构:cat [OPTION]… [FILE]…
cat 命令默认是查看文件的全部内容 正序排序
tac 是倒序查看文件内容

一般此命令不常用 因为如果文件比较大 非常占用资源

=more 查看文件内容===
11)分页查看文件内容 more:more - file perusal filter for crt viewing

语法结构:more [options] file […]
按空格键是查看下一页内容,more命令有个缺陷是不能查看上一页的内容

=less 查看文件内容===
12)分页查看文件内容 less:less - less - opposite of more

语法结构:less [options] file […]
按上下键切换上下页

=head 查看文件内容===
13)查看文件开头的内容 可以指定行数 head - output the first part of files

语法结构:head [OPTION]… [FILE]…

=tail 查看文件内容===
14)查看文件结尾的内容 可以指定行数 tail - output the last part of files

语法结构:tail [OPTION]… [FILE]…

小试牛刀:查看/etc/profile文件的第8行
head -8 /etc/profile | tail -1

find 查找文件===
14)查找文件位置 find - search for files in a directory hierarchy
语法结构:find [OPTION]…[FILE]
常用的option:
1.-name 按照文件名查找
2.-type 按照文件类型查找
3.-path 按照路径查找

vi编辑器===
三种模式:
1、编辑模式:及一进入到vi编辑器,默认的模式即为默认的模式
2、插入模式:在编辑模式下输入英文字母i即进入到插入模式
3、底行模式:在编辑模式下输入:即进入到末行模式
编辑模式下常用的快捷键:
1、dd 删除一行 ndd 删除n行
2、o 在当前行下插入一行 O 在当前行的上一行
3、u 撤销最后一次修改
4、:/pattern 从光标开始向下搜索匹配的字符
5、:?pattern 从光标开始向上搜索匹配的字符
6、:set nu 显示行号
7、yy 复制当前光标所在的行到缓冲区 nyy 复制n行到临时缓冲区
8、p 将临时缓冲区的内容放到光标之后
9、P 将临时缓冲区的内容放到光标之前
10、:w 保存文件但不退出
11、:q! 强制退出
12、:e! 放弃所有的修改回到最后一次保存的样子
13、:wq 保存并退出
14、a 追加 A 行尾
15、i 插入 I 行首
16、h j k l 左上下右

查看文件所占空间大小===
15)df -h
df是查看分区的信息

16)du -sh
查看指定文件的大小

文件压缩解压缩===
在linux系统下,有两种压缩文件格式
1、tar
2、zip
tar 主要针对的是.tar.gz
解压缩: tar -zxvf 解压文件名 [解压路径] 不输入解压路径,就是当前目录下
zx(解压)v(过程)f(文件)
压缩文件:tar -zcvf 压缩文件的名字 被压缩文件名字
-C 制定解压文件的文件目录
zip 针对.zip的文件
安装
yum install zip unzip -y
压缩
zip -r 压缩文件名 被压缩文件名字
解压缩:
unzip 解压文件名

软件安装===

Linux三剑客===
普通剑客
1)cut 切割文件内容 cut - remove sections from each line of files 用指定的规则来切分文本
语法结构:cut OPTION… [FILE]…
[OPTION]:
1.-d:指定分隔符 -d’:’ 按照冒号分割
2.-f:只打印出指定的列数 -f1,2,3 打印前三列
小试牛刀:
cut -d’:’ -f1,2,3, password 含义:把password文件里的内容按照:分割,取前三列

2)sort 排序 sort - sort lines of text file 默认是按照字典序排序a,b,c,d…
语法结构:sort [OPTION]… [FILE]…
[OPTION]
1.-t:指定分隔符
2.-k:制定排序的列
3.-r:reverse 逆序
4.-n:按照数字排序
小试牛刀:
sort lucky
对文本进行排序
sort -t’’ -k2 lucky
对每一行的数据进行切分,按照第二列进行排序
sort -t’’ -k2 -r lucky
逆序
sort -t’’ -k2 -n lucky
按照数值大小进行排序 如果有字母,字母在前
3)wc 统计文件的字符数 wc - print newline, word, and byte counts for each file
语法结构:wc [OPTION]… [FILE]…
[OPTION]:
-l line 统计文件行数
-w word 统计文件的单词数 以空格分割单词
-c char 统计文件的字符数
统计单词的数量
小试牛刀
wc lucky
4 15 79 lucky

进阶剑客
1)剑客一号:搜索文件中的内容 grep, egrep, fgrep - print lines matching a pattern
语法结构:grep [OPTIONS] PATTERN [FILE…]
[OPTION]:
1.-v 你想搜索 搜索排除指定字符的
2.-i 忽略大小写
3.-n 显示行号
-可以对文件进行搜索
-同时搜索多个文件
从文档中查询指定的数据
grep adm passwd
grep school passwd lucky
-显示匹配的行号
grep -n school passwd
-显示不匹配的忽略大小写
grep -nvi school passwd

2)剑客二号:sed Sed命令是操作,过滤和转换文本内容的强大工具
语法结构:sed [options] [sed -commands][input -file]
sed [选项] 【sed命令】 【输入文件】
option[选项] 解释说明(带的为重点)
-n 取消默认的sed软件的输出,常与sed命令的p连用。

-e 一行命令语句可以执行多条sed命令
-f 选项后面可以接sed脚本的文件名
-r 使用扩展正则表达式,默认情况sed只识别基本正则表达式*
-i 直接修改文件内容,而不是输出到终端,如果不使用-i选项sed软件只是修改在内存中的数据,并不会影响磁盘上的文件*
sed -commands[sed命令] 解释说明(带的为重点)
a 追加,在指定行后添加一行或多行文本

c 取代指定的行
d 删除指定的行*
D 删除模式空间的部分内容,直到遇到换行符\n结束操作,与多行模式相关
i 插入,在指定行前添加一行或多行文本*
小试牛刀:
在/root/Linux_StudyDoc 目录下的 passwd文件里的第二行添加一行内容
sed -i ‘2a 12346’ /root/Linux_StudyDoc/passwd

<<<<<<<<<<<<<===Linux_Shell篇=>>>>>>>>>>>>
一、Shell脚本的执行
1.1 输入脚本的绝对路径或者相对路径
- /root/helloworld.sh
- ./helloworld.sh
注意: 执行的必须是一个可执行文件!!!
1.2 bash或者sh + 脚本
sh hellworld.sh
当脚本没有执行权限(x)时,root和文件所有者通过该方式可以正常执行
1.3 在脚本的路径前加"."或者source
source hellworld.sh
区别:
第一种方式和第二种方式会新开一个bash,不同的bash中的变量不能共享使用
第三种 是在同一个shell里面执行
export 可以将当前进程的变量传递给子进程使用
将来配置profile的时候,所有的变量都必须要加上export

二、Shell基础入门
2.1 shell变量
- 定义变量时,变量名不加美元符
1、命名只能英文字母,数字,下划线,首个字母不能是数字开头
2、中间不能有空格 可以使用下划线
3、不能加标点符号
4、不能使用bash里的关键字(可以使用help查看保留关键字)
- 变量的类型
1、局部变量
局部变量在脚本或者命令重定义,尽在当前shell脚本中有效,其他的shell启动程序不能访问局部变量。
2、环境变量(全局变量)
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行
3、shell变量
shell变量是由shell程序设置的特殊变量,shell变量中有一部分使环境变量,有一部分是局部变量。
小试牛刀:
定义一个变量name,值为weiyongpeng
name=weiyongpeng
echo $name
echo ${name}
2.2 shell的字符串
字符串是shell编程中最常用的数据类型,字符串可以使用单引号引用,也可以使用双引号引用,也可以不用引号
- 单引号
单引号里的任何字符都会原样输出u,单引号字符串的变量是无效的。
单引号字串中不能出现单独一个单引号,但是可以成对出现,作为字符串拼接使用
- 双引号
双引号里面可以有变量
双引号可以出现转义字符。
小试牛刀:
#! /bin/bash
#声明字符串 有空格的字符串需要用双引号 变量引用需要使用双引号
str1=‘helloworld’
str2=“hello wrold”

	echo $str1
	echo $str2

	name=zhangsan
	echo "$name"
	echo '$name'

	#字符串的长度 使用#
	echo "字符串的长度="${#name}

2.3 shell数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小
数组元素的下标从0开始,获取数组中的元素需要使用下标,下表可以是整数或者算数表达式,其值大于或者等于0
- 定义数组
定义数组 括号来表示数组 数组元素用 “空格” 分割
语法结构:数组名=(值1 值2 值3…值n)
arr=(1 2 3 ‘1’ “abc”)
- 读取数组值 shell里面没有数组越界 因为其本质是一个伪数组,所以下标没有最大值的要求
${arr[5]}
- 使用@ 或者 *获取数组的所有元素
${arr[@]}
${arr[]}
- 获取数组的长度 同获取字串长度一样#
${#arr[@]}
${#arr[
]}
小试牛刀:
# 声明数组
arr=(1 2 3 ‘4’ “abc”)
echo ${arr[4]}

	#取出数组的所有元素
	echo ${arr[@]}
	echo ${arr[*]}

	#获取数组的长度 使用#号
	echo ${#arr[@]}
	echo ${#arr[*]}

2.4 shell注释
单行注释
以#开头的行就是注释行 会被忽略 除第一行外
多行注释
:<<EOF
注释1
注释2

EOF

2.5 shell参数传递
echo “第零个参数=”$0
echo “第一个参数=”$1
echo "第二个参数=" 2 e c h o " 总参数个数 = " 2 echo "总参数个数=" 2echo"总参数个数="#
echo “当前脚本后台运行的进程ID=”$$
echo “后台进程最后一个进程的ID=” ! e c h o " 前一个脚本的执行状态 = " ! echo "前一个脚本的执行状态=" !echo"前一个脚本的执行状态="? 0是正常 非0是有错
2.6 shell运算符
运算符分类:
1.算术运算符
+:加
-:减
*:称
/:除
%:取余
2.关系运算符
-eq:等于
-ne:不等于
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
3.逻辑运算符
&&:短路逻辑与
||:短路逻辑或
4.布尔运算符
-a:and
-o:or
5.字符串运算符
=

6.文件运算符
	-r:文件是否可读
	-w:文件是否可写
	-x:文件是否可执行
	
	-f:是否是一个文件
	-d:是否是一个目录
	-l:是否是一个链接
	
	-s:文件是否为空
	-e:文件是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@WAT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值