首页 > 系统相关 >Linux 笔记

Linux 笔记

时间:2025-01-22 11:54:23浏览次数:1  
标签:文件 -- 用户 笔记 语法 指令 Linux 目录

目录

Linux 目录结构

Linux 目录与 Windows 目录对比

Windows 目录结构

[1569209157195.png]

Linux 目录结构

[1569209919838.png]
深刻理解 Linux 树状文件目录是非常重要的,只有记住他们,你才能在命令行中任意切换,想去哪里去哪里

Linux 世界里---一切皆文件

对于 Linux 而言,所有的东西都是文件
比如说,cpu 会映射到 /dev 下的 cpu 这个目录
再比如说,硬盘(disk)会被映射到 /dev 下的 disk 这个目录

Linux 目录结构详解

/bin

存放最经常使用的指令的,比如说 cp,ls,kill

/sbin

系统管理员使用的系统管理指令

/home

存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般该目录是以用户的账号命名的

/root

系统管理员的用户主目录

/boot

存放的是启动 Linux 时使用的一些核心文件

/lib

库文件存放目录

/etc

存放所有系统管理所需要的配置文件,比如说 mysql 中的配置文件,my.conf

/usr

用户的很多应用程序和文件都放在这个目录下,有点像 Windows 下的 program files 目录

/proc, 别动

这是系统内存的映射

/srv, 别动

service 的缩写,存放的是一些服务启动之后需要使用的数据

/sys, 别动

系统相关文件

/tmp

用来存放临时文件

/dev

类似于windows 的设备管理器,把所有的硬件用文件的形式存储

/media

Linux会识别一些设备,例如U盘,光驱等等,识别后,Linux会把识别的设备挂载到这个目录下

/mnt

用于让用户临时挂载别的文件系统,我们可以将外部的存储挂载在/nmt/上,然后进入该目录就可以查看里面的内容的,如我们之前设置的共享文件夹

/opt

正常这个文件夹是用来放安装包的

/usr/local

安装后的程序存放的地方

/var

存放经常需要被修改的文件,比如各种日志文件

/selinux

全名--- security enhanced linux, 安全加强 linux
这个类似于 windows 中的杀毒软件,是一种安全系统,比如收到攻击的时候这个文件会被触发

常用快捷键案例

  1. 拷贝当前行,并粘贴
    拷贝: yy
    粘贴: p
  2. 拷贝当前行向下 5 行,并粘贴
    拷贝 5 行: 5yy
  3. 删除当前行
    删除: dd
  4. 删除当前行向下 5 行
    删除 5 行: 5dd
  5. 光标移至最后一行
    G
  6. 光标移至首行
    gg
  7. 移动到第 7 行
    7gg
  8. 撤销
    u

常用命令

  1. 查找某个关键字
    /关键字
  2. 取消高亮
    :nohl
  3. 显示行号
    :set nu
  4. 取消行号
    :set nonu

开机/重启/用户切换/注销

关机/重启命令

shutdown 命令
	shutdown -h now :立即关机
	shutdown -h 2   :1分钟后关机
	shutdown -r now :立即重启
	shutdown -r 1	:1分钟后重启

halt
	关机
reboot
	重启
sync:
	把内存的数据同步到磁盘

特别注意: 当关机或重启前,都应当先执行一下 sync 指令,把内存的数据写入磁盘,防止数据丢失

用户切换/注销

切换用户

su - 用户名	切换用户
exit		  回到原来用户

注销用户

前提:图形界面无效
logout

用户管理

查看所有用户

cat /etc/passwd |cut -f 1 -d :

用户的信息是保存在 /etc/passwd 下的

cat /etc/passwd

但是这些行包含了很多信息,看起来不太舒服。
[Pasted image 20250122103327.png]

cut 裁剪行

cut -f 1 -d :
参数 作用
-d : 自定义 : 为分隔符(define)
-f 1 选择裁剪后的第一个域(field)

这样就只输出每行首部的 username
[Pasted image 20250122103431.png]

用户总数

[Pasted image 20250122103504.png]

添加用户

基本语法

useradd  [选项]  用户名

例子:
useradd lxx 

说明:
1.创建用户成功后会自动创建和用户名同名的家目录
指定家目录
useradd -d 目录路径 用户名


指定用户组
useradd -g 用户组名 用户名

给用户指定或修改密码

基本语法

