Linux命令大全
$ docker run -it alpine
/ # ls
bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
/ # cd ..
/ # pwd
/
/ # root
/bin/sh: root: not found
/ # cd ~ # 切换文件夹
~ # pwd # 查看当前所在文件夹
/root
~ # mkdir test # 创建文件
~ # ls
test
~ # rm ./test/
rm: './test' is a directory
~ # rm -rf ./test/ # 删除文件 强制删除
~ # ls
~ # vi 123.txt # 创键文件
~ # vi 456.txt
~ # ls # 查看全部的文件
123.txt 456.txt
~ # find 123.txt # 查找文件
123.txt
~ # find 1* # 模糊查找
123.txt
~ # cat 123.txt # 查看文件名123.txt 的内容
hello world
my name is hao
15090393189
~ # grep "hello" * # 以文件内容进行查找
123.txt:hello world
~ # grep "1509" *
123.txt:15090393189
~ # grep "1" *
123.txt:15090393189
~ # diff -w 123.txt 456.txt # 比较文件的不同
--- 123.txt
+++ 456.txt
@@ -1,3 +1 @@
-hello world
-my name is hao
-15090393189
+
~ # cat 456.txt # 查看文件名123.txt
~ # tail 123.txt # 从文件的尾部进行查看
hello world
my name is hao
15090393189
~ # head 123.txt # # 从文件的头部进行查看
hello world
my name is hao
15090393189
~ # ps # 查看进行的进程
PID USER TIME COMMAND
1 root 0:00 /bin/sh
30 root 0:00 ps
~ # kill 30 # 杀死进程id为30的进程
sh: can't kill pid 30: No such process
~ # netstat #
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
~ # free # 查看资源的使用
total used free shared buff/cache available
Mem: 1013200 88140 466196 287988 458864 639568
Swap: 1190736 0 1190736
~ # free -m # 查看资源 单位M
total used free shared buff/cache available
Mem: 989 86 455 281 448 625
Swap: 1163 0 1163
~ # df -h # 查看硬盘的使用 第一行
Filesystem Size Used Available Use% Mounted on
overlay 17.8G 171.5M 16.7G 1% /
tmpfs 64.0M 0 64.0M 0% /dev
tmpfs 494.7M 0 494.7M 0% /sys/fs/cgroup
shm 64.0M 0 64.0M 0% /dev/shm
/dev/sda1 17.8G 171.5M 16.7G 1% /etc/resolv.conf
/dev/sda1 17.8G 171.5M 16.7G 1% /etc/hostname
/dev/sda1 17.8G 171.5M 16.7G 1% /etc/hosts
tmpfs 494.7M 0 494.7M 0% /proc/asound
tmpfs 494.7M 0 494.7M 0% /proc/acpi
tmpfs 64.0M 0 64.0M 0% /proc/kcore
tmpfs 64.0M 0 64.0M 0% /proc/keys
tmpfs 64.0M 0 64.0M 0% /proc/timer_list
tmpfs 494.7M 0 494.7M 0% /proc/scsi
tmpfs 494.7M 0 494.7M 0% /sys/firmware
~ #
clear 清屏
1. vi: not found报错
(21条消息) Docker—(6)问题:bash: vi: command not found_IT云清-CSDN博客_found
apt-get install vim
# 若报: E: Unable to locate package vim
# 则
apt-get update
apt-get install vim
Linux指令
ls -a # 获取文件列表
ls -al filename # 展示文件当前的权限 湖区filename下文件的权限列表 ,默认的时当前文件下的
chmod -R 777 filename # 修改filename的权限 -R 表示递归的修改filename下的所有文件的权限
mkdir directory # 创建文件夹
pwd # 打印当前文件路径
cd directory # 进入文件
touch file # 创建一个文件,
cat file # 从头开始查看文件
tac file # 倒着查看文件
nl [-bnw] file # 带行号的显示文件 -ba 空行显示行号, -bt不显示
# -n ln :行号在荧幕的最左方显示;
# -n rn :行号在自己栏位的最右方显示,且不加 0 ;
# -n rz :行号在自己栏位的最右方显示,且加 0 ;
# -w 行号栏位的占用的位数。
head/tail -n 行数 filename # 从头部或尾部查看文件 -n s
rmdir -p # 递归删除文件
rm -rf # -rf 递归强制删除
find / -name filename # 在指定的 / 下面查找文件filsename
du -sh file # 估算文件所使用的磁盘空间
du -sk * | sort -rn # 以容量大小为依据一次显示文件和目录的大小
df -h dirname # 查看磁盘的使用 第一行 ,diraname 文件名,默认全部
free # 查看资源的使用(Kb) -m 以Mb为单位返回结果
45 个常用Linux 命令,让你轻松玩转Linux! - 掘金 (juejin.cn)
1. find
find path -option [ -print ] [ -exec -ok command ] {} \ ;
# path 无 使用当前的路径
expression:
-mount, -xdev 只检查和指定目录在同一个文件系统下的文件, 避免列出其他系统下的文件
-amin n 在过去n分钟内__被读取过__的
-anewer file 比文件file 更晚__被读取__过的文件
-atime n 在过去n天内被读取过的文件
-cmin n 在过去n分钟内被修改过的文件
-cnewer file 比文件file更晚__被修改过__的文件
-ctime 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
# 实例:
find . -name "*.c" 当前目录及其子目录下所有文件后缀为 .c 的文件列出来
find . -type f 当前目录及其子目录中的所有文件列出
find . -ctime 20 当前目录及其子目录下所有最近 20 天内更新过的文件列出:
find /var/log -type f -mtime +7 -ok rm {} \; /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find . -type f -perm 644 -exec ls -l {} \; 当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find / -type f -size 0 -exec ls -l {} \; 系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
2. linux修改root账号密码
# 安装系统时,你的root用户是被隐藏的,并且此时的root用户密码是随机的,每一次开机都会有一个新的密码。所以我们如果想启用root用户,我们就必须去修改他的密码:
sudo passwd root
# 使用下面命令 移除密码再次锁定root用户
sudo passwd -dl root
# 启用root, 输入下面命令, 然后, 输入密码出来# 表示可以了, exit退出
sudo root
# 切换用户
sudo --username
3. linux常用操作命令
linux命令语法格式
- 命令格式: 命令 [-选项] [参数]
- 示例: ls -la /etc #显示根目录下etc文件下的所有文件, 包含隐藏文件
- 说明:
- 个别命令使用不遵循此格式, []符号标识非必要选项 #chmod u+x 1.txt
- 当有多个选项时,可以写在一起
- 简化选项(一个-)与完整选项(两个–), 比如 la -a 等于 ls --all
linux命令分类
分类 | 命令 |
---|---|
登录和电源管理 | login, shutdown, halt, reboot, install,exit, last,… |
文件处理 | file, mkdir, grep, dd, find, mv, ls, diff, cat, ln,… |
系统管理 | df, top, free, quota, ata, ip, kill, crontab, … |
网络操作 | ifconfig, ip, ping, netstat, telnet, ftp, route rlogin, rcp, finger, mail, nsloopkup… |
系统安全 | passwd, su, umask, chgrp, chmod, chown, chattr, sudo ps, who,… |
其他 | tar, unzip, gunzip, unarj, mtools, man |
用户管理
登录命令login
- login的作用是登录系统, 使用权限时所有用户
- 如果使用命令行模式登录Linux的话, 看到的第一个linux命令就是login
登录查看命令:last
# 查看最近登录的用户
last
# 最近3条用户的登录记录
last -n 3 或 last -3
# 最近某个用户的登录记录
last root
# 最近莫格控制台的登录记录
last tty1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qY7mRmJS-1662364108969)(./all_picture/linux_last.jpg)]
区分用户类别
-
通过查看不同用户的UID来区分用户的 类别: 超级用户, 普通用户, 虚拟用户
-
查看UID命令: id [option] [username]
-
相关参数: -r和-n是配合-u和-g使用
- -u -user只输出有效UID
- -g 只输出gid
- -n -name对于-ugG输出名字而不是数值
- -r -real对于-ugG输出真实ID, 而不是有效ID
-
UID为0时, 标识的是超级用户(root), UID为1000-60000之间,标识的是普通用户, UID为1-999之间, 标识的 是虚拟用户(即系统用户)
创建用户: useradd
-
useradd命令用来创建用户账号,并保存在/etc/passwd文件中
-
语法: useradd [options] username
- -u 指定用户UID
- -o 配合"-u"属性, 允许UID重复
- -g 指明用户所属基本组,即可位用户组名, 也可为GID(该组必须已存在)
- -d 指定用户的home目录, 并自动创建用户home目录
- -s 指明用户的默认shell程序
- -D 显示或更改默认配置
# 查看passwd 文件下最后5行的数据 tail -5 /etc/passwd
修改用户: usermod
- usermod可用来修改用户账号的 各类信息
- 语法: usermod [options] username
- -u 修改用户UID 例: usermod -u 1004 zhy
- -g 修改用户所属用户组
- -l 修改用户账号名称 -L可以锁定指定用户, 使其无法登录
- -d 修改用户的home目录, 例:usermod -d /home/zhy01 zhy
- -s 修改用户默认shell程序
删除用户userdel
- userdel用于删除指定的用户以及该用户的相关文件
- 语法: userdel [options] username
- -f 强制删除用户账号, 即便用户当前处于登录状态
- -r 删除用户, 同时删除与用户相关的文件
- -h 显示命令的相关信息
- userdel命令用于删除指定的用户以及用户相关的文件, 实际上是对系统的用户账号文件进行了修改
修改用户密码 passwd
-
语法: passwd [options] username
-
-n 设置修改密码最短天数
-
-x 设置修改密码最长天数
-
-w 设置用户在密码过期前多少天收到警告信息 -1 立即使用户的密码过期
-
-i 设置密码过期多少天后禁用账号 -l 立即锁定用户, -u立即解除用户的锁定
-
-d 删除用户密码, 如果 用户处于锁定状态, 会被解锁
-
-S 显示用户密码信息,(/etc/shawdow文件下,)
root用户可以修改任何用户的密码, 普通用户只能修改自身的买买买
-
用户组的管理
- 用户组: 具有相同特性用户的逻辑集合,通过组的形式使得具有相同特性得 多个用户能够拥有相同得权限,便于管理
- 每一个用户都拥有自己的私有组
- 同一组内的用户可以共享改组下的文件
- 每一个用户组都会被分配一个特有的id号-gid
- 用户组gid, 和用户UID类似, 作为唯一标识来表示系统的一个用户组
- 在添加账号时, 默认情况会同时建立一个同名且UID和GID相同的组
- GID和UID都会将0赋予给超级用户或者具有超级用户的 用户组(即root用户组)
- 系统会预留一些较前的GID给虚拟用户(即系统用户)
- 可以通过输入命令行id [options] [username], 查看用户组gid以及每个用户组下拥有的用户数量
- 用户组的分类
- 普通用户组: 可以加入多个用户
- 系统组: 一般加入的用户为系统用户
- 私有组: 也称为基本组, 在创建用户时, 如果没有为其指明所属用户组, 则会为该用户定义一个私有的 用户组, 且该用户组名称和用户名同名
创建用户组 groupadd
- groupadd用来创建一个新的用户组, 并将新用户组信息添加到系统文件中
- 语法: groupadd [options] groupname
- -f 如果组已经存在, 则成功退出
- -g 为新用户组所使用的GID
- -h 显示此帮助信息并退出
- -o 允许创建有重复GID的组
- -p 为新用户组使用此加密过的密码
- -r 创建一个系统账户
修改组
- groupmod 可用来修改群组识别码或者名称
- 语法: groupmod [options] groupname
- -g 修改要使用的GID
- -h 显示此帮助信息并退出
- -n 修改为要使用的组名称
- -o 允许使用重复的GID
- -p 更改密码(加密过的)
删除组
-
groupdel 可用来删除用户组, 但若有用户组中包含一些用户, 需要先删除掉用户后再删除用户组
-
语法: groupdel [options] groupname
-
-f 即便是用户的主组以继续删除
-
-h 显示此帮助信息并退出
groupdel命令用于从系统中删除组,需要注意的是, 若是组中仍然包含某些用户, 此时需要先删除掉用户后再删除用户组
-
关联用户和组gpasswd
-
gpasswd可以用来添加或者 删除用户到组中
-
语法: gpasswd [options] groupname
-
-a 向组group中添加用户user 例: gpasswd -a zhy admin
-
-d 从组group中删除用户
-
-M 设置组group的成员列表
-
-A 设置组group的管理员列表
-
-r 移除组group的 密码
-
-R 向其成员限制访问组group
-
-Q 要chroot进的目录
groups username 用来查看用户所属的组
-
用户管理所关联的文件
-
/etc/passwd:用户账户信息文件
-
该文件中, 保存着系统中所有用户的主要信息, 每一行代表一个记录
-
每一行用户记录中定义了用户哥哥方面的相关属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3l8M461-1662364108970)(./all_picture/etc_passwd20220723031751.png)]
-
-
/etc/shadow: 用户账户信息加密文件(又称: 影子文件)
-
用于存储系统中用户的密码信息
-
由于/etc/passwd文件允许所有用户读取, 容易导致密码泄露,因此将密码信息从这个文件中分离出来.单独放置在/etc/shadow文件中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-waBAQuIG-1662364108970)(./all_picture/etc_shadow1658517610.jpg)]
-
用户组关联的文件
-
/etc/group 组信息文件
-
该文件中, 保存着用户组的所有信息, 每一行代表一个用户组
-
将用户分组时对用户进行管理及控制访问权限的一种手段, 每个用户都属于一个用户组, 一个组中可以有多个用户,一个用户也可以属于不同的组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kic4zLOO-1662364108970)(./all_picture/etc_group20220723033134.png)]
-
-
/etc/gshadow 组信息加密文件
- 该文件中,会保存用户组的加密信息, 比如说用户组的管理密码就保存在此(类似shadow文件)
- 与/etc/group文件互补, 对于大型服务器来说, 拥有很对用户和组, 此时会针对这些用户和组来生成一些复杂的 权限模型, 此时设置并管理密码就显得尤为重要
文件权限
- 权限示例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTlUQ2Tn-1662364108971)(./all_picture/persion_20220723033514.png)]
-
文件类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FqRo5lDJ-1662364108971)(./all_picture/file_types20220723033826.png)]
-
文件权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGw1wCAj-1662364108971)(./all_picture/file_persion20220723034135.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4TWP2dq2-1662364108971)(./all_picture/persion1658519400.jpg)]
修改文件权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-77gxIPZO-1662364108972)(./all_picture/chmod_20220723040828.png)]
chown
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SqtP0V9C-1662364108972)(./all_picture/chown_20220723041306.png)]
chgrp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkizEhUH-1662364108972)(./all_picture/chgrp_20220723041544.png)]
umask
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHfNwsGA-1662364108972)(./all_picture/umask_20220723041757.png)]
sudo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Grhj8OMc-1662364108973)(./all_picture/sudo_20220723041928.png)]
语法命令
电源命令: shutdown
- shutdown 命令作用是关闭计算机, 使用权限是超级用户
- 主要参数:
- -h: 关机后关闭电源
- -r: 关机后打开电源(相当于重启)
- -t: 在改变到其他运行级别之前, 告诉init程序多久以后关机
- -k: 并不真正关机, 只是送警告信号给每位登录者
- -F: 在重启计算机时强迫fsck
- -time: 设定关机前的时间, -c取消关机时间
电源命令: halt
- halt命令的作用是关闭系统, 使用权限是超级用户
- 主要参数:
- -n 防止sync系统调用, 它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块
- -w: 并不是真正的重启或关机, 只是写wtmp(/var/log/wtmp)记录\
- -f: 没有调用shutdown, 而强制关机或重启.
- -i: 关机(或重启)前, 关掉所有的网络接口
- -f: 强迫关机, 不呼叫shutdown这个指令
- -d: 关闭系统, 但不留下记录
电源命令: reboot
-
reboot命令的作用是重新启动计算机, 使用权限是系统管理者
-
主要参数:
- -n: 保存数据后再重新启动系统
- -w: 并不会真的开机, 只是把记录写到/var/log/wtmp文件里
- -d: 不把记录写到/var/log/wtmp文件里(-n 这个参数包含了-d)
- -i: 关闭网络设置之后再重新启动系统
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPsVPjJX-1662364108973)(./all_picture/linux_file_construction.jpg)]
文件命令: pwd
- pwd命令用于打印当前的工作目录
- pwd有两个选项, -L和-P,其作用类似于长度命令的同名选项
- -L目录连接链接时, 输出链接路径
- -P输出物理路径
文件命令:cd
- cd命令用于改变当前工作目录
- 语法: cd [DIR]
- cd /usr 进入目录/usr中
- cd … 进入(退到)上一层目录, 两个点代表父目录
- cd . 进入当前目录
- cd 不带参数, 则默认回到家目录
- cd - 进入到前一个目录, 适用于在两个目录之间快速切换
- cd ~ 进入家目录
文件命令:ls
- ls命令用于列出目录的内容, 或者文件的信息, 输出结果默认按照文件名排序, 如果不指定目标, 则列出当前目录的内容
- 语法: ls [OPTION]… [FILE]…
- -a 显示所有文件及目录, 包括隐藏的文件和目录
- -l 除文件名以外, 亦将文件型态, 权限, 拥有者, 文件大小等资讯详细列出
- -t 将文件依据建立的时间的先后次序列出
- -R 若目录下有文件, 则以下的文件亦皆依序列出
文件命令: mkdir
- mkdir命令用于创建目录(文件夹)
- 语法: mkdir [OPTION]… DIRECTORY… # 可以一次创建多个目录7+
- -p 创建目录时, 如果父目录不存在, 强制创建
文件命令: cp
- cp命令用于复制文件或目录, 可以一次复制单个文件, 亦可一次复制多个文件(cp命令是高危命令, 使用不慎就会丢失数据)
- 语法: cp [OPTION]… SOURCE… DIRECTORUY
- -a 此选项通常在复制目录时使用, 它保留链接, 文件属性, 并复制目录下是所有内容
- -p 除复制文件的内容外, 还把修改时间和访问权限也复制到新文件中
- -r 若给出的源文件是一个目录文件, 此时将复制该目录下所有的子目录和文件
- -l 不复制文件, 只是生成链接文件
文件命令: mv
- mv命令移动文件或目录(高危命令, 使用不慎就会丢失数据)
- 如果源文件和目标文件在同一个父目录里面, 则mv命令的 效果就相当于给文件改名
- 语法: mv [选项] 源文件或目录 目标文件或目录
- -b 若需要覆盖文件, 则覆盖前先行备份
- -f force强制的意思, 如果目标文件已经存在, 不会询问而直接覆盖
- -i 若目标文件已经存在时, 就会询问是否覆盖
- -u 若目标文件已经存在, 且source比较新, 才会更新(update)
文件命令: scp
-
语法: scp (选项) (参数)
-
选项
-
-1:使用ssh协议版本1;
-
-2:使用ssh协议版本2;
-
-4:使用ipv4;
-
-6:使用ipv6;
-
-B:以批处理模式运行;
-
-C:使用压缩;
-
-F:指定ssh配置文件;
-
-l:指定宽带限制;
-
-o:指定使用的ssh选项;
-
-P:指定远程主机的端口号;
-
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-
-q:不显示复制进度;
-
-r:以递归方式复制。
参数:
源文件:要复制的源文件。
目标文件:目标文件,格式为user@host:filename (文件名为目标文件的名称)
scp root@10.10.12.74:/data/xiaoxiong/test.txt /data/testdata scp -r root@10.10.12.74:/data/xiaoxiong/test /data/testdata scp /data/testdata/test.txt root@10.10.12.74:/data/xiaoxiong scp -r root@10.10.12.74:/data/xiaoxiong/test /data/testdata
-
文件命令: rm
-
rm命令用于删除文件或者目录-
-
rm命令属于高危命令, 没有一个工具能够100%恢复rm命令删除的文件, rm命令删除文件时并不是把文件放到类似图形界面的"回收站"里, 所以没有"撤销删除"操作可用
-
语法: rm [OPTION] file_or_dir
-
-f --force忽略不存在的文件, 从不给出提示
-
-i --interactive进行交互式删除
-
-r,-R,–recursive指示rm将参数中列出的全部目录和子目录均递归地删除
-
-v,–verbose 详细显示进行的步骤
-
文件命令: cat
- cat命令用于读取文件的全部内容(一次性加载全部 ) , 或者将几个文件合并为一个文件
- 语法: cat [OPTION] [FILE]
- -A,–show-all 等价于-vET, 显示不可打印的字符
- -b,–number-nonblank 对非空输出进行编号
- -E,–show-ends 在每行结束处显示$
- -n,–number 对输出的所有行进行编号,由1开始对所有输出的行数编号,
- -b 对输出的非空行进行编号,由1开始对所有输出的行数编号,
- -s 当有多个空行在一起时,只输出一个空行
- cat > filename 编辑filename文件, 不过会覆盖原文件内容
- cat >> filename 此时是使用追加的方式, 编辑filename文件,
- cat file1 > file2 将文件file1 覆盖file2, 如果是">>" 表示将file1的内容追加到file2后面
文件命令: head
- head用于显示文件的开头内容, 默认head命令打印其相应文件的开头10行
- 语法:head [OPTION] [FILE]
- -n 执行显示文件的指定几行
- -q 隐藏文件名, 默认就会隐藏
- -v 显示文件名
- -c num 显示num字节数
- -n num 显示前num行
文件命令: tail
- tail命令用于读取文件的尾部
- 语法: tail [OPTION]… [FILE]…
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理详细
- -c num 显示的字num字节
- -n num 显示文件最后num行
- -s 与-f结合使用, 表示每次反复的时间间隔休眠s秒
文件命令: more
- more会以一页一页的显示方便使用者逐页阅读, 而最基本的指令按空格键(space)就往下一页显示, 按b键就会返回(back)一页显示, 而且哈有搜索字符的功能. more命令从前往后读取文件, 因此在启动时就加载整个文件
- 语法: more [OPTION]… [FILE]…
- +n 从第n行开始显示
- -n 定义屏幕大小为n行
- +/pattern 在文件显示前搜索该字符串(pattern), 然后从该字符串前两行之后开始显示
- -c 从顶部开始清屏, 然后显示
- -s 把多个空行显示为一行, 通cat中的-s
- 使用more命令在读取文件信息时, 可以进行交互操作
- Enter 向下n行, 需要定义. 默认1行
- ctrl+F 向下滚动一屏(forwards)
- 空格键 向下滚动一屏
- ctrl+B 返回上一屏(backwards)
- = 输出当前行的行号
- V 调用vi编辑器
- !命令 调用shell, 并执行命令
- q 推出more
- :f 使用more查看文件时, 可以输出文件名和当前行号
文件命令: less
- less命令读取内容, 分屏显示, less与more类似, 但使用less可以随意的浏览文件, 而more仅能向前移动, 却不能向后移动, 而且less在查看之前不会加载整个文件, 支持vim的类似操作
- 语法: less [OPTION]… [FILE]…
- /字符串 向下搜索"字符串"的功能
- ?字符串 向上搜索"字符串"的功能
- Q 退出less命令
- 空格键 滚动一页
- 回车键 滚动一行
- less常用的选项
- -f 强制打开特殊文件, 例如外围设备代号,目录和二进制文件
- -g 只标志最后搜索到的关键字
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- -s 当有多个空行在一起的 时候, 只输出一个空行, 通
- -o <文件名> 将less输出的 内容保存到指定的文件, 例如: ll / | less -o /home/zhy/test/txt
- b 向上翻一页
- d 向下翻半页(downwards)
- h 显示帮助页面
- q 退出less
- u 向上翻半页(upwards)
- y 向上翻一行
- 空格键 向下翻一页
- Enter 向下翻一页
- 上下键 向上/下翻一行
提取列或字段: cut
-
cut 用于显示文件或者标准输入的 特定列, 例如
# 显示/etc/passwd文件以:间隔的第一列 cut -d: -f1 /etc/passwd
-
命令格式: cut [option]… [文件]
-
cut常用的 选项有:
- -b 仅显示行中指定直接范围的内容
- -c [范围] 仅显示行中指定范围的 字符
- -d 指定字段的 分隔符, 默认的字段分隔符"tab"
- -f [范围] 显示指定第num个字段的内容, 可以用逗号隔开显示多个字段
文件命令:find
- find命令用来在指定目录下查找文件
- 可以指定一次匹配条件, 如按文件名, 文件类型,用户甚至是时间戳查找文件
- 语法: find [PATH…] [EXPRESSION]
-
-name 按照文件名查找文件
-
敌人dir -perm 按照文件权限来查找文件
-
-user 按照文件属主来查找文件
-
-type 按照文件类型来查找文件, D: 表是目录, F:表示一般文件, L:表示软链接
-
-mtime -n +n 按照文件的更改时间来查找文件
-
-empty 查找目录下的空文件, 后面再跟 -delete 表示将查到的空文件删除
# *表示通配所有字符 find ./zhy -name "*te*" # ?表示通配任意的单个字符 find ./zhy -name "test?" # []表示通配[]内的任意一个字符 find ./zhy -name "test[.]*"
-
文件命令: which
- which命令在path所指定的目录中查找可执行文件
- 使用which命令,就可以看到某个系统命令是否存在, 以及执行的到底是哪一个位置的命令
- 语法: which [OPTION] programname 例如: which ls
文件命令: gzip
-
gzip是在linux中对一个文件进行压缩和解压缩的命令, 无法将多个文件打包到同一个文件中
-
gzip不仅可以用来压缩大的. 较少使用的文件以节省磁盘空间
-
语法: gzip [参数] [文件名或目录名]
- -d,–decompress,----uncompress 解开压缩文件
- -f,–force 强行压缩文件, 不理会文件名是否存在以及该文件是否为符号连接
- -l, --list 列出压缩文件的详细信息
- -r,–recursive 递归处理, 将指定文件下的所有文件及子目录一并处理
- -v,–versose 显示指令执行过程
文件命令:tar
- tar命令可用于打包文件,包多个文件打到一个包中, 方便数据的移动, 一般跟上-f备份原文件
- 语法: tar [OPTION…] [FILE]
- -c 建立新的压缩文件
- -x 从压缩的文件中提取文件
- -t 显示压缩文件的内容
- -z 支持gzip解压文件
- -j 支持bzip2解压文件
- -v 显示操作过程
- -C 指定解压文件路径
文件命令: ln
-
ln命令用于创建链接文件
-
linux中有软链接和硬链接两种
软连接(symbolic link) 硬链接(hard link) 以路径形式存在, 类似于windows的快捷方式 以文件副本形式存在, 但不占用实际空间 删除源文件后链接失效 删除源文件后无影响 可以对目录进行链接 不可以对目录进行链接 可以跨文件系统 不可以跨文件系统 -
ln命令在不带参数的情况下, 默认创建的是硬链接
-
语法: ln [-f | -n] [-s] SourceFile [TargetFile]
- -b 删除, 覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式, 文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录, 可以使用cd进入这个链接中
- -s 软链接(符号链接)
- 软链接的目标路径必须是绝对路径, 否则可能会链接到其他的同名文件
vim基础操作
-
快速移动光标
- 上下左右键获取 h j k l(左下上右)移动光标
- 0 键移动到行首
- g0 移动到光标所在屏幕行行首
- :n 移动到第n行 :set nu 显示行编号
- gg: 到文件头部
- G: 到文件尾部
-
数据操作
- yy or Y 复制整行文本 [n]yy 复制n行文本
- y[n]w 复制一(n)个词
-
粘贴
- 面向行的数据
- p 放置数据在当前行的下面p
- P 放置数据在当前行的上面
- 面向字符的数据
- p 防止数据在光标的后面
- P 放置数据在光标的前面
- 面向行的数据
-
删除
- d[n]w 删除(剪切)一(n)个单词
- [n]dd 删除(剪切)一(n) 行
-
查找
-
:/word 在光标之后查找一个字符word, 按n向后继续搜索, shift+n向上搜索
-
:?word 在光标之前查找一个字符word, 按n向后继续搜索, shift+n向上搜索
-
:set hlsearch 查找结果高亮显示, 只能临时设置,
若永久设置需要在/etc/vimrc中配置,增加一行set hlsearch, 然后更新变量(source /etc/vimrc)即可
-
-
替换
- :1,5s/word1/word2/g 将文档中1-5行的word1替换为word2, 不加g则只替换每行的第一个
- %s/word1/word2/gi 将文档所有的 word1替换为word2, 不区分大小写
-
撤销或重做
- u 撤销最近的改变
- U 撤销当前行自从光标定位在上面开始的所有改变
- ctrl+r 重做最后一次"撤销"改变
-
保存文件并退出
- Esc 在插入模式下按Esc键,退出插入模式
- :w 保存
- :q 退出
- :wq 保存并退出
- :q! 强制退出
- :wq! 强制保存并退出
RPM软件包管理(red-hat-package-manager)
-
rpm是一种互联网下载包的打包和自动安装工具, 会生成具有.RPM扩展名的文件,可以用来管理应用程序的安装,卸载和维护
-
RPM软件包的命名格式
-
name-version-release.arch.rpm
名称-版本-发行版号-处理器架构
-
RPM命令常用参数
-
RPM常用于安装,删除, 升级,刷新和查询的场景
-
语法: rpm [options…]
-
-i 指定安装的 软件包
-
-h 使用"#(hash)"符显示rpm星系的安装过程及进度
-
-v 显示安装的详细过程
-
-U 升级指定的软件包
-
-e 删除指定的软件包
-
-q 查询系统是否已安装指定的软件包或查询指定rpm包内容信息
-
-a 查看系统已安装的软件包的版本信息
-
-c 显示所有配置文件
-
-p 查询/校验一个软件包的文件
# 安装 rpm -i example.rpm rpm -iv example.rpm rpm -ivh example.rpm # 卸载, 需要考虑宝与包之间的依赖性 rpm -e example.rpm rpm -e -nodeps example.rpm # 不考虑依赖性, 强制卸载 rpm -e -alimatches example.rpm # 软件包存在多个版本, 进行批量卸载 # 升级 rpm -U example.rpm rpm -Uvh example.rpm # 存在旧包时,删除旧包, 安装新包 rpm -f example.rpm rpm -fvh example.rpm # 存在旧包时, 在旧包的基础上进行升级 # 查询 rpm -q example.rpm rpm -qa -q # 查询软件是否安装 -qa # 查询所有的软件包 -qf # 查询所有已安装过的软件包 -qp # 查询未安装过的软件包 -ql # 查询已安装过的软件包中的文件列表和完整目录 -qi # 查询软件包的详细详细 -qc # 查询已安装的软件包的配置文件 -qd # 查询已安装的软件包中的帮助文档
-
DNF管理工具
DNF管理软件包三步骤:
- 配置DNF, 修改DNF配置参数,创建本地软件源仓库,添加,启用,禁用软件源头
- 管理软件包(组),搜索软件包,列出软件包(组)清单, 显示rpm包信息,显示软件包信息. 安装rpm包并下载软件包(组), 删除软件包(组)
- 更新, 检查更新, 升级,更新所有包及其依赖
DNF配置文件 /etc/dnf/dnf.conf
- DNF的主要配置文件 /etc/dnf/dnf.conf, 该文件中的"main"部分保存着DNF的 全局配置
- 通过cat命令, 可以查看"main"的具体参数 cat /etc/dnf/dnf.conf
- cachedir 缓存目录, 该目录用于存储RPM包和数据库文件
- best 升级包时, 总是尝试安装其最高版本,如果最高版本无法安装,则提示无法安装的原因并停止安装.默认值True
- installonly_limit 设置可以同时安装"installonlypkgs", 指令列出包的数量.默认值为3, 不建议降低此值
- clean_requirements_on_remove 删除在dnf remove期间不在使用的的 依赖项,如果软件包时通过DNF安装的,而不是通过显示用户请求安装的,则只能通过clean_requirements_on_remove删除软件包, 即他是作为依赖项引入的, 默认值True
修改配置参数
- repository允许用户定义定制化的软件源仓库,需要注意的时各个仓库的名称不能相同, 会引起冲突,用户可以通过一个或多个"repository"部分来修改需安装软件源位置
- 通过vim命令,可以在文件中添加一个或多个"repository": vim /etc/dnf/dnf.conf
- name=repository_name 软件仓库(repository)描述的字符串
- baseurl=repository_url 软件仓库(repository)的地址, 使用http协议的网络位置, 例如: http://path/to/repo; 使用ftp协议的网络位置, 例如: ftp://path/to/repo;本地位置,例如: file: ///path/to/local/repo
创建本地软件源仓库
- 创建软件源仓库具体步骤
- 安装createrepo(root权限), dnf install createrepo
- 将需要的软件包放置在目录下, 比如: /mnt/local_repo
- 执行命令创建软件源, createrepo --database /mnt/local_repo
添加软件源
- 用户定义定制化的软件源仓库,除了可以在/etc/dnf/dnf.conf文件中添加一个或多个"repository"外, 还可以选择在/etc/yum.repos.d/目录下添加".repo"文件
- 添加".repo"文件的方式需要在root权限下进行\
- 成功执行以下命令后会在/etc/yum.repos.d/目录下生成对应的 repo文件, dnf config-manager --add-repo repository_url
启用或禁用软件源
- 添加好软件源之后, 需要在root权限下启动软件源,(其中的repository为新增.repo)文件的repo id), 启用命令如下
- 若是软件源不在使用,可以通过命令行禁用该软件源,需要在root权限下禁用, 禁用命令如下
# 启用命令
dnf repolist #查看新增.repo文件的repo id 获取yum repolist
dnf config-manager --set-enable respository
# 禁用命令
dnf repolist #查看新增.repo文件的repo id
dnf config-manager --set-disable respository
#管理软件包安装, 查询,删除, 通过rpm包名称,缩写和描述来搜索所需软件包, 命令:
dnf search term
# 列出软件包清单:
dnf list all
dnf list glob_expression... # 查看指定RPM包的信息
# 显示软件包信息:
dnf info package_name
# 下载, 安装,删除RPM包
dnf download package_name
dnf install package_name
dnf remove package_name
# 管理软件包组
dnf groups summary
dnf group list # 列出所以已安装的软件包组
# 显示软件包组信息,必装软件包及可选包
dnf group info glob_expression...
# 安装,删除软件包组, 每个软件包组都有对应的名称和id,
dnf group install group_name/groupid
dnf group remove group_name/groupid
# 检查,更新
dnf check-update
dnf update package_name /dnf group update group_name
源代码软件安装
步骤:
-
下载源码包并解压(查看包的完整性)
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
tar -zxvf Python-3.7.7.tgz
-
查看README和INSTALL文件(记录了软件的安装方法及注意事项)
cat Python3.7.7/README.rst
-
创建Makefile文件,通过执行./configure脚本命令生成
./configure --prefix=/usr/local/Python/
-
编译:通过make命令将源码自动编译成二进制文件,
make/make clean
make install
-
安装软件,通过make install安装命令将上步编译出来的二进制文件安装到对应的目录中, 默认的安装路径为/usr/local/,相应的配置文件位置为/usr/local/etc或/usr/local/***/etc
systemd
简介:
1. systemd是与SysV和LSB初始化脚本兼容的系统和服务管理器,开启systemd服务可以提供基于守护进程的按需启动策略
2. systemd服务支持快照和系统状态恢复,维护挂载和自挂载点,使得个服务之间基于从属关系实现更为精细的逻辑控制,具有更高的并行性能
Systemd unit
systemd服务的开启和监督系统是基于unit的概念, unit由一个与配置文件对应的名称和类型组成,unit通常有以下几种类型
- Service unit: 系统服务
- Target unit: 一组systemd units
- Automount unit:文件系统挂载点
- Device unit: 内核识别的设备文件
- Mount unit: 文件系统挂载点
- Path unit: 在一个文件系统中的文件或目录
- Scope unit: 外部创建的进程
- Snapshot unit: systemd manager的保存状态
systemd管理服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LzlJPB6Z-1662364108973)(./all_picture/system__20220725224158.png)]
# 查看当前正在运行的服务,
systectl list-units --type service # 查看全部服务, 后面加--all
# systemctl显示服务状态
systemctl status name.service
1. loaded 说明服务是否被加载, 同时显示对的绝对路径是否启用
2. Active 说明服务是否正在运行, 并显示时间节点
3. Main PID 相应系统服务PID
4. CGroup 相关控制组的其他信息
# systemctl的相关操作
systemctl start name.service # 运行服务
systemctl stop name.service # 关闭服务
systemctl restart name.service # 重启服务
systemctl enable name.service # 启用服务, 表示允许这个服务运行
systemctl disable name.service # 禁用服务
systemctl poweroff # 关闭系统并下电
systemctl halt # 关闭系统但不下电
systemctl reboot # 重启系统
systemctl suspend # 系统待机
systemctl hibernate # 系统休眠
systemctl hybird-sleep # 使系统待机并处于休眠状态
linux中查看磁盘信息
# 查看系统所有磁盘的信息, 包括已挂载和未挂载磁盘
fdisk -l
# 查看系统挂载 磁盘空间大小和利用率
df -h