1、查看系统信息
tty 命令
- 描述:查看当前系统在哪个终端
- 语法:tty
Linux默认情况下提供6个虚拟终端来让用户登录,系统将F1~F6定义为tty1~tty6。
-
ctrl+alt+(F1~F6) :从图形界面切换到命令行界面的第 n 个虚拟终端(F1 是图形界面,F2、...、F6 是命令行界面)。
-
alt+F1~F6 可以在命令行界面终端之间切换。
查看当前终端
tty
who -m
who am i
w
who 命令
-
描述:查看当前登入主机的用户终端信息
-
语法:who [选项]
查看当前登入主机的用户终端信息
who -m
who am i
tty
w
w 命令
- 描述:显示用户登录的信息
- 语法:w 用户名
命令 w 的功能最全面,按以下顺序排列:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近 1 分、5 分和 15 分的平均负载。
-
USER 显示登陆用户帐号名。
-
TTY 用户登陆所用的终端。
-
FROM 显示用户在何处登陆系统。
-
LOGIN@ 是 LOGIN AT 的意思,表示登陆进入系统的时间。
-
IDLE: 用户空闲时间,从用户上一次任务结束后,开始记时。
-
JCPU 和该终端(tty)连接的所有进程占用的时间
-
WHAT 表示当前执行的任务。
w root # 查看root用户登录终端情况
uname 命令
- 描述:显示操作系统的信息,包括版本、平台的信息
- 语法:uname [选项]
-
-
-a, --all 以如下次序输出所有信息。其中若-p 和 -i 的探测结果不可知则被省略:
-
-s, --kernel-name 输出内核名称
-
-n, --nodename 输出网络节点上的主机名
-
-r, --kernel-release 输出内核发行号
-
-v, --kernel-version 输出内核版本
-
-m, --machine 输出主机的硬件架构名称
-
-p, --processor 输出处理器类型或"unknown"
-
-i, --hardware-platform 输出硬件平台或"unknown"
-
-o, --operating-system 输出操作系统名称
-
--version 显示版本信息并退出
查看操作系统的信息
uname -a
查看主机名
hostname
查看操作系统版本
cat /etc/redhat-release
查看语言、字符集设置
cat /etc/locale.conf
查看cpu信息
cat /proc/cpuinfo
查看内存信息
cat /proc/meminfo
查看系统时间
date
查看系统运行时间
uptime
查看系统时区
timedatectl
-
shutdown 命令
- 描述:
- 语法:shutdown [选项] [参数]
-k :不是真的关机,只是发送警告消息出去
-r :将系统的服务停掉之后就重启(常用)
-h :将系统的服务停掉之后立即关机(常用)
-n : 不经过 init 程序,直接以 shutdown 的功能来关机
-f :关机并开机之后,强制略过 fsck 的磁盘检查
-F :系统重启之后,强制进行 fsck 的磁盘检查
-c :取消已经在进行的 shutdown 命令的内容
shutdown 命令用于安全关闭 Linux 系统。有些用户会使用直接断掉电源的方式来 关闭 Linux,这是十分危险的。因为 Linux 后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至会损坏硬件设备。
执行 shutdown 命令时,系统会通知所有登录的用户系统将要关闭,并且 login 指
令会被冻结,即新的用户不能再登录系统。
# 关机
shutdown 正常关机
shutdown -h now 立即关机
shutdown -h 10 10分钟之后关机
shutdown -c 取消关机
poweroff 发送ACPI指令,切断电源供应
init 0
# 重启
reboot 重启
shutdown -r 重启
shutdown -r now 立即重启
init 6
init 命令
在 centos7/rhel7 之前的 linux 版本,linux 运行级别分为 7 个级别,分别是 0~6 级别:
- 0 代表关机(poweroff)
- 1 代表单用户模式
- 2 代表多用户模式,但没有网络服务
- 3 代表完整多用户模式,有网络服务,登陆后进入控制台命令行模式 :multi-user.target
- 4 运行级别,预留,系统未使用
- 5 代表图形界面:graphical.target
- 6 代表系统正常关闭并重启
一般默认运行级别设置为 3 或 5 级别。
init 命令:init 用于切换系统的运行级别,切换的工作是立即完成的。
# 切换运行级别为6:重新启动
init 6
# 切换运行级别为0:关机
init 0
# 切换运行级别为3:字符界面
init 3
# 切换运行级别为5:图形界面
init 5
# 切换到命令行界面:
systemctl isolate multi-user.target
# 切换到图形界面
systemctl isolate graphical.target
# 显示当前运行级别以及系统当前时间
who -r
# 显示前一个运行级别(无则显示"N"),当前运行级别
runlevel
#查看默认的运行级别
systemctl get-default
# 修改启动时的默认级别
vim /etc/inittab 进入文件后将 5 改为 3
# 修改默认的运行级别为5
systemctl set-default graphical.target
cd 命令
-
描述:切换目录
-
语法:cd 目标目录
cd .. # 返回上一级目录
cd - # 在最后切换的两个目录中切换
cd | cd ~ # 返回用户的所在的家目录
2、文件目录的增删改
mkdir 命令
- 描述:创建目录
- 语法:mkdir [选项] 目录名称
-
-
-p 递归创建目录
mkdir /opt/test/ # 在 /opt 目录下创建 test 目录
mkdir /opt/aa/bb/cc # 在 /opt 目录下递归创建 aa/bb/cc/ 目录
mkdir test{1..5} # 在当前目录下创建 test1,test2,test3,test4,test5 目录
-
touch 命令
-
描述:创建文件
-
语法:touch 文件名
touch data.txt # 在当前目录下创建 data.txt 文件
touch data{1..5}.txt # 在当前目录下批量创建 data1.txt ~ data5.txt 文件
cp 命令
- 描述:复制文件或目录
- 语法:cp [选项] 源文件|目录 目标文件|目录
-
-
-f(force) 覆盖目标同名文件或目录时不进行提醒,而是直接强制复制
-
-i 覆盖目标同名文件或目录时提醒用户确认
-
-p(privilege) 复制时保持源文件的权限,属主及时间标记等属性不变
-
-r(recursion) 复制目录时必须使用此选项,表示递归复制所有文件及子目录
cp -r /home /opt # 将 /home 目录 复制到 /opt 目录下
cp hello.txt hello1.txt # 复制当前目录下hello.txt 并改名为hello1.txt 到当前目录
-
rm 命令
- 描述:删除文件|目录
- 语法:rm [选项] 文件|目录
-
-
-f(force) 删除文件或目录时不进行提醒,而直接强制删除
-
-i 删除文件或目录时提醒用户确认
-
-r(recursion) 删除目录时必须使用此选项,表示递归删除整个目录树
-
-v --verbose 显示指令执行过程
rm -rf test{1..10} # 批量删除test1 ~ test10 文件
-
mv 命令
-
描述:移动文件或目录,如果目标位置与源位置相同,则效果相当于为文件或目录改名
-
语法:mv 源文件|目录 目标文件|目录
mv test.txt test1.txt # 将当前目录下的 test.txt 改名为 test1.txt
3、文件目录的查看
pwd 命令
-
描述:查看当前的工作目录(绝对路径显示),实际读取的是$PWD环境变量的值
-
语法:pwd
pwd # 查看当前的工作目录
echo $PWD # 查看当前的工作目录
ls 命令
- 描述:显示指定目录内容及目录中隐藏的文件
- 语法:ls [选项] 参数
-
- -a --all 显示所有文件,包括以"."开头隐藏的文件
- -l: 使用长列表格式显示
- -d 只显示目录本身的属性,不显示目录中的内容,一般结合-l 使用
- -h 显示目录或文件大小,需要结合-l 结合使用,将会显示 KB、MB 等单位
- -R 以递归的方式显示指定目录及其子目录中的所有内容
alias 命令
- 描述:给命令添加别名
- 语法:alias 别名="..."
给命令设置永久的别名
-
设置永久全局别名:编辑 /home/usename/.bashrc 配置文件 添加别名
-
设置永久局部别名:编辑 /etc/bashrc 配置文件 添加别名
设置临时的catens33别名
alias catens33="cat /etc/sysconfig/network-scripts/ifcfg-ens33"
取消别名
unalias catens33
which 命令
- 描述:显示命令所在的目录
- 语法:which 命令
-
-
-a 命令1 命令2 命令n 查看多个命令所在位置
which cat # 显示cat命令所在的目录
which -a vim cat # 同时查看vim和cat命令的所在位置
-
find 命令
- 描述:搜索和查找文件和目录列表,可以通过权限,用户,组,文件类型,日期,大小等条 件查找文件。
- 语法:find pathname -option [-print ] [ -exec | -ok command ] {} \;
-
- 命令参数:
-
-
- -print: find命令将匹配的文件输出到标准输出。
- -exec: find命令对匹配的文件执行该参数所给出的shell命令。\(转义字符)
- -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-
-
- 选项:
-
-
- -name fileName 按文件名称查找,区分文件的大小写
- -iname fileName 按文件名称查找,不区分文件的大小写
- -type b/d/c/p/l/f 按文件类型查找
-
-
-
-
- f - 普通文件。 d - 目录。
- b - 块设备文件(随机读取) l - 符号链接文件。 s - socket文件 ip+port
- c - 字符设备文件(顺序读取)。 p - 管道文件,进程之间通信
-
-
-
-
- -mtime -n|+n 按文件更改时间来查找文件,-n:n天以内,+n:n天以前
- -atime -n|+n 按文件访问时间来查,-n:n天以内,+n:n天以前
- -ctime -n|+n 按文件创建时间来查找文件,-n:n天以内,+n:n天以前
- -newer fileName 查找比fileName内容更新时间新的文件
- -size -n|+n 按照文件大小查询文件。单位:k, M, G
- -maxdepth 层级数 限制目录查找层级(从外往里找),默认递归查找整个目录
- -perm 按文件|目录的权限查找
- -empty 查找空文件
- -user username 按文件的所有者来查找
- -group groupname 按文件的所在组来查找
- -nogroup 查无效属组的文件,即文件的属组在/etc/group中不存在
- -nouser 查无效属主的文件,即文件的属主在/etc/passwd中不存在
- -prune 不在当前指定目录中查找
-
-
- 逻辑运算符
-
-
- 与(-a)、或(-o)、非(!)
find /mnt -name test1.txt # 按文件名称查找test1.txt(不区分大小写)
find /mnt -iname test1.txt # 按文件名称查找test1.txt(区分大小写)
find /root -type f -name "*.php" # 查找/root目录下所有以.php结尾的文件对找到的.php文件进行长格式查看
find /root -type f -name "*.php" -exec ls -l {} ;
删除找到的.php文件
find /root -type f -name "*.php" -exec rm -rf {} ;
在/root下查找文件更新日是在距现在时刻二天以内的文件
find /root -type f -mtime -2
在/root下查找文件更新日是在距现在时刻二天以前的文件
find /root -type f -mtime +2
在/root下查找文件更新日时在距现在时刻二分钟以内的文件
find /root -type f -mmin -2
在/root下查找文件更新日时在距现在时刻二分钟以前的文件
find /root -type f -mmin +2
查找文件更新时间比文件test.txt的内容更新时间新的文件
find ./ -type f -newer test.txt
查找/boot目录下大于2M的文件
find /boot -type f -size +2M
查找/boot目录下大于2M的文件,并显示文件大小
find /boot -type f -size +2M -exec du -sh {} ;
查找/mnt目录下小于2M的文件,并删除
find /mnt -type f -size -2M -exec rm -rf {} ;
在/etc目录下找ifcfg-ens33文件,限制查找目录的层级为2层。注:-maxdepth放在-name前
find /etc -maxdepth 2 -name ifcfg-ens33 # 目录小于3层,查找不到。>=3可以查到
查找/root权限为644的所有文件
find /root -perm 644 -type f -exec ls -l {} ;
把/mnt目录下权限为777文件改为644
find /mnt -perm 777 -type f -exec chmod 644 {} ;
在/root路径下查找所有空文件
find /root -type f -empty
在/root路径下查找所有空目录
find /root -type d -empty
查找/ 目录下所有者root的、名为date1.txt的文件
find / -user root -name date1.txt
查找/ 目录下属于Group chrony的所有文件
find / -group chrony -type f
查找无效属组的所有文件
find / -nogroup -type f
查找无效属主的所有文件
find / -nouser -type f
查找/root目录下不是以.php结尾的文件
find /root ! -name "*.php"
查找/root目录下以.txt或以.php结尾的文件
find /root -name ".txt" -o -name ".php"
查找/root目录下权限为644和以.txt结尾的文件
find /root -name "*.txt" -a -perm 644
find / -name passwd
-
find / -path /etc -prune -o -name passwd
find / -path /etc -prune -o -name passwd -print
stat 命令
-
描述:显示文件|目录的状态信息,输出信息比ls命令的输出信息要更详细
-
语法:stat 文件|目录
stat /root # 查看root目录的详细信息
cat 命令
- 描述:显示文件的内容
- 语法:cat [选项] 文件
-
- -n 对输出的所有行编号
nl 命令
- 描述:将指定的文件添加行号标注后写到标准输出。果不指定文件或指定文件为"-" ,程序 将从标准输入读取数据
- 语法:nl 文件
head 命令
- 描述:从文件开头查看部分内容,默认显示10行
- 语法:head [选项] 文件
-
-
-n "-n"选项指定需要显示多少行的内容
cat -n /etc/passwd | head -n 5 # 显示passwd文件头部5行(带行号)
-
tail 命令
- 描述:从文件末尾查看部分内容,默认显示10行。此命令比较适合查日志,因为最新的日志总是在文件的最后。
- 语法:head [选项] 文件
-
-
-n 指定需要显示多少行的内容
-
-f 跟踪文件尾部内容的动态更新
cat -n /etc/passwd | tail -n 5 # 显示passwd文件末尾5行(带行号)
tail -f /var/log/messages
-
more 命令
-数字 每页显示几行
-p 显示下一页的时候,删除上一页的内容
在阅读时可以按Enter键向下滚动查看,按Space键可以向下翻一屏,按"q"键退出并返回原来的命令环境
more /etc/passwd
less 命令
less命令使用方法与more命令基本类似,但是比more更好的是,less命令既可以向下翻页也可以向上翻页,而more命令只能向下翻页,不能向上翻页。
less /etc/passwd
4、文件目录的统计与操作
wc 命令
- 描述:统计文件内容中的单词数量、行数等信息,可以同时统计多个文件。
- 语法:wc [选项] 文件名
-
-
-c:统计文件内容中的字节数
-
-l:统计文件内容中的行数
-
-w:统计文件内容中的单词个数(以空格或指标位作为分隔)
wc -l /etc/passwd # 统计passwd文件的行数
find /etc -name "*.conf" | wc -l # 统计/etc下文件名以".conf"结尾的文件个数
-
du 命令
- 描述:统计目录以及空间的占用情况
- 语法:du [选项] 参数
-
- -a 统计当前目录和子目录下所有文件所占用的磁盘大小
- -h 显示出统计结果,使用-h 选项后将显示出 KB、MB 等单位
- -s 只统计当前目录(不包括子目录和文件)所占用的空间总的大小
sort 命令
- 描述:它将文件进行排序(默认按升序排序),并将排序结果标准输出
- 语法:sort [选项] 文件名
-
-
-r: 降序排序;
-
-t: 指定分隔符,默认分隔符是制表符;
-
-k [n,m]: 按指定字段范围排序。从第 n 个字开始,到第 m 个字(默认到行尾)
-
-u: 删除重复行。就是 uniq 命令;
-
-f: 忽略大小写;()
-
-b: 忽略每行前面的空白部分;
-
-n: 以数值型进行排序,默认使用字符串排序;
-
-o --output 将排序结果输出到源文件
以":"分隔且以第3个字段按照数字排序对文件内容进行正向排序
sort -n -t ":" -k 3 sortTest.txt
以":"分割,指定第2段并按照数字对文件内容进行逆向排序
sort -n -r -t ":" -k 2 fruit.txt
查找 etc 目录下的最大5个文件
find /etc -type f -exec du -sh {} ; | sort -n -u | tail -5
-
uniq 命令
- 描述:去除文件中的重复行,一般情况先用sort排序再进行去重。
- 语法:uniq [选项] 文件名
-
-
-c 在每列旁边显示该行重复出现的次数(uniq)
-
-i 忽略大小写。(ignore-case)
-
-d 仅显示重复出现的行列(repeated)
-
-u 仅显示出现一次的行列(unique)
uniq uniqTest.txt # 去重显示文件内容
sort uniqTest.txt | uniq # 排序并去重显示文件
sort uniqTest.txtt | uniq -c # 统计每行出现的次数
uniq -d uniqTest.txt # 查找文件中重复出现的行
uniq -u uniqTest.txt # 查找文件中出现过一次的行
-
grep 命令
- 描述:按关键字 检索、过滤文件内容
- 语法:grep [选项] 模式或"关键字" 文件列表
-
-
-n 显示匹配行的行号
-
-v 显示不包含关键字的行
-
-i 忽略大小写
-
-l 一般和-r联用, 只显示包含关键字的文件的名字, 而不是显示文件内容
-
-r 递归检索
-
-w 按照单个词语的方式匹配
过滤出包含root的行并显示该行的行号
grep -n "root" /etc/passwd
过滤出行首是root的行
grep ^"root" /etc/passwd
过滤出以bash结尾的行
grep "bash"$ /etc/passwd
过滤出不包含nologin的行
grep -v "nologin" /etc/passwd
过滤出非注释的行
grep -v ^# /root/.bashrc
过滤出非注释的行并且该行不是空行
grep -v ^# /root/.bashrc | grep -v ^$
统计匹配到的行数
grep -c "root" /etc/passwd
过滤出etc目录中包含root关键字的所有文件名
grep -lr "root" /etc
-
cut 命令
- 描述:从文件的每一行剪切字节、字符和字段并写到文件或标准输出(不指定文件)。
- 语法:
-
-
-d "字符": 指定字段的分隔符,默认的字段分隔符为"TAB"
-
-f 数字: 指定截取第几段
-
-c "字符": 截取指定的字符
-
--out-delimiter="字段分隔符":指定输出内容使的字段分割符;
以":"分割每行,截取第1段
cat /etc/passwd | cut -d ":" -f 1
以":"分割每行,截取第1段和第3段
cat /etc/passwd | cut -d ":" -f 1,3
以":"分割每行,截取第1段和第3段,每段之间使用"==>"做分隔
cat /etc/passwd | cut -d ":" -f 1,3 --output-delimiter="-->"
以":"分割每行,截取1,3,5段并以第三段按数字排序
cat passwd | cut -d ":" -f 1,3,5 | sort -t ":" -k 2 -n
截取当前操作系统的ip地址 -> 192.168.10.5/24
ip addr | grep -w "inet" | grep "ens33" | tr -s ' ' | cut -d ' ' -f 3
-
tr 命令
- 描述:用于替换字符()或将连续的字符变成一个
- 语法:tr [选项] "字符" | tr ""原字符 "目标字符"
-
-
-s: 指定将哪个连续的字符变成一个
-
-d:删除指定的字符
ip addr | tr -s ' ' # 将标准输出中的连续的空格 替换成 一个空格,即' ' -> ' '
-
5、文件加密
file 命令
- 描述:显示文件的类型
- 语法:file 文件
md5sum 命令
- 描述:计算和校验文件的md5值
- 语法:md5sum 文件
md5是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(哈希值),用于确保信息传输完整一致。
sha256sum 命令
- 描述:计算和校验文件的md5值
- 语法:md5sum 文件
sha256算法也是一种密码散列函数,对于任意长度的消息,SHA256都会产生一个256bit长的散列值(哈希值),用于确保信息传输完整一致。SHA256(⼜称SHA2)的安全性最⾼,但是耗时要⽐其他两种多很多,md5相对来说比较容易碰撞,安全性没这么高
diff 命令
-
描述:比较文件的差异,常用于文本文件
-
语法:diff 文件1 文件2
diff num1 num2 # 比较 num1和num2 之间的差异 num1:12345,num2:12545
ln 命令
- 描述:创建文件的软硬连接,默认创建硬链接(不加参数-s)
- 语法:ln [选项] 文件|目录 连接
-
-
-s 创建软连接
创建anaconda-ks.cfg 的软连接 testAn.cfg
ln -s /root/anaconda-ks.cfg /opt/testAn.cfg
-
文件系统中的每个文件均有一个索引节点即inode与其相关联。
inode包含有关文件的基本信息:其权限、时间戳以及指向存储在该文件中数据的指针。当创建新文件时,文件系统中未使用的inode将分配给该文件,并向该文件所在目录添加一个条目,将文件名映射至inode中。
软链接 (symbolic link)
- 软链接是以路径的形式存在(指向的是原文件的路径),类似于Windows中的快捷方式
- 软链接可以跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
- 软连接的文件有自己的inode,跟原文件不一样
- 删除软链接并不影响被指向的原文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
硬链接 (hard link)
- 硬链接是以文件副本的形式存在,不占用实际空间
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
- 硬链接的文件的inode跟原文件一样
- 由于硬链接是有着相同 inode 号,仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。
注意:ln命令会保持每一个链接文件的同步性。不论改动了哪一处,其它的文件都会发生相同的变化
6、其他
env
-
描述:显示系统中的环境变量
-
语法:env
env # 显示系统中的环境变量
!$ 参数
-
描述:使用上一条命令的最后一个参数
-
语法:命令 !$
此命令的最后一个参数是"/etc/sysconfig/network-scripts/"
ls /etc/sysconfig/network-scripts/
此命令中的"!$"(上一条命令的最后一个参数) -> /etc/sysconfig/network-scipts/
cat !$
| 管道符
-
描述:每一个命令都有输入输出,把前一个命令的输出当做第二个命令的输入,一个命令的输入可以从文件中读取,也可以从前一个命令的结果中读取。
cat -n /etc/passwd | head -n 5
重定向符号与文件描述符
文件描述符是一个非负整数,在打开现存文件或新建文件时,内核会返回一个文件描述符,读写文件也需要使用文件描述符来访问文件。
|-------|--------|---------------------------------|
| 文件描述符 | 描述 | 映射关系 |
| 0 | 标准输入 | /dev/stdin -> /proc/self/fd/0 |
| 1 | 标准正确输出 | /dev/stdout -> /proc/self/fd/1 |
| 2 | 标准错误输出 | /dev/stderr -> /proc/self/fd/2 |
|-------|----------------------|
| 重定向符号 | 描述 |
| > | 输出重定向,将内容覆盖至文件中 |
| >> | 输出重定向,将内容追加至文件中 |
| < | 输入重定向,将文件中的内容覆盖至标准输出 |
| << | 输入重定向,将文件中的内容追加至标准输出 |
| & | 重定向绑定符号 |
> 将原本要打印到屏幕上的内容覆盖输出到文件中,文件中原来的内容会被覆盖,如果文件不存在,则会自动创建。
>> 将原本要打印到屏幕上的内容追加输入文件中,不会覆盖文件中原有的内容,在原有内容后面行追加,如果文件不存在,则会自动创建。
# 重定向输出符号
echo "welcome to lemon's page" > welcom.txt # 将内容写入指定文件中,覆盖原有内容
echo "welcome to lemon's page" >> welcome.txt # 将内容追加至文件末尾
# 标准错误输出,将错误信息写入文件中
adsfadsf 2>> 2.txt
asdfasdf &>> 2.txt
# 标准正确输出,将显示的信息追加至文件中
ls >> 2.txt
ls 1>> 2.txt
ls &>> 2.txt
cat 的第二种用法
cat > 2.txt << EOF # << EOF 起始字符
>丈夫只手把吴钩
>意气高于百尺楼
>一万年来谁著史
>三千里外欲封侯
>EOF # >EOF 终止字符
$PATH 环境变量
更改$PATH的环境变量
-
更改全局变量:修改全局配置文件 /etc/profile 对所有用户生效
-
更改局部变量: 修改局部配置文件 /home/username/.bash_profile 只对特定用户生效
echo $PATH # 显示系统的环境变量
修改全局环境变量
vim /etc/profile # 编辑全局配置文件
PATH=$PATH:/mnt # 将/mnt/目录添加到环境变量中