文章目录
前言
记录自己学习linux的笔记,加油!
2023.3.8
2023.4.7
2023.9.1 更新
一、linux文件结构
-
root
: 该目录为系统管理员目录,root是具有超级权限的用户。 -
bin ->usr/bin
: 可执行的二进制文件,包含了那些供系统管理员和普通用户使用的重要linux命令的二进制映像。如cp、ls等多个命令。 -
usr
是linux的系统资源目录,里边存放的都是一些系统可执行文件或者系统以来的一些文件库。 -
usr/local/bin
:存放用户自己的可执行文件,同样这里存放的可执行文件可以在系统的任何目录下执行。 -
lib->usr/lib
: 32位库文件存放目录,这个目录存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。 -
boot
: 这个目录存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 -
dev
: dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,Linux中的设备也是以文件的形式存在。 -
etc
: 这个目录存放所有的系统管理所需要的配置文件。 -
home
:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名,叫作用户的根目录;用户登录以后,默认打开自己的根目录。 -
var
: 这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行的各种日志文件。 -
mnt
: 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容 -
opt
: 这是给linux额外安装软件所存放的目录。比如你安装一个Oracle数据库则就可以放到这个目录下,默认为空。 -
tmp
: 这个目录是用来存放一些临时文件的。
root
:表示登录用户
localcast
:表示主机名字
#
:表示超级用户
$
:表示普通用户
[root@localcast]:~#
二、指令
2.1 查找文件find
find
:查找,find 路径 选项 [patten]
- -name 匹配名称
- -type 类型 f 文件 d 目录 l 链接
- -print 输出
- -size 文件大小
- -mtime 修改时间 modify time
- -atime 访问时间 access time
- -ctime 最近状态修改时间 change time 属性修改
- n:表示n天之前的一天内,如果n=0则表示24小时内
- +n:表示n天之前的时间(不包括第n天)
- -n:表示n天之内(包括第n天)
例题1:找出当前目录以及子目录下的所有的txt文件
find ./ -name "*.txt"
2.2 文本搜索grep
grep
:查找文件里面的内容,grep 选项 [pattern] 文件
- -i 忽略大小写
- -n 显示行+行号
- -o 输出匹配的内容(默认会输出匹配内容所在的行)
- -v 输出没匹配到的行
- -c 统计匹配到的行数
- -E 扩展命令 egrep命令
1. a匹配1-3次
grep -En "a{1,3}" test.txt
2. 匹配空行
grep -n "^$" test.txt
3. 匹配a-c中的任意一个
grep -En "[a-c]" test.txt
2.3 修改文本sed
sed
:替换文本内容,sed 选项 ‘sed command’ 文件
- -i 修改文本内容(不加的话只会修改内存暂存的内容,不会对文件进行修改)
- -e 多次编辑
- -n 抑制自动输出
- -r 正则扩展
sed command:
命令 | 作用 |
---|---|
s | 替换 |
g | 全局替换 |
d | 删除 |
p | 打印出来 |
w | 写入文件 |
a | 在匹配后一行插入内容 |
i | 在匹配前一行插入内容 |
/pattern/:含有pattern的每一行
10,20:10-20行
1~2:第1,3,5,7行
10,+5:第10行向下的5行
1. 输出2-3行,p和-n搭配使用
sed -n '2,3p' test.txt
2. 输出含有a的每一行
sed -n '/a/p' test.txt
3. 多次替换
sed -e 's/abc/ABC/g' -e 's/123/456/g' test.txt
4. 插入内容
sed -i '2a i am a girl' test.txt
2.4 压缩文件tar
tar
:打包不进行压缩,文件大小不变
- tar -cvf bao.tar 要打包的文件(可以多个)
- tar -xvf bao.tar 把打包的文件解开
- tar -zcvf tao.tar.gz 压缩文件,大小改变
- tar -zxvf tao.tar.gz -c ./xx 解压文件到指定文件夹
- -z 压缩文件的指令(gzip命令)
- -c打包 -v 加载信息 -f 指定文件名称 -x 解压
2.5 切换目录cd
cd
:切换目录
- cd - 返回上一次打开的目录
- cd /返回根目录
- cd … 返回上一级目录(两个冒号)
- cd ~ 返回当前用户目录
2.6 显示目录中文件ls
ls
:显示文件
- -l 列表显示
- -a 显示隐藏文件
- -al 显示所有文件及其属性
- 文件属性:-常规文件,d目录,l链接文件
- 文件所有权:rwxr–rwx分别表示文件所有者、组内其他人、系统中其他人的读写执行权限
- 文件权限:可读4、可写2、可执行1
pwd
:输出当前路径
2.7 拆分文件split
spilt
:
2.8 重命名文件mv/rename
mv
:移动文件,修改名称
- -i 询问是否覆盖
- -f 强制覆盖
- mv file1 file2 修改文件名称(只能单次修改一个文件)
rename
:批量重命名文件,rename 选项 pattern1 pattern2 file
1. 把所有的cfg文件类型更改为txt类型
rename .cfg .txt *.cfg
whoami
:输出用户名
who
:所有登录用户列表
ctrl+c
:退出进程
ctrl+z
:挂起进程,还可以重新启动
ln
:-s source name建立软链接,方便不同文件之间快速转换
less
:显示文件内容
more
:显示内容,分页显示,b往后,f往前
cat
:显示所有内容,适合内容较少的文件
head
:显示文件前几行内容
touch
:创建空文件
- touch {A,C,B}.txt 进行批量创建文件
- {}:批量操作符
mkdir
:创建空文件夹
- -p 递归创建
cp
:拷贝 源文件 目标文件
- -r 目录,递归
- -f 强制
- -i 询问是否覆盖
rm
:删除文件
- -r 删除目录
- -f 强制删除
df -h
:查看未使用的空间大小,disk free
du -sh
:查看当前空间占用,disk usage
- du -sh * 查看每个文件的占用情况
- du -h递归显示所有文件
wc
:统计
- -c 字节数
- -l 行数
- -w 字数
sort
:让文件里面内容按顺序排列
diff
:比较文件内容
alias
:sc=“source ~/.bashrc”设置别名 alias -p查看现有别名(改动之后要source一下)
ps -u
:查看当前进程,process status
top
:当前进程
kill -9 id号
:卡机强制关机
man
:联机查看命令使用方法
--help
:查看帮助
两者区别:pwd -help / man help
whereis
:查看命令所在位置
which
:输出命令的全路径
chowner
:设置文件所有者和文件关联组
chmod
:改变文件属性,读写模式
chgrp
:变更文件和目录所属的群组
clear
:清除屏幕
date
:查看时间
exit
:退出:
su
:切换用换 switch user
shutdown
:关机重启
tree
:显示文件的树形结构
>
:把内容输出给文件
>>
:追加内容
|
:管道符,接收左边指令的内容
sudo apt install/remove/update xxx
:软件按照/去除/更新指令
三、正则表达式
符号 | 含义 |
---|---|
. | 匹配任意一个字符 |
[abc] [a-z0-9] | 匹配方括号中的任意一个字符 |
[^abc] | 匹配除方框内的任意一个字符 |
\d | 匹配阿拉伯数字,等同于[0-9] |
\D | 匹配除阿拉伯数字以外的任意字符,等同于[^0-9] |
\x | 匹配十六进制数字,等同于[0-9a-fA-F] |
\X | 匹配除十六进制数字以外的任意字符,等同于[^0-9a-fA-F] |
\w | 匹配单词字母,等同于[0-9A-Za-z] |
\W | 匹配除单词字母以外的任意字符,等同于[^0-9A-Za-z] |
\s | 匹配空白字符,等同于[\t] |
\S | 匹配非空白字符,等同于[^\t] |
\t | 匹配TAB字符 |
符号 | 含义 |
---|---|
* | 0-任意个 |
+ | 1-任意个 |
? | 0-1个 |
{n, m} | n-m个 |
{n} | n个 |
{n,} | n-任意个 |
{, m} | 0-m个 |
1、表达式匹配举例
1、把所有单词help或Help都改为大写的HELP
:%s/[Hh]elp/HELP/g
2、使用单个空格替换一个或多个空格
:%s/ \+/ /g
3、删除所有空行
:g/^$/d
:g/^ [\t]* [\t]* $/d
4、删除含义某些单词的行
:g/ERROR/d
5、把PATH变量里面的冒号替换成换行符:
echo $PATH | sed 's/ \: / \n /g'
6、将每行开头的单词替换为(行号-10):
<:表示词首 >\:表示词尾 / \ =:等于右边的函数值
:%s/^\<\w\+\> /\= (line(".")-10)
7、删除以数字开头的行
:%s/^\d.*$//g
8、.删除以[a,b,c]开头的行
:%s/^[a|b|c].*$//g
9、在每一行的尾部加上一个句号(或其他字符)
:%s/$/./g
10、将文中所有abc替换成123(g全局替换,否则只改第一个)
:%s/abc/123/g
:3,5s/abc/123/g 特指3-5行的进行替换
2、对文件里面内容进行操作
1、删除所有空行:
sed 's/^$/d ' *.txt
2、删除所有只包含空格或者制表符的行:
sed 's/^[]*$/d' price.txt3.
3、删除所有引号:
sed 's/” //g' price.txt
3、使用 \(
和 )\
符号括起正规表达式,即可在后面使用\1
和\2
等变量来访问和中的内容
1、查找test开头的后面为一个或者多个空格,然后为一个单词。将test和这个单词调换位置.
:%s/\(test\)\s\+(\w\+)/\2 \1/g