passwd 用户名

删除用户

基本语法

userdel 用户名			删除用户,保留家目录
userdel -r 用户名		删除用户,不保留家目录

说明

正常在我们删除用户的时候,一般会保留家目录

查询用户信息

基本语法

id 用户名

切换用户

基本语法

su - 用户名		  切换用户
exit			  返回原来用户

用户组

查看用户组

因为 /etc/group 文件是用户组的配置文件,所以可以在这个文件里查看所有的用户组信息哦,

cat /etc/group 

增加组

groupadd 组名

删除组

groupdel 组名

前提:组内不能有用户,否则无法删除

修改用户的组

基本指令

usermod -g 组名 用户名

用户配置文件 /etc/passwd

这是用户的配置文件,记录着用户的各种信息
每行含义:用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell

cat /etc/passwd

口令配置文件 /etc/shadow

口令配置文件
存用户密码和相关时间的地方

cat /etc/shadow

组的配置文件 /etc/group 文件

组的配置文件

cat /etc/group

实用指令

指定运行级别

  • 运行级别说明:
    • 0: 关机
    • 1: 单用户[找回丢失密码]
    • 2: 多用户状态[无网络服务]
    • 3: 多用户状态[有网络服务]
    • 4: 保留级别
    • 5: 图形界面
    • 6: 系统重启

修改默认运行级别

vim /etc/inittab

修改最后一行:
id:5:initdefault:

切换运行级别

基本指令

init [012356]

帮助指令

man 指令及配置文件
help shell内置指令

文件目录指令

pwd 指令

pwd		显示当前所在的目录

ls 指令

列出目标目录中所有的子目录和文件

ls [选项] [目录或文件]		查看文件信息
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件。

-A同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。

-c  配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序-C 每栏由上至下列出项目

–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是’never’、’always’或’auto’其中之一

-d, –directory 将目录象文件一样显示,而不是显示其下的文件。

-D, –dired 产生适合 Emacs 的 dired 模式使用的结果

-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效

-g 类似-l,但不列出所有者

-G, –no-group 不列出任何有关组的信息

-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)

–si 类似 -h,但文件大小取 1000 的次方而不是 1024

-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地

–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)

-i, –inode印出每个文件的 inode 号

-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目

-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。

-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。

-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息

-m所有项目以逗号分隔,并填满整行行宽

-o 类似 -l,显示文件的除组信息外的详细信息。

-r, –reverse 依相反次序排列

-R, –recursive 同时列出所有子目录层

-s, –size 以块大小为单位列出所有文件的大小

-S 根据文件大小排序–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
	extension -X status -c
	none -U time -t
	size -S atime 
	-utime -t access -u
	version -v use -u

-t 以文件修改时间排序

-u 配合 -lt:显示访问时间而且依访问时间排序
	- 配合` -l`:显示访问时间但根据名称排序
	- 否则:根据访问时间排序
	
-U 不进行排序;依文件系统原有的次序列出项目

-v 根据版本进行排序

-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值

-x 逐行列出项目而不是逐栏列出

-X 根据扩展名排序

-1 每行只列出一个文件

–help 显示此帮助信息并离开

–version 显示版本信息并离开

cd 指令

cd 路径
cd ~:	回到家目录
cd ..:  回到上一级目录

mkdir 指令

mkdir [选项] 路径		创建文件夹
mkdir -p 路径			 创建多级文件夹

rmdir 指令

rmdir [选项] 路径		删除空文件夹
rmdir -r 路径			 递归删除空文件夹

文件夹下有内容,则无法删除

touch 指令

touch 文件路径

可以一次创建多个文件(不是文件夹)
touch 文件路径1 文件路径2

-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。

cp 指令

拷贝文件到目标路径

基本语法

cp [选项] 源路径 目标路径

cp 源路径 目标路径  			拷贝单个文件
cp -r 源路径 目标路径			拷贝文件夹

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

补充

当拷贝时发现相同文件,会提示[是否覆盖?]

\cp [选项] 源路径 目标路径		取消提示,强制复制

rm 指令

删除目录或者文件

基本语法

rm [选项] 目标路径

rm 文件路径			删除文件
rm -r 文件夹路径		删除文件夹
rm -f xxxx			强制删除不提示

-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

mv 指令

移动文件或重命名

基本语法

mv 源路径 目标路径

-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

cat 指令

