Linux 系统基础管理与维护
TAB 键
1、自动补齐文件名
2、自动补齐目录
3、自动补齐命令
Linux 快捷键
ctrl+c 退出前台程序
ctrl+l = clear 命令 清屏
ctrl+d 退出当前终端 等价于 exit 命令
ctrl+a 快速将光标移动到命令起始位置
ctrl+e 快速将光标移动到命令最后
ctrl+u 删除光标前所有字符
ctrl+k 删除光标后所有字符
Linux 管道
管道是用来过滤数据的 将输入源数据根据一定规则过滤输出到文件或终端
管道使用 | 实现数据的过滤
比如:
[root@centos7 opt]# ls |grep 123
123abc.txt
123.txt
m123t
tee 管道可以将输入流同时输出到终端和文件中
[root@centos7 opt]# echo "Hello world" |tee hello.txt
Hello world
[root@centos7 opt]# cat hello.txt
Hello world
Linux 输入输出重定向
linux 系统进程使用不同的文件描述符(FD file descriptors)来管理打开的文件
linux 系统提供如下三种 I/O 设备
标准输入 stdin 使用文件描述符 0 代替 0 代表来自键盘的输入
标准输出 stdout 使用文件描述符 1 代替 1 代表输出到屏幕
标准错误 stderr 使用文件描述符 2 代替 2 默认也是输出到终端窗口即屏幕
重定向
重定向说白了就是不使用标准的输入输出端口,进行重新的指定,所以叫做重定向,也就是说是可以自行设定对应的设备。 输入重定向 使用< 或者 <<来接收其他设备的内容作为输入,比如使用文件内容重定向输入到某个命令,如下:
[root@centos7 ~]# cat < site.txt
#!/bin/sh
a= curl www.baidu.com
echo $a > site.txt
c= ls -l |grep site.txt | awk '{print $5}'
if [[ $c >100 ]]
then
echo 'live'
else
echo 'dead'
fi
输出重定向
使用>或者>>来将标准输入或者其他地方的输入输出到非终端窗口的设备,比如将一个命令的结果输出到文件中,我们可 以通过查看文件去看对应的内容,而屏幕或终端是看不到任何内容的。如下例子:
[root@centos7 ~]# ls > ls.txt
[root@centos7 ~]# cat ls.txt
1
123.txt
2000
29.txt
99.s
a
正确输出:1> 和 1>> 跟 > 及 >>是等效的。
如:date 1> 1.txt date > 1.txt
注意:文件描述符跟重定向符号之间不能有空格,同时>代表输出重定向并且会覆盖上次的内容,>>代表输出重定向但是不会覆盖上次内容,而是追加内容到上次文件末尾。
错误输出:2> 和 2>>
如:ddds 2> er.txt ddds 2>> er.txt 重定向符号跟正确输出功能一致。
例子:
1、将正确的输出和错误的输出分别重定向到不同文件中:
ls /home /dssssss 1> home.txt 2> dssss.txt
其中/home 目录是系统本身就存在的,而/dsssss 是不存在的目录,使用 ls 命令查看时会报错,我们通过使用不同的文件描述符和重定 向符号结合使用,让其分别输出到不同的文件中,这样可以区别查看我们的正确输出和错误输出。
2、将正确的输出和错误的输出同时重定向到一个文件中:
ls /home /dsssss 1> ls.txt 2>&1
此例子作用就是将正常的输出重定向到 ls.txt 中,然后同时使用&1 将错误的输出重定向到正确输出中。
[root@centos7 ~]# ls /home /dsss 1> ls.txt 2>&1
[root@centos7 ~]# cat ls.txt
ls: cannot access /dsss: No such file or directory
/home:
alice
bob
david
hello
john
上述第二个例子的命令可以将其简写为如下去实现,效果一致:
[root@centos7 ~]# ls /home /dsss &> ls.txt
有时候我们的命令结果并不想让其输出,而是只想让其执行,就可以将其重定向到/dev/null 设备中。 /dev/null 设备是我们的空设备或者叫做位桶,有时也称为黑洞,你可以向它输出任何东西,而不用担心会撑满它。
举例: date > /dev/null
/dev/zero 设备是我们的 0 设备,也是我们的输入设备,无限制提供 0,用于向设备或文件中写入无限制个数的字符串 0。
举例:
dd if=/dev/zero of=/opt/test bs=10M count=10
Linux 常见系统管理命令详解:
1、ls命令 ls 命令用来显示指定工作目录下的内容。
【常用参数】
a 列出目录下的隐藏目录
-A 列出除过.和..之外的所有文件和目录
-l 是长格式化的列表显示,包含文件的相关属性,比如权限,时间,大小,所属用户用户组等等
-d 列出目录本身不包含目录下的内容
-h 以人类可读的方式显示文件的大小,通常结合-l 参数使用
-t 以时间顺序排序,通常最新的文件或目录排在最前面,这个参数通常跟-l 一起使用
-r 是反向排序,通常跟-lt 结合可以实现按照时间顺序从旧到新的顺序排序,也就是说新文件在最后面
-S 按照文件大小排序,通常也是结合-l 参数使用,默认是从大到小排序
2、cd 命令 切换目录
【常用参数】
~ 代表/root,/root 是 root 用户的家目录/宿主目录
- 代表切换回上次所在目录
. 代表当前目录
..代表切回上级目录
3、date 命令 打印系统日期和时间
【常用参数】
-d, --date=STRING display time described by STRING, not 'now'
显示时间根据你写的字符串
[root@Qi1 home]# date -d "2022-7-14 19:20:10"
2022年 07月 14日 星期四 19:20:10 CST
-s, --set=STRING set time described by STRING 设置时间根据你写的字符串
[root@Qi1 home]# date -s "2022-7-14 16:10:10"
2022年 07月 14日 星期四 16:10:10 CST
时间格式化
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%c 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%m month (01..12)
%M minute (00..59)
%r 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S 秒(00-60)
%T 时间,等于%H:%M:%S
%x 当前locale 下的日期描述 (如:12/31/99)
%X 当前locale 下的时间描述 (如:23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%Z 按字母表排序的时区缩写 (例如,EDT)
[root@Qi1 home]# date +"%Y-%m-%d %H:%M:%S"
2022-07-14 16:13:32
[root@Qi1 home]# date +"%F"
2022-07-14
[root@Qi1 home]# date +"%F %T"
2022-07-14 16:14:04
[root@Qi1 home]#
时间戳转换
时间戳转换时间戳记录的是 1970-1-1 以来到现在时间的总秒数,通常用在 linux 服务器中,如果需要将其转化成具体的年月日时间格式,可以使 用以下方法:
Convert seconds since the epoch (1970-01-01 UTC) to a date
[root@Qi1 text]# date --date='@2147483647'
2038年 01月 19日 星期二 11:14:07 CST
当然还可以使用在线的 unix 时间戳转化工具实现
4、history命令【常用参数】
history 显示所有的历史命令
history 10 显示最近10条命令
[root@Qi1 ~]# history 10
10 kmdir test
11 mkdir test
12 ll
13 cd /test
14 cd test
15 touch hello.txt
16 ll
17 cd ..
18 history
19 history 10
!14 执行编号为14的历史命令
[root@Qi1 ~]# !14
cd test
[root@Qi1 test]#
!! 执行上一条命令
[root@Qi1 text]# cat txt
ls: 无法访问/dsssss: 没有那个文件或目录
/home:
Qi2
text
[root@Qi1 text]# !!
cat txt
ls: 无法访问/dsssss: 没有那个文件或目录
/home:
Qi2
text
可以通过 HISTSIZE 这个系统变量来查看我们的历史命令条数是多少
也可通过赋值实现修改其大小,如 HISTSIZE=2000