Linux基本命令(一)
网络二进制8,逆向二进制16
kernel 与 Shell
-
1、 Linux是基于商业操作系统Unix改造而来的开源免费操作系统,广泛安装运营于全球大量服务器上。常用Linux发行版有:
- RHEL:Red Hat Enterprise Linux
- Centos:免费版本 RHEL
- Ubuntu
- Debian (Kali):基于此系统修改诞生的的Kali
-
不同发行版本的linux,命令和文件路径会略有不同
-
2、 kernel(内核),shell(外壳)
- kernel可以理解为正在运行的系统,就像核反应堆的核心一样。
用户通过 shell 传递命令,指挥kernal 按用户的要求进行工作。
同样的操作,在Windows系统下通常通过鼠标进行的,在Linux系统下是通过Linux命令实现的。
- kernel可以理解为正在运行的系统,就像核反应堆的核心一样。
-
Shell程序有多种版本
- sh
- bash
- zsh
Linux基础命令 
查看下Linux系统目录
:
命令 | 概述 |
---|---|
/root |
root 文件系统是文件系统的顶级目录。它必须包含在挂载其它文件系统前需要用来启动 Linux 部文件。它必须包含需要用来启动剩余文件系统的全部可执行文件和库。文件系统启动以后所文件系统作为 root 文件系统的子目录挂载到标准的、预定义好的挂载点上。 |
/bin |
目录包含用户的可执行文件 |
/boot |
包含启动linux系统所需要的静态引导程序和内核可执行文件以及配置文件 |
/dev |
包含每一个链接到系统的硬件设备的设备文件,不是驱动,而是计算机上能够访问的设备 |
/etc |
包含主机计算机的本地系统配置 |
/home |
主目录存储用户文件,每一个用户都有一个位于/home目录中的子目录 |
/lib |
包含启动系统所需要的共享库文件 |
/opt |
可选文件 |
/sbin |
系统二进制文件,用于系统管理的可执行文件 |
/tmp |
临时目录 |
/var |
可变数据文件存储,包括日志文件、mysal和其他的数据库文件 |
/usr |
包含可共享、只读的文件,包括可执行的二进制文件和库等 |
常用命令
[root@localhost ~]#
[用户名 @ 主机名 当前目录]
目录操作
- 目录结构:
目录
==文件夹
pwd 查看当前目录 Print Working Directory
[root@localhost ~]#
/root
- linux系统的目录结构
-
/ (撇)
而windows \(捺)
-
ls
- 作用:查看当前目录下的文件和文件夹
- 语法:
ls
(回车)ls -l
以长格式显示对象列表ls -all
查看目录下所有对象(包含隐藏对象)ls -h
与-l
共用,以易读形式显示长格式(对字节换算成KB MB GB)ls -d
查看目录自身的属性,多与-l -h
共用
-
mv
- 作用: 用来为文件或目录改名、或将文件或目录移入其它位置。
- 语法:
mv [options] source dest
mv [options] source... directory
- 详细使用:
- -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
- 更多:Linux mv 命令 | 菜鸟教程 (runoob.com)
-
cp
- 作用:用于复制文件或目录。
- 语法:
cp [options] source dest
cp [options] source... directory
- 详细使用:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用
等于dpR参数
组合。 - -d:复制时保留链接。这里所说的链接相当于
Windows 系统
中的快捷方式。 - -f:覆盖已经
存在的目标
文件而不给出提示。 - -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户
确认是否覆盖
,回答 y 时目标文件将被覆盖。 - -p:除复制文件的内容外,还把
修改时间
和访问权限
也复制到新文件中。 - -r:若给出的
源文件
是一个目录文件,此时将复制该目录下所有的``子目录
和文件
。 - -l:不复制文件,只是生成链接文件。
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用
- 更多:Linux cp 命令 | 菜鸟教程 (runoob.com)
-
cd
- 作用:改变当前目录
Change Directory
- 语法:cd
相对路径/绝对路径
(回车)
- 作用:改变当前目录
-
例子:使用相对路径
[root@localhost ~]#
cd Music
[root@localhost Music]#
-
例子:使用绝对路径
[root@localhost ~]#
cd /root/Music
[root@localhost Music]#
-
mkdir
- 作用:新建文件夹
MaKe DiRectory
- 语法:
mkdir(空格)(文件夹名称)(回车)
- 作用:新建文件夹
-
rmdir
- 作用:
ReMove DIRectory
删除文件夹(只能删空文件夹) - 语法:
rmdir
(空格)(文件夹名)
- 作用:
-
touch
- 作用:创建文件
- 语法:
touch
(空格)(文件名)
-
rm
- 作用:删除文件
- 语法:
rm
(空格)(文件名) - 选项:
-r
:recursive
、递归。表示删除所有子目录以及下属-f
:force
、强制,强制删除,无提示.-l
:interact
、交互。删除前会询问对象。
-
- 特殊目录
.
当前目录..
上一层目录~
家目录- 每个普通用户都有一个以自己用户名命名的目录,称为家目录,下有
Desktop
,Download
,Documents
等文件夹 root
的家目录不在home
下,root
的家目录是/root
- 每个普通用户都有一个以自己用户名命名的目录,称为家目录,下有
-
返回之前的目录
内核级别
- 7个运行 级别
init 0
系统停机状态,系统默认运行级别不能设为0,否则不能正常启动init 1
单用户工作状态,root权限,用于系统维护,禁止远程登录init 2
多用户状态(没有NFS)init 3
切换为GUI 界面init 4
系统未使用,保留init 5
切换为GUN界面init 6
重启命令- 详细如下图:
用户命令 
- 分为三类
- 超级用户(0)
- 拥有最高权限
- 系统用户/程序用户/伪用户(1-499):
- 系统内软件运行所需的用户。每个进程运行在系统里都有一个相应的属主,
- 比如某个进程以何种身份运行,这些身份就是系统里对应的用户账号。比如
httpd进程
就是apache用户
运行的。- 实际运用场景:
安全加固
中的常见策略,为了保障系统安全,将用户权限
最小化。服务进程
均使用系统用户
,而非root用户
启动运行。
- 实际运用场景:
- 比如某个进程以何种身份运行,这些身份就是系统里对应的用户账号。比如
- 系统内软件运行所需的用户。每个进程运行在系统里都有一个相应的属主,
- 普通用户(500-1000)
- 普通
Linux系统
使用者的账户,权限受到限制
,无法执行一些敏感操作。
- 普通
- 超级用户(0)
用户类别
-
系统管理员
-
特点
-
用户名:
root
-
UID标识:0
-
权限大
-
-
注意点
-
配置
ssh
,禁用root
通过上述远程登录,权限非常大,所有文件权限都有 -
工作中使用普通用户登录,然后有需要在切换到
root
,没有必要不登录root
账号 -
减少
root
密码的的外泄,可以增强内部安全
-
-
/etc/sudoers
4,- sudo 相关文件
-
例子:
- 小练习:
-
1.新建普通用户
agan
-
2.
vim
打开/etc/sudoers
-
3.找到
root All=(ALL) All
这一行
-
4.在这一行的下面一行写入
agan ALL=(ALL) /bin/ls/usr/sbin/useradd
-
5.切换用户,使用
agan
的身份登录 -
6.创建用户
test3
sudo useradd test3
- 创建成功则说明提权成功。
Sorry, user agan is not allowed to execute '/sbin/useradd test3' as root on localhost.localdomain.
- 权限不足,需要提升权限
- 修改
agan ALL=(ALL) /bin/ls/usr/sbin/useradd
为ALL
- 修改
- 权限不足,需要提升权限
sudo ls /root
- 显示内容则说明提权成功
-
sudo -l
- 列出允许的命令
-
- 小练习:
-
-
普通用户
-
特点
-
UID为
C6 500-60000,C7 1000-60000
-
权限相对较少:可读权限较多,写的权限范围在:家目录
/home/
用户名、/tmp
中
-
-
注意点
- 赋权需要注意回收
-
-
虚拟用户
-
特点
-
UID 1-499
-
登录
shell,/sbin/nologin
-
多数情况装系统就存在的,且不能登录的
-
-
-
组
-
特点
-
唯一标识:
GID
-
1个用户可以在多个组里
-
1个组可以有多个用户
-
-
-
安全:最小化原则
-
安装软件最小化
-
登录安全最小化(普通用户)
-
进程启动权限最小化。
-
文件目录权限最小化
-
用户管理
-
普通用户
-
创建
-
直接增加用户
useradd XX
-
-u 指定uid添加用户
useradd -u 1111 XX
-
-g 知道的用户属组添加
useradd littleboy -g tech
#添加一个littleboy 属于tech组.
-
特殊参数
-
-M
-
useradd test1 -M
- 不生成家目录
-
-
-s
-
useradd test2 -s /sbin/nologin -M
- 指定解释器不允许登录/sbin/nologin
-
-
-
-
删除
-
只是删除用户
userdel XX
-
连带家目录一起删除
userdel -r XX
-
注:一般不删除,涉及到删除的是去etc/passwd注释掉此账号
-
-
修改
-
usermod
-
参数
-
-u 指定UID
usermod test -u 6666
-
-g 指定属于的组
useradd littleboy -g tech
#添加一个littleboy 属于tech组.
-
-M 不创建家目录
usermod test -u 6666 -M
-
-s 指定登录的解释器
usermod test2 -s /bin/bash
-
-
-
密码
-
普通用户修改
passwd
-
管理员修改
passwd XXX
-
文件配置
-
/etc/passwd
- 用户主配置文件,用户的各种属性(UID,GID,家目录,登录SHELL)
-
/etc/shadow
- 用户密码文件,存放密码及密码的属性(失效时间,修改密码时间等)
-
-
-
查看
-
tail -1 /etc/passwd
- 存放用户的文件
-
-
-
用户组
-
添加用户组
-
默认创建
- 创建用户的时候默认产生的,创建一个普通用户,默认情况就会生成普通用户组用户和组同名,且UID和GID相同
-
管理员创建
-
groupadd [组名]
(使用管理员用户创建) -
useradd 用户名 -g 组名
- 添加一个用户 属于用户组.
-
查看用户
- id 用户名
-
-
-
查看
-
tail -1 /etc/group
- 存放用户组的文件
-
-
文件配置
-
/etc/group
- 组文件,存放用户组及属性。
-
/etc/gshadow
- 用户组的密码文件(废弃)
-
-
-
相关命令
-
切换用户以及提权管理命令
-
su
- 从root变为普通用户就是切换用户角色
-
sudo
- 让普通用户执行某个命令的过程中拥有root权限.本身角色还是普通用户自己
-
-
普通用户提权方法
-
方法1.使用命令visudo
- 然后输入100gg,yy,p 复制一行修改开头root,直接修改普通用户权限
-
方法2.visudo配置命令(全路径,用逗号分割),注意在用户名l
- 开始的授权上改100gg,删除原有用户名设置,增加如下内容:普通用户名
ALL=(ALL) /usr/bin/touch, /usr/sbin/useradd,/sbin/userde
- 开始的授权上改100gg,删除原有用户名设置,增加如下内容:普通用户名
-
usermod -g wheel [用户名]
- 添加普通用户到
wheel组
,即是管理员账号
- 添加普通用户到
-
-
-
用户相关命令
-
id [用户名]
- 查看用户信息
-
w
- 查看用户登录信息
-
last
- 查看登录信息
-
查看用户登录情况两个关键文件.组合使用
-
lastlog
-
cat /var/log/secure
-
-
lastlog -C -u [用户名]
- 清理用户登录信息
-
及时监控,每分钟监控.zabbix工具
cat /
-
-
更改文件属性
-
软链接
ln -s /root/test.txt /root/Desktop/test2
-
管道符 "|"
- 作用:连接多个命令,将前一个命令的结果输出
- 作为下一个命令的输入,一并执行
- 语法 :
- 命令1 | 命令2 | ··· | 命令n
- 小练习
- 统计本机中有多少个文件名包含
test
文件[root@localhost ~]# find / -name "*test*" | wc -l
446
- 统计本机中有多少个文件名包含
-
chown
-
更改用户和组
-
chown -r
chown -R [要更的用户] [文件.txt] #更改文件对应的用户
-
chown [要更的用户].[要更的用户组] [文件.txt]
- 更改文件对应的用户和组
-
chown .[要更的用户组] [文件.txt]
- 更改文件对应的用户组,点号可以用冒号替代
-
-
chgrp
-
chgrp [要更的用户组] [文件名.txt]
- 更改文件对应的用户组
-
-
chattr
-
给文件加锁,不让别人改
-
参数
-
i
-
加锁,不能删除不能修改
-
通常与动作 + ,- 一起搭配使用
-
举例:给a.txt进行加锁
-
chattr +i a.txt
-
减锁:chattr -i a.txt
-
-
查看是否加锁
- 使用
lasttr
命令查看,:lasttr [文件名]
- 使用
-
可以给关键文件进行加锁,避免操作时操作错误
chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers
-
-
a
-
可以追加内容,但不能删除
-
通常与动作一起搭配使用
-
举例:给
a.txt
文件进行加锁,进行可以追加,但不能删除-
chattr +a a.txt
-
减锁 :
chattr -a a.txt
-
-
查看是否加锁
- 使用
lasttr
命令查看,:lasttr [文件名]
- 使用
-
-
动作
-
+
- 增加
-
-
- 减少或者剔除
-
=
- 赋予
-
-
-
-
文件权限
-
文件权限是指用户、组或者其他用户对文件的读、写追加、可执行等权限的操作管理
-
-rw-r--r--. 1 root root 0 Aug 31 00:50 oldboy.txt
-
从 左二位开始,三位一组,依次是用户权限,用户组权限,其他权限
-
r
-
read 对于[文件]是可读 对于[目录]是浏览目录下的文件.
-
代表数字是:4
-
-
w
-
write 对于[文件]是可写 对于[目录]是创建\删除文件(和x配合
-
如果文件的的权限有w,就认为文件可以被删除是错误的思维
- 文件是否可被删除取决于上级目录是否有w.
-
代表数字是:2
-
-
x
-
对于[文件]是可执行 对于[目录]是能否进入目录
-
代表数字是1
-
-
-
没有权限
-
代表数字是0
-
-
-
chmod
-
给用户修改权限
-
u
-
chmod [数字权限]或 u +[文件权限 ] [要修改权限的文件]
chmod u+rx oldboy.txt
-
-
-
给用户组修改权限
-
g
-
chmod [数字权限]或 g +[文件权限 ] [要修改权限的文件]
chmod g+rx oldboy.txt
-
-
-
整体修改权限
-
o
-
chmod [数字权限]或u +[文件权限 ]g +[文件权限 ]0 +[文件权限 ] [要修改权限的文件]
chmod u+rwx,g-w,o=x oldboy.txt
-
-
-
-
关于用户管理的文件信息显示:
-
/etc/passwd
- 账户登录名
- 密码占位符
- 用户的
UID
- 用户所属基本组的
GID
- 用户
描述
- 用户家目录所在位置
- 用户登录系统时候的执行程序(
bin/bash
与sbin/nologin
)
-
/etc/shadow
密码文件[root@localhost ~]# cat /etc/shadowroot:$1$F7KN6i0F$u9eWO6y.mep8WwRUAKy5D1::0:99999:7:::
- 1.用户登录
- 2.这里保存但是真正加密的密码。目前Linux的密码采用的是
SHA512散列加密算法
。- 注意:如果需要修改密码,请用passwd【username】命令。这里只能写加密后的字符串。在密码前加上"!“,”*",或"X’'。
- 3.用户上次修改密码的日期距离
1970-1-1
相隔多少天 - 4.密码
最短使用期限
(最短多少天内不能改密码) - 5.密码
最长使用期限
(多少天以后必须改密码) - 6.密码过期前几天提醒修改密码
- 7.宽限时间(密码过期后宽限几天,超出后账户禁止登录)
- 8.账户失效时间(失效日期距离
1970-1-1
相多少天) - 9.预留段,没用
!
表示空密码
-
etc/group
内有组账户相关信息
-
etc/gshadow
内有组密码相关信息
-
etc/bashrc, .bashrc, .bash_profile
.bash_logout
用户退出配置.bash_profile
环境变量配置.bashrc
变量配置
文件查看
-
cat
- 作用:正序查看文件信息, 用于查看纯文本文件
- 查看文件,显示行号
cat -n a.txt
- 追加文字到文件
cat >>/tmp/a.txt <<EOF
- 在每行的结尾加上$符
cat -E a.txt
- 查看文件,显示行号
- 作用:正序查看文件信息, 用于查看纯文本文件
-
tac
- 作用:倒序显示文件信息
tac a.txt
-
head
- 作用: 查看前几行
head -n
/文件目录head -5 /etc/passwd
- 作用: 查看前几行
-
tail
- 作用: 查看文件后几行
tail -f XXX.log
- 实时跟踪某日志尾部的变化
tail -n
/文件目录tail-5 /etc/passwd
- 作用: 查看文件后几行
-
less
- 作用:用于查看纯文本文件
- 使用:
q
退出,回车
下一行,空格
一页
-
tali
,cat
的区别?tail
和cat
是两个常用的命令行工具,它们的主要区别在于它们的功能。cat命令
通常用于将一个或多个文件的内容输出到终端屏幕上。例如,如果你想查看一个文本文件的内容,可以使用cat命令
来显示文件的所有内容。
tail命令
则用于查看文件的末尾几行内容,尤其是在实时日志分析等场景中很常用。tail命令
默认显示文件的最后10行
,但也可以通过命令行选项来指定显示的行数。例如,如果你想查看日志文件的最后100行
,可以使用命令tail -n 100 logfile
。- 因此,总的来说,
cat命令
用于查看整个文件,而tail命令
则用于查看文件的结尾部分
。
网管命令
网络配置命令
-
图形化 配置网卡
nmtui
-
重启所有网卡
systemctl restart network
-
重启网卡1(eth1)
ifup eth1
-
关闭网卡
ifdown eth1
-
查看ip
-
ip add
或ip a
-
ifconfig
- 需要安装net -tools包 #yumInstallNetToolsY
-
-
查看网关路由
-
ip route
-
route -n
- 查看网关路由 (
-n
表示不解析名字,列出速度会比route
快)
- 查看网关路由 (
-
netstat -rn
-
-
查看DNS
-
cat /etc/resolv.conf
- 配置永久 DNS文件位置
cat /etc/Sysconfig/Network/Scripts/IfcfgEth1
- 配置永久 DNS文件位置
-
Linux快捷键
-
tab
键- 自动补全命令/文件名/目录名
-
Ctrl+L
- 清理终端显示
-
clear/cls
- 清理终端显示
-
Ctrl + c
- 终止当前操作
-
Ctrl +a
- 光标直接到本行开头
-
Ctrl +e
- 光标直接到本行末尾
-
Ctrl +方向键
- 光标以单词为单位进行移动
-
esc+.
- 调出上个命令最后一个【空格】后面部分
-
Ctrl +d
- 退出当前会话(logout)联系操作关闭shell
-
Ctrl +insert
- 复制命令行内容
-
shift+insert
- 粘命令行内容
-
Ctrl +u
- 删除光标前内容
-
Ctrl + k
- 删除光标前后内容
帮助命令
--help
man命令
man +命令
bash
解释器的帮助命令
目录结构
目录结构
-
目录顶点或者入口
- 符号“/”,称为跟,所有
-
查看根目录命令
-
tree -L 1 /
-
bin
-
普通用户二进制命令目录:
ls、cp、 cat rm
- bin等于usr/bin
-
-
sbin
- root管理员使用的二进制命令目录
-
boot
- 内核程序及引导程序所在的目录
-
dev
-
设备目录(光驱 磁盘)
-
/dev/hd[a-t]IED
设备 -
/dev/null
-
无限数据接收设备,相当于黑洞(相当于垃圾桶,操作之后无反馈)
- 命令:文件 >/dev/null
-
-
/dev/zero
- 无限零资源,要多少有多少
-
/dev/cdrom
- 光驱
-
/dev/sd[a-z]
- SCSI设备(/dev/sda)
-
临时挂载
mount/ddev/cdrom/mnt
- 给磁盘/dev/cdrom开一个门,门是/mnt目录,/mnt就是挂载点
-
-
-
etc
-
系统基础服务配置文件所在的目录(yum, rpm安装的软件)
-
/etc/sysconfig/network-scripts/ifcfg-eth1
- 网卡 配置文件,第二块ifcfg-eth0
-
etc/resolv.conf
- linux系统过时的DNS客户端配置文件
-
/etc/hostname
- 主机名配置文件
-
/etc/host
- 系统本地的域名解析 文件(局域网;域名和ip解析文件)
-
/etc/fstab
- 配置开机设备自动挂载的文件
-
/etc/rc.local
- 存放开机自启动程序命令文件
-
/etc/sysctl.conf
- Linux内核参数设置文件(系统优化)
-
/ect/issue
- r软件bug,和特定版本有关
-
/etc/motd
- 配置用户登录系统之后显示提示内容的文件
-
/etc/redhat-relsase
- 声明Red-Hat版本号和名称信息文件
-
/etc/profile 、/etc/bashrc, .bashrc, .bash_profile
- 配置系统的环境变量/别名等文件
-
-
home
- 普通用户的家目录
-
root
- 管理员的家目录
-
lib ->urs/lib
- 库文件所在目录
-
lib64 ->urs/lib64
- 库文件所在目录
-
media
- 媒体光驱等挂载点
-
mnt
- 临时的挂载点
-
opt
- 第三方程序目录
-
proc
-
文件系统进程的运行状态目录。跟汽车仪表盘功能类似
-
/proc/cpuinfo
- 当前cup的信息文件
-
/proc/meminfo
- 当前内存 信息文件
-
/proc/loadavg
- 当前系统的平均负载文件
-
/proc/mounts
- 当前设备挂载列表信息文件
-
`/proc/interrupts
- 当前系统中断信息文件
-
-
tmp
-
临时及文件目录
-
权限较大,容易 作为黑客跳板
-
做监控,提权到root权限下
-
-
usr
-
应用程序所在目录
-
/usr/local/
- 编译安装软件默认的位置路径
-
/usr/src
- 源代码目录
-
-
Var
-
变化的目录、日志文件、缓存文件等存放目录
-
/var/log/messages
-
cat /var/log/messages
- 查看log日志记录
-
-
/var/log/secure
- 安全日志(ssh日志记录到这里)监控日志
-
/var/log/dmesg
- 记录硬件信息加载情况的日志文件(dmesg)
-
/var/log/lastlog
-
lastlog
- 有哪些用户登录
-
-
-
-
目录操作
-
创建目录mkdir
-
make directory
:创建目录- mk dir —》mkdir
-
创建单一目录
- mkdir /name
-
递归创建
-
mkdir -p a/b c/d
- a和c并列目录
-
mkdir -p test/{1..1000}
- 直接在test文件中创建100个文件目录
-
mkdir -p a/b/c/d
- 递归嵌套创建
-
-
-
切换当前目录 cd
-
cd
-
cd /目录名
cd /etc
:切换到etc目录下
-
cd ~
切换到家目录下
-
-
-
tree
-
以树形结构显示文件和目录
-
如果找不到需要安装
yum install tree -y
-
参数
-
tree -L 数字
tree -L 2 /tmp/
-
-
-
查看目录
-
ls
- 查看当前目录下所包含的目录
-
ll
- 查看当前目录下所包含的带有详细权限属性信息的目录
-
参数
-
ls -a
- 查看隐藏文件
-
ls -l
- 查看文件属性
-
-
-
移动mv
-
移动命令 >move > mv
-
mv /tmp/a.txt /home/
- 移动tmp目录下文件a.txt到home目录下
-
mv /tmp/a.txt /home/b.txt
- 移动tmp目录下文件a.txt到home目录下重命名为b.txt
-
mv /tmp/a.txt /tmp/b.txt
- 移动tmp目录下文件a.txt到tmp目录下重命名为b.txt(目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名}
-
重点命令符 
vim
-
文书编辑器
-
方法/命令
-
vi
-
vim
- vim 文件名.格式
-
more
- more 文件名
- 查看文件信息
- more 文件名
-
gcc
- 编译
-
./a.out
运行程序
-
-
操作公式
- 使用vi打开a.txt默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"
Life is short,i use python
"按下esc键,回到命令模式
- 使用vi打开a.txt默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"
-
保存退出
-
:wq!
强制保持退出-
w
- write 写入
-
q
- quit 退出
-
!
- 强制
-
-
部分参数退出
-
:X
保存退出 -
:q
不保存退出 -
:q!
不保存强制退出
-
-
以下实验基于 esc
退出编辑模式
-
删除
-dd
删除
-3dd
- 删除从当前开始的下面3行列表 -
复制
yy
复制3yy
- 复制从当前开始的下面3行列表
-
剪切
P
-
查找
-
esc
退出编辑模式-
:/
查找内容-
n
查找下一个 -
N
查找上一个
-
-
-
-
source
- 作用:更新配置文件使其生效
- 语法:
source
命令
-
alias
- 作用:为命令起别名
- 语法 alias 原命令 = ‘新命令’
- 例子:
alias rm ='rm -i'
使用rm -i
替换了rm
,删除时会提示是否要删除文件
打印字符输出echo
-
用于在终端输出字符串或者变量提取后的值
-
格式:
echo
【字符串|$变量】-
echo
“ 网络数字化” >>/tmp/a.txt
- 在
tmp
目录下的a.txt中追加网络数字化
- 在
-
echo $path
- 取出打印path的值
-
xargs 分组
-
必须要接<号
-
xargs -n 3<a.txt
-
一行分三个
-
一般跟find配合删除使用
-
-
date时间
-
date
-
查看当前时间
-
date +%F
- 当前年月日
-
date +%Y
- 当前年份
-
date +%m
- 当前月份
-
date +%d
- 当前日期天
-
-
-s
表示修改-
修改当前时间为2100年7月26号21点 0分56秒
date -s "2100/07/26 21:00:56"
-
-
-d
表示过去
流编辑器
sed(Stream Editor)
:
主要用于编辑文本流。它可以根据用户指定的规则来对输入流进行处理,并输出到标准输出设备上。sed支持各种文本转换功能,如替换
、删除
、插入
、追加
等,使得编辑大量文本内容
变得简单。
文本处理工具
awk
:
可以对文件逐行
进行处理,以空格
为默认分隔符
,按照列来处理每一行数据
。
awk
是一种强大的编程语言,它提供了循环、条件判断等控制语句
,同时也内置了一些函数
,可以方便地对数据进行统计、格式化
等操作。`
- 栗子:
- 1.打印文本文件的
所有行
:awk '{print}' filename
-
- 根据指定
分隔符
打印某一列:
awk -F ':' '{print $1}' filename
- 根据指定
-
- 统计
某一列的总和
:
awk '{sum += $1} END {print sum}' filename
- 统计
-
- 根据条件
过滤数据
:
awk '$1 > 10 {print}' filename
- 根据条件
-
- 模式
匹配并替换文本
,结合awk
的语法规则和功能选项,来编写相应的命令
awk '{gsub(/oldtext/, "newtext", $0); print}' filename
- 模式
- 编写
对应
的脚本
ifconfig eno16777736 | grep netmask
ifconfig eno16777736 | grep netmask | awk '{print $3}'
- 查找出所有可能
登陆系统的账户
家目录
所在的位置
grep /"bin/bash" /etc/passwd | awk -F: '{print $1,$6}'
- 查出所有监听状态连接的PID
- `netstat -anpt | grep “LISTEN” | awk ‘{print $7}’ | awk -F/ ‘{print $1}’
- 1.打印文本文件的
过滤筛选grep
-
过滤文件内容(三剑客命令之一)
-
grep [参数] [--color=auto] [字符串] filename
-
参数
-
-v
-
取反 筛选掉的部分
-
grep -v "mysql" /etc/services
- 展示部分不带字符串MySQL
-
-
-
标准无特殊参数
-
grep "mysql" /etc/services
- 筛选出带有MySQL字符串的文件信息
-
-
-i
-
不区分大小写
-
grep -i "MySql" /etc/services
- 筛选出带有MySQL字符串的文件信息
-
-
-
-n
-
过滤的内容显示所在原文件中的行号
-
grep -n "MySql" /etc/services
- 筛选出带有MySQL字符串在 原文件中多少行的文件信息
-
-
-
-
| 管道(筛选过滤需要的信息)
管道越少越好效率低
-
举例
-
ifconfig eth0|grep 192
- 筛选eth0中192网段信息
-
ip a|grep inet|grep 192.168
- 输出ip a结果中含有inet的行。并且从中过滤192.168的行
-
cat /etc/passwd|grep bash|grep root
- 找出
/etc/passwd
中含有的bash
的行,并且从中过滤出root
- 找出
-
-
引申
-
grep -E
- 同时过滤两个
-
-
which
-
用于查找文件
-
which [文件…]
-
参数
-
-n<文件名长度>
- 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-
-p<文件名长度>
- 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-
-w
- 指定输出时栏位的宽度
-
-V
- 显示版本信息
-
-
which $PATH
find
-
遍历查找,从根开始从磁盘上查找文件,效率很低,但功能强大
-
find 查找路径 选项1 【参数1】 选项2 【参数2】…
-
查找方式
-
-name
find / -name "hosts"
-
- :模糊查找
find /etc/ -name "h*ts"
-
-type
-
b
block (buffered) special
块设备 硬盘光驱 -
c
character (unbuffered) special
字符设备 -
d
directory
查找目录 -
f
regular file
查找文件 -
l
symbolic link;
软连接 快捷方式 -
s
socket
和应用程序之间通信有关
-
-
混合查找
-
-o 并集
-
find / -name "hosts" -o -type d -name "oldboy"
- 查找名为hosts,或者类型为d,并且为oldboy
-
-
-a 交集
find ~ -type d -a -name "hosts*"
-
! 取反
-
[root@oldboy ~]#
find /data ! -name "file1"
- 取反:!查找名字不是file1
-
-
-
-size 大小查找
-
参数
-
-size +1M #大于1M
- find /etc -size +1M
-
-size 1M
#1M -
-size -1M
#小于1Mfind /etc -size -1M
-
其他单位k G
-
-
-
-ctime
- 作用 :按照
属性变更时间
查找
- 作用 :按照
-
atime
- 按照
被访问
或被执行
时间`查找 - 按照
被访问对象
的时间轴
来查找
- 按照
-
-mtime
-
按照
内容修改时间
查找 -
参数
-
-mtime +7
#7天以前的(7天以外)
find /data -type f -name "file*" -mtime +7
-
-mtime 7
#第7天 N天前到N天之间
find /data -type f -name "file*" -mtime 7
-
-mtime -7
#最近7天(7天以内)
find /date -type f -name"file*" -mtime -7
-
-
-
perm
按权限查找-
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
-
find /data -perm 755
-
-
-
对查找的内容进行二次处理
-
公式
find [路径] [查找信息] [ 属性] -exec或xargs [操作方法删除或者移动] {} \;
-
exec单个 执行动作(效率低)
-
xargs批量执行动作(效率高)
-
参数
-
-i
-
查找/data大于20K,修改时间为7天以内的文件,移动到/opt。
find /data -size +20k -mtime -7|xargs -i cp {} /tmp
-
-
-t 是cp的参数,组合使用
-
查找/data大于20K,修改时间为7天以内的文件,移动到/opt。
find /data -size +20k -mtime -7|xargs cp -t /opt
-
-
-
-
Linux基础信息
核心特殊字符
-
-
表示所有。匹配文件名。属于模糊匹配
rm -f a* (删除目录下所有a的文件)
-
-
~ 表示家目录
cd ~
切换到家目录下
-
.
表当前目录 -
..
表示上级目录cd ..
切换到上级目录
[root@name-lixin ~]#
-
root
-
用户名:“我是谁”
whoami
-
-
@
- 38分割线:分割符
-
name-lixin
-
主机名:机器名
hostname
-
-
~
-
你当前在哪:路径
pwd
-
-
- 管理员身份的提示符
-
$
-
普通用户身份的提示符
-
切换用户用:su -用户名
- 创建用户:useradd 用户名
-
-
-
修改颜色
-
echo "PS1='\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]'" >>/etc/profile
source /etc/profile
-
文件操作
查看文件
-
cat
-
用于查看纯文本文件
-
查看文件,显示行号
cat -n a.txt
-
追加文字到文件
cat >>/tmp/a.txt <<EOF
-
在每行的结尾加上$符
cat -E a.txt
-
-
head
-
查看前几行
-
head -n
/文件目录head -5 /etc/passwd
-
-
tail
-
查看文件后几行
-
tail -f XXX.log
- 实时跟踪某日志尾部的变化
-
tail -n
/文件目录tail-5 /etc/passwd
-
more
-
more /etc/passwd
-
more命令用于查看内容较多的文本
-
more命令查看文件会以百分比的形式告知已经看到了多少,使用回车键向下读取内容
-
-
翻阅操作
-
按下空格space是翻页
-
按下b键是上一页
-
回车键向下读取内容
-
创建文件touch
-
touch
:创建文件 -
创建单一目录
touch a.txt
-
多个创建
-
touch a.txt b.txt c.txt
- a,b,c在同一目录下
-
touch a{1..1000}.txt
- 直接在文件中创建100个文件
-
注意
- 重复创建不会覆盖,更改文件时间戳.(修改时间\访问时间\改变时间)
-
stat命令显示文件或问价系统的状态
-
用法:stat [参数] 文件
-
参数;列表
-
-L --dereference
- 跟随链接
-
-f --file-system
- 显示文件系统状态而非文件状态
-
-c
-
--format
=格式- 使用指定输出格式代替默认值
-
--printf
=格式- 类似 --format,但是会解释反斜杠转义符,不使用换行作为输出结尾,如果仍希望使用换行,可以在格式中加“\n"
-
-
-t
-
--terse
- 使用简介格式输出
-
--help
- 显示此帮助信息并退出
-
--version
- 显示版本信息并退出
-
-
格式化输出
-
%a
- 八进制权限
-
%A
- 用可读性较好的方式输出权限
-
-
-
复制cp
-
复制 >copy>cp
-
移动a.txt到/tmp目录下
cp a.txt /tmp/
-
移动a.txt到/tmp目录下顺便改名为b.txt
cp a.txt /tmp/b.txt
-
cp -r
- 递归复制。复制目录及目录下的所有目录及文件
-
cp -p
- 复制文件,同时保持文件属性不变 可以用stat
-
cp -a
- 相当于 -pdr
-
cp是个好命令,操作文件前先备份
cp a.txt a.txt.bak
重定向
-
输入重定向
-
<或0<标准输入重定向
-
<<或0<<追加输入重定向
-
-
输出重定向
-
或1>标准输出重定向
-
清空已有文件内容,加入新的内容
-
例:加入oldboy到文件a.txt
echo oldboy 1>a.txt
-
-
-
1>>标准追加输出 重定向
- 只加入新的内容到文件结尾
-
2>>错误追加输出重定向
- 只加入新的【错误】内容到文件结尾
-
删除rm
-
rm(英文全拼:remove)命令用于删除一个文件或者目录。
-
参数
-
-i
-
删除前逐一询问确认
rm /tmp/a.txt
输入“Y”确认
-
-
-f
- 即使原档案属性设为唯读,亦直接删除,无需逐一确认,即为强制删除
-
-r
- 将目录及以下之档案亦逐一删除,即为递归删除目录和内容
-
-
友情提醒:初学者使用rm命令,随时快照虚拟机
-
`head -5 /etc/passwd
常见问题
- centOs
bash_history
安全性问题,history
添加了空格
后还能在history
中看见 解决:
进入`.bashrc` 添加或者修改如下指令
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000000
HISTFILESIZE=2000000
万物皆文件