显示文件内容

基本语法

cat [选项] 文件路径

cat 文件路径		显示文件内容
cat -n 文件路径		显示文件内容,并显示行号

-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;

补充说明

正常情况为了方便阅读,我们会在 cat 指令最后加上管道符"
|",把内容传给 more,分页显示
如:

cat -n /etc/profile | more

more 指令

more 指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容
more 指令中内置了很多快捷键,用起来很方便

基本语法

more 文件路径
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数

快捷键

空格			向下翻一页
Enter		 向下翻一行
q			 立即离开
Ctrl+F		 向下滚动一屏
Ctrl+B		 向上滚动一屏
=			 显示当前行号
:f			 输出文件名和当前行号

less 指令

比 more 更加强大,功能比 more 更多

基本语法

less [参数] 文件路径

-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似 more 命令的百分比
-N 显示每行的行号
-o <文件名> 将 less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

快捷键

空格			  向下翻一页
pagedown		  向下翻一页
pageup			  向上翻一页
/字符串		      向下查找[字符串],n下一个,N上一个
?字符串			  向上查找[字符串],n下一个,N上一个
q				  离开 less

>指令 >>指令

基本说明

把前方语句的结果存进文件,若文件不存在会自动创建

>:输出重定向			会覆盖原来文件内容
>>:追加重定向		追加到文件末尾

echo 指令

把内容输出到控制台

如下:
echo "我是杨家三少"
echo $PATH

head 指令

head
用于显示文件的开头部分内容,默认情况下
head 指令显示文件的前
10 行内容

基本语法

head [参数] [文件] 
head 文件路径			查看文件前10行
head -n 5 文件路径		查看文件前5行

-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。

tail 指令

tail
用于显示文件的结尾部分内容,默认情况下 tail 指令显示文件的后 10 行内容

基本语法

tail [参数] [文件]  
tail 文件路径			查看文件前 10 行
tail -n 5 文件路径		查看文件前 5 行
tail -f 文件路径		实时追踪文件所有的更新-----经常使用

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与 -f 合用,表示在进程 ID,PID 死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与 -f 合用,表示在每次反复的间隔休眠 S 秒

ln 指令

软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径

ln [参数][源文件或目录][目标文件或目录]
ln -s 源文件或源文件夹 软连接名

必要参数:
--backup[=CONTROL] 备份已存在的目标文件
-b 类似 --backup ,但不接受参数
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息

history 指令

查看已经执行过历史命令,也可以执行历史指令

history 		查看所有的历史指令
history 10		查看最近执行的 10 条指令
!100			执行编号为 100 的指令

-N: 显示历史记录中最近的N个记录;
-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中;
-d<offset>:删除历史记录中第 offset 个命令
-n<filename>:读取指定文件

时间日期类

date 指令

基本语法

date 			显示当前日期
date +%Y		显示当前年份
date +%m		显示当前月份
date +%d		显示当前天
date "+%Y-%m-%d %H:%M:%S"

cal 指令

查看日历

cal 		显示当前日历
cal 2020 	显示 2020 年的日历

find 指令

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于 windows 的查找

选项:
-name 文件名		按文件名查找
-user 用户名		查找属于该用户的所有文件
-size 			  按文件大小查找
	+20M
	-20M
	20M
	20K
	
	
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去 n 天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去 n 天内创建的文件

-mtime n : 在过去 n 天内修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

-type c : 文件类型是 c 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id 是 n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2

grep 指令 和 管道符号 |

管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理
grep: 过滤查找

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
grep [选项] 过滤内容

选项:
-n		显示匹配行及行号
-i		忽略字母大小写

-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。

压缩和解压类

gzip/gunzip 指令

用于压缩和解压文件

gzip 文件路径  压缩
gunzip gz 文件路径   解压缩

说明:使用 gzip 压缩文件之后,不会保留原来的文件

zip/unzip 指令

zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的

zip [选项] xxx.zip 被压缩内容			压缩文件或者目录

-r 								压缩目录
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。

unzip [选项] xxx.zip  			    解压文件	
	-d 目录							指定压缩后的存放目录

tar指令

tar 指令 是打包指令,最后打包后的文件是
.tar.gz的文件

压缩:
tar -zcvf xx.tar.gz  被压缩内容			 		   压缩
tar -zxvf xx.tar.gz	 -C 目标路径					解压

z:使用gzip格式压缩
c:创建压缩包
x:解压
f:显示压缩解压过程

组管理和权限管理

查看文件的所有者

ls -ahl

修改文件所有者

chown 用户名 文件名

组的创建

groupadd 组名

文件/目录 所在组

查看文件/目录 所在组

ls –ahl

修改文件所在组

chgrp 组名 文件名

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用
root 的管理权限可以改变某个用户所在的组

usermod	–g	组名	用户名

权限

ls -l
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

0-9 位说明
第 0 位确定文件类型(d,-,l)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
第 7-9 位确定其他用户拥有该文件的权限

rwx 权限详解

rwx作用到文件

r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行

rwx作用到目录

r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]

修改权限

chmod 权限变更格式 文件或目录路径

权限变更格式一:
u:所有者	g:所有组	o:其他人	a:所有人

1. u=rwx,g=rx,o=x
2. o+w					其它用户增加w权限
3. a-x					所有人减去执行权限
权限变更格式二:
r = 4   w = 2  x = 1	rwx = 7	  rx = 5
chmod u=rwx,g=rx,o=x   可以写成		chmod 751

修改文件所有者

chown newowner file			改变文件所有者
chown -R newowner 文件夹	  使得所有子文件或子目录生效

修改文件所在组

chgrp newgroup file			改变文件所有组
chgrp -R newgroup 文件夹	  使得所有子文件或子目录生效

crond 任务调度

基本语法

crontab [选项]

	-e : bianji crontab定时任务
	-l : 查询crontab
	-r : 删除当前用户所有的crontab任务

进程管理

显示系统执行的进程 (ps)

说明

查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep

ps 指令详解

BSD风格 详解

user 			用户名称
pid				进程号
%cpu			进程占用cpu百分比
%%mem			进程占用物理内存的百分比
vsz				进程占用虚拟内存的大小
rss				进程占用物理内存的大小
tty				终端名称(后台则为?)
stat			进程状态
	S:睡眠
	s:会话的先导进程
	N:进程拥有比普通优先级更低的优先级
	R:正在运行
	D:短期等待
	Z:僵尸进程
	T:被跟踪或者被停止
start			进程启动时间
time			使用cpu总时间
command			启动进程所用的命令和参数,如果过长会被截断显示

system V 风格详解

uid 			用户id
pid				进程id
ppid			父进程id
C				进程占cpu百分比
stime			进程启动时间
tty				终端名称(后台则为?)
cmd				启动进程所用的命令和参数

终止进程 kill 和 killall

基本语法:

kill 进程号
	-9 强迫进程立即停止
killall 进程名称

查看进程树 pstree

pstree [选项]
	-p    查看进程pid
	-u	  查看进程所属用户

服务(service)管理

说明

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程

基本使用

service 服务名 [start | stop | restart | reload | status]

查看服务名

/etc/init.d 此文件夹下放着系统都有哪些服务

ls -l /etc/init.d

服务器运行级别(runlevel)

查看或者修改默认级别:	vi /etc/inittab

Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

chkconfig 指令

说明

通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关

基本语法

chkconfig							  查看每个服务的配置
chkconfig 服务名	  					  查看具体服务的配置
chkconfig --level 5 服务名  on/off     给服务设置是否自动启动

chkconfig 重新设置服务后自启动或关闭,需要重启机器
reboot
才能生效

动态监控进程 (top)

说明

top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于
top 在执行一段时间可以更新正在运行的的进程

基本语法

top [选项]
	-d			指定每隔几秒更新,默认 3 秒
	-i			不显示任何闲置或者僵尸进程
	-p id号		监听指定进程


交互操作:
P		以 cpu 使用率排序,默认就这个
M		以内存使用率排序
N		以 pid 排序
u		监听具体用户
k		终止指定进程
q		退出 top

rpm 和 yum

rpm 包的管理

介绍

一种用于互联网下载包的打包及安装工具.它生成具有 .RPM
扩展名的文件。RPM
是 RedHat
Package Manager(RedHat 软件包管理工具)的缩写,类似
windows 的 setup.exe

rpm 包的简单查询指令

rpm	–qa				查询已安装的 rpm 列表

rpm 包名的基本格式

一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm

firefox:名称
45.0.1-1:版本号
el6.centos.x86_64:centos6.X---64位

rpm 其它指令

rpm -q 软件包名		 		 查看是否已经安装
rpm -qi 软件包名	 			 查看软件包信息
rpm -ql 软件包名	 			 查看软件包中的文件安装位置
rpm -qf 文件(如:/etc/passwd)	 查看某个文件属于哪个 rpm 包

卸载 rpm 包

rpm -e 包名

包依赖问题:
如果其它软件包依赖于你要卸载的软件包,卸载时则会产生错误信息

 rpm -e --nodeps 包名				强制删除

安装 rpm 包

rpm -ivh RPM 包全路径名称

i:install 安装
v:verbose 提示
h:hash 进度条

yum

说明

Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
类型 python 中的 pip

基本指令

yum list|grep xx		查询 yum 服务器上是否有需要安装的包
yum install xxx			下载安装

shell 编程

说明

Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的系统级程序

shell 编程打印 hello world

代码部分

#!/bin/bash
echo 'hello world'

代码解释:
1.#!/bin/bash:
​ 告诉计算机,使用 bash 解释器来执行代码
2.echo:
​ 控制台输出

执行代码

方式一:

给脚本可执行权限

chmod 744 myshell.sh

然后直接运行脚本

方式二:(不推荐)

直接调用 shell 解释器执行

sh myshell.sh

注释

单行注释

#内容

多行注释

:<<!
内容
!

变量

变量的介绍

  1. Linux 中变量的分类:系统变量 自定义变量
  2. 系统变量:
    • $PATH
    • $HOME
    • $PWD
    • $SHELL
    • $USER
  3. 显示当前shell中所有的变量 :set

变量的定义

基本语法

1.定义变量:变量名=变量值
2.撤销变量:unset 变量名
3.声明静态变量:readonly 变量名.		静态变量不能 unset

定义规则

1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2.等号两侧不能有空格
3.变量名称一般习惯为大写

将命令的返回值赋给变量

1.A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量 A
2.A=$(ls -la) 等价于反引号

设置环境变量

基本语法

1.export 变量名=变量值		  将 shell 变量输出给环境变量
2.source 配置文件			  让修改后的配置信息立即生效
3.echo $变量值				  查看环境变量的值

位置参数变量

介绍

当我们执行一个 shell
脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

基本语法

  1. $n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
  2. $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
  3. $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
  4. $#(功能描述:这个变量代表命令行中所有参数的个数)

预定义变量

介绍

就是 shell 设计者事先已经定义好的变量,可以直接在
shell 脚本中使用

基本语法

$$ 	(功能描述:当前进程的进程号(PID))
$!	(功能描述:后台运行的最后一个进程的进程号(PID))
$?	(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行失败)

运算符

基本语法

1.$((运算式))
2.$[运算式]
3.`expr m + n`
	特点:运算符之间要有空格
	+
	-
	/
	%
	\*
	\(	\)

判断

基本语法

[ 条件 ]			注意:条件前后要有空格

特别的:
[ 非空 ]	  为true
[]		   为false
[ haha ] && echo true || echo false

判断语句

字符串比较

=	判等
!=  判不相等

整数比较

-lt		小于
-le		小于等于
-gt		大于
-ge		大于等于
-eg		等于
-ne		不等于

文件权限判断

-r	有读的权限	[ -r 文件 ]
-w	有写的权限
-x	有执行权限

文件类型判断

-f 存在并且是一般文件	[-f 文件]
-e 文件存在
-d 存在并且是一个目录

流程控制

if 判断

基本语法

if [ 条件 ]
then
	代码
fi
if [ 条件 ]
then
	代码
else
	代码
fi
if [ 条件 ]
then
	代码
elif [ 条件 ]
then
	代码
else
	代码
fi

case 选择分支

基本语法(相当诡异,令人发指, what a fuck)

case $变量名 in
'值1')
代码
;;
'值2')
代码
;;
*)
代码					都没命中执行
;;
esac

for 循环

遍历

基本语法
for 变量 in 值1 值2 值3
do
	代码
done

循环

基本语法
for {{初始值;循环条件;变量变化}}
do
	代码
done

while 循环

基本语法

while [ 条件 ]
do
	代码
done

与用户交互

基本语法

read 选项 变量
选项:
-p:提示信息
-t:等待输入的时间

函数

系统函数

获得路径最后一部分 (basename)

基本语法
basename [pathname] [suffix]


如果指定的 suffix,那么会去掉结果中 suffix 的部分

获得基础路径 (dirname)

基本语法
dirname [pathname]

自定义函数

基本语法

function 函数名(){
	代码;
	#参数使用:$1,$2,...,${10}...
	return xxx;
}

调用:
函数名 值1 值2

标签:文件,--,用户,笔记,语法,指令,Linux,目录
From: https://www.cnblogs.com/TMesh/p/18685470

相关文章

  • 【linux】文件与目录命令 - vim
    文章目录1.基本用法2.常用参数3.用法举例4.多种模式5.注意事项vim是一款功能强大的文本编辑器,适用于代码编辑和日常文本处理。它是vi的增强版,支持多种模式(如普通模式、插入模式和命令模式)以及插件扩展。1.基本用法语法:vim[选项][文件]功能:编......
  • Linux事件循环
    在Linux中,事件循环是一种编程模式,通常用于处理并发事件或异步操作。它的核心思想是,程序在一个主循环中不断检查事件队列,处理这些事件并执行相应的操作,而不是阻塞等待每个操作完成。事件循环在很多高性能网络服务器和异步I/O框架中得到了广泛应用。事件循环的基本原理:事件检测:事......
  • 下降幂、斯特林数学习笔记
    下降幂注:这里其实还有上升幂。定义下降幂:\(x^\underline{k}=\prod\limits_{i=x-k+1}^xi=\frac{x!}{(x-k)!}\)上升幂:\(x^\overline{k}=\prod\limits_{i=x}^{x+k-1}i=\frac{(x+k-1)!}{(x-1)!}\)性质幂相加:\[n^\underline{a+b}=n^\underlinea(n-a)^\underlineb\]\[n^\overl......
  • 腾讯通RTX停更后升级路径,兼容移动端和Linux系统
    一、腾讯通RTX继续使用的核心痛点随着腾讯通RTX停止更新并下架官网,用户无法再获得技术支持、版本更新和资源下载服务,日常办公面临诸多不便。以下几个问题尤为突出:●不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac系统,无法运行在统信UOS、银河麒麟等国产操作系统和Android......
  • Linux部署Python Web服务
    以下展示了在Linux上部署Flask应用时,使用 Nginx和Gunicorn 配合的两种绑定方式:绑定端口 和 绑定UNIX套接字(.sock) 的完整流程。1.准备工作确保已经安装以下组件:sudoaptupdatesudoaptinstallpython3python3-pippython3-venvnginx创建Flask项目......
  • 408数据结构笔记(Day 1)
    学习数据结构基础(c语言): 一、什么是分支(if/lese、switch),循环(for、while、dowhile)?程序的三种结构:顺序,分支,循环1、顺序:按照先后顺序执行比如:inta=2; ①doubleb=3.0;②先执行第①步,然后执行第②步。2、分支:可以使用 if、switch 实现分支结构if语句if(条件)......
  • Catlike Coding Custom SRP笔记 - 平行光
    原文链接:DirectionalLights 效果图 CustomRenderPipelineAsset.cs[CreateAssetMenu(menuName="Rendering/CustomRenderPipeline")]publicclassCustomRenderPipelineAsset:RenderPipelineAsset{publicbooluseDynamicBatching=true;//启用动态......
  • Linux性能分析
    sudoyuminstall-yepel-releasesudoyumupdate-ysudoyumgroupinstall-y"Developmenttools"sudoyuminstall-yelfutils-libelf-develcmake3gitbisonflexncurses-develsudoyuminstall-yluajitluajit-devel#forLuasupportcurl-LOh......
  • 【Linux网络】深入理解linux内核网络性能优化
    一、网络请求优化1.1减少不必要的网络IO在系统设计与开发过程中,应尽量避免不必要的网络I/O操作,尤其是在可以通过本地进程或内存内完成的场景下,避免使用网络通信来实现。网络虽然是现代分布式系统中的核心组件,能够连接不同模块、简化开发流程,并支持大规模系统的构建,但滥用网络会......
  • 计算机网络(哈工大版)-笔记1
    第一章·计算机网络概述计算机网络(简称网络)有若干个结点(node)和链接这些结点的链路(link)组成。网络中的结点可以是计算机,集线器,交换机或者路由器等。网络把许多计算机连接在一起,而互连网把许多网络通过路由器连接在一起。与网络相连的计算机常称为主机。互联网的应用有形......