第一章、简单使用Linux
1. Linux系统基本概念
- 多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源
- 多任务的系统:允许同时执行多个任务
- 严格区分大小写:命令,选项,参数,文件名,目录名都严格区分大小写
- 不管是文件还是目录都是以倒挂的树形结构,存在于系统的“/”根目录下,根目录是Linux系统的起点
- 对于Linux系统而言,目录/文件没有扩展名一说,扩展名如:.sh(脚本文件) .conf(程序配置文件) .log(日志文件) .rpm(软件包).tar(压缩包)是易于用户和程序本身方便识别
- Linux系统没有回收站
2.shell命令提示符
[root@localhost ~]#
解释:
- root:当前登录系统用户名(root超级管理员)
- localhost :当前主机名
- :当前用户所在目录( 为家目录) ,root超级管理员家目录:/root
- #: 当前用户身份是超级管理员
[student@localhost ~]$
- $:当前用户身份为普通用户,普通用户的家目录:/home/用户名同名
3. 命令行一般命令格式
命令 [-选项]… [参数]…
- 命令:实现功能的指令
- 选项:调整命令功能的
- 短选项:-l -a -d -h(单个字母),短选项可以合并使用:-lad
- 长选项:–help(单词),长选项通常是不能合并使用的
- 参数:命令的执行对象,文件/目录/程序等
- []:可选的
- …:可以同时有多个
4.查看系统信息相关命令
- 在终端窗口上输入命令,命令的格式: 主命令 参数 操作对象
[root@server ~] # cat /etc/redhat-releaseRed Hat Enterprise Linux release 9 .1 (Plow)# Plow 时 RHEL9 的代号
查看内核版本 :
[root@server ~] # uname -r5 .14.0-162.6.1.el9_1.x86_64
# 分析5 - 内核版本 .14 - 主修订版本 .0 -162 - 次要修订版本 .6 .1 - 补丁版本 .x86_64 - 适用平台
查看shell的类型:
# 方法 1 :[root@server ~] # cat /etc/shells/bin/sh/bin/bash/usr/bin/sh/usr/bin/bash# 方法 2 :[root@server ~] # chsh -l/bin/sh/bin/bash/usr/bin/sh/usr/bin/bash
查看当前默认的shell:
[root@server ~] # echo $SHELL/bin/bash
查看网卡信息以及获取ip地址:
5.切换目录
- 更改当前的工作目录,即切换目录
- 绝对路径(以/开始的路径)
- 相对路径(以当前工作目录开始的路径)
[root@server ~] # cd /[root@server /] # cd /root[root@server ~] # cd /home[root@server home] # cd ~[root@server ~] # cd /etc[root@server etc] # cd ..[root@server /] # cd .
6.通过文件详细属性辨别
- 文件: - 开头
- 目录: d 开头
- 链接文件: l 开头
- 硬件设备文件:b 开头
- 字符设备文件:c 开头
- 管道设备文件:p 开头
- 套接字: s 开头
7. ls 查看目录/文件命令
- ls命令(英文全拼:list):用于列出目录下内容及目录和文件详细属性信息
- 命令格式:ls [-选项…] [参数…]
常用选项:
-a 显示目录下所有内容,包含隐藏的内容
-l 显示目录下的内容及详细属性
-h 以kB、MB、GB单位显示文件内容大小
-d 仅显示目录本身而不显示目录下的内容
-R 递归查看目录下所有内容(从头到尾)
-i 查看文件或目录的inod号
ls命令示例:
#显示当前所在目录下的所有内容
ls
#查看根目录下所有内容
ls /
#查看/etc目录下所有内容
ls /etc
#查看/bin目录下所有内容
ls /bin
#查看/dev目录下所有内容
ls /dev
#查看目录下所有目录和文件,包括隐藏的内容
ls -a
#以长格式显示目录下所有内容,包括详细的属性信息
ls -l
-rw-------. 1 root root 1584 8月 27 16:41 anaconda-ks.cfg
解释
- --文件类型
1 --代表文件的引用次数
root --文件的所有者
root --文件的所属组
1584 --文件的大小,默认以字节为单位显示大小
8月 27 16:41 --文件最近一次的修改时间
anaconda-ks.cfg --文件名
#以长格式显示目录所有内容,以人性化的方式显示详细的属性信息
ls -l -h
#短选项合并使用
ls -lh
#以长格式显示目录所有内容,以人性化的方式显示详细的属性信息,包括隐藏
的内容
ls -lha
#以长格式显示根目录下所有内容,包括详细的属性信息
ls -l /
lrwxrwxrwx. 1 root root 7 3月 13 17:15 bin ->
usr/bin
8.命令行快捷键
- 键盘上下键调出历史命令
- Ctrl + c:废弃当前命令行中的命令,取消当前执行的命令,例如ping、tail -f
- Ctrl + l,clear:清屏
- tab键自动补齐:可补齐命令、文件路径、文件名称、软件名
- esc +. :将上一条命令参数变成当前命令的执行对象
- Ctrl + a:将当前光标移动至行首
- Ctrl + e:将当前光标移动至行尾
- Ctrl + u 清空至行首
- Ctrl + w 删除一个单词
- exit,logout:退出系统(并不是关机,账号退出系统)
第二章、文件管理命令
1. mkdir 创建目录命令
mkdir(英文全拼:make directory)用于创建新目录
- 命令格式:mkdir [-选项] 目录名
- 常用选项:
-p 递归创建多个目录(在一个不存在的目录下创建子目录)
- 注意事项:
目录还是文件的名字,除了以“/”以外的任意名称,“/”根目录,路径分隔符
文件或目录的名字长度不能超过 255 个字符
mkdir命令示例:
#在当前所在目录创建test目录
mkdir test
#在当前所在目录同时创建多个目录
mkdir test1 test2 test3
#指定在/tmp目录下创建abc目录
mkdir /tmp/abc
#在指定目录下同时创建多个目录
mkdir /tmp/abc1 /tmp/abc2 /tmp/abc3
#在/opt目录下创建student,在当前目录创建student1..3
mkdir /opt/student student1 student2 student3
#mkdir默认无法在一个不存在的目录下创建目录,需要通过-p选项
mkdir /opt/xx/oo
mkdir: 无法创建目录"/opt/xx/oo": 没有那个文件或目录
mkdir /opt/a/b/c/d
mkdir: 无法创建目录"/opt/a/b/c/d": 没有那个文件或目录
#在/opt目录下递归创建目录
mkdir -p /opt/xx/oo
mkdir -p /opt/a/b/c/d
#ls -R选项可以递归目录下所有内容
ls -R /opt/a
/opt/a:
b
/opt/a/b:
c
/opt/a/b/c:
d
2. cd 切换目录命令
cd(英文全拼:change directory)切换目录
命令格式:cd [-选项] [目录名]
- 提示:如果不指定目录名称,则切换到当前用户的家目录~
- 常用快捷操作:
- ~ 表示为家目录(可以直接cd)
- … 表示上一级目录
- 可在两路径之间来回切换
3. 绝对路径与相对路径
绝对路径:以/(根)为起点,到达你想去的目标目录称为绝对路径
相对路径:以当前路径为起点,到达你想去的目标目录(必须保证相对路径下存在这个目录)
4. pwd 打印当前所在目录
pwd(英文全拼:print work directory)显示当前所在目录完整路径名称
- 命令格式:pwd [-选项]
# cd /opt/a/b/c/d
打印当前所在目录绝对路径
pwd
#切换到用户家目录
# cd ~
# pwd
/root
# cd /opt/a/b/c/d
# pwd
/opt/a/b/c/d
# cd
# pwd
/root
# cd /bin
# pwd
/bin
# cd /boot
# pwd
/boot
# ls
# cd /dev
# pwd
/dev
# ls
# cd /etc
# pwd
/etc
# ls
# ls /
bin boot dev etc home lib lib64 media mnt opt
proc root run sbin srv sys tmp usr var
#“.”表示当前所在目录,对于cd命令而言作用不大
# cd .
# cd /opt/a/b/c/d
# pwd
/opt/a/b/c/d
#“..”切换到当前目录的上一级目录
# cd ..
# pwd
/opt/a/b/c
# cd ..
# pwd
/opt/a/b
# cd ..
# cd ..
# pwd
/opt
# cd ..
# cd ..
# cd
# ls
# cd /opt/a/b/c/d
# pwd
/opt/a/b/c/d
"-"可在两个路径之间来回切换
# cd /etc/yum
# cd -
/opt/a/b/c/d
# pwd
/opt/a/b/c/d
# cd -
/etc/ym
# cd -
/opt/a/b/c/d
# cd -
/etc/yum
5. rmdir 删除空目录命令
rmdir(英文全拼:remove directory)删除空目录(了解即可)
- 命令格式:rmdir [-选项] 目录名
#rmdir只能删除空目录,如果目录下存在数据无法删除
rmdir /opt/a
rmdir: 删除 "/opt/a" 失败: 目录非空
ls -R /opt/a
/opt/a:
b
/opt/a/b:
c
/opt/a/b/c:
d
/opt/a/b/c/d:
rmdir /opt/a/b/c/d
ls -R /opt/a
/opt/a:
b
/opt/a/b:
c
/opt/a/b/c:
rmdir /opt/a/b/c
ls -R /opt/a/b
/opt/a/b:
rmdir /opt/a/b
ls -R /opt/a
/opt/a:
rmdir /opt/a
ls /opt
rh student xx
rmdir /opt/
rmdir: 删除 "/opt/" 失败: 目录非空
6. touch 创建文件命令
touch 命令用于创建新的空白文件
- 命令格式:touch [-选项] 文件名
#在当前路径创建空文件
touch hello
#在当前路径同时创建多个文件
touch t1 t2 t3 t4
#在指定路径同时创建多个文件
touch /opt/test1 /opt/test2 /opt/test3
#如果存在同名目录时,无法创建
mkdir test
mkdir: 无法创建目录"test": 文件已存在
#如果存在同名文件时,touch命令没有提示,但原有文件不会被覆盖
touch t1
#对于目录而言,只有单个目录的时候,“/”可有可无
ls /opt/
rh student test1 test2 test3 xx
ls /opt
rh student test1 test2 test3 xx
#对于目录而言,查看目录下的内容时,必须要有“/”,如果查看的是目录本
身,可有可无!
ls /opt
ls /opt/xx
#对于文件而言,后边绝对不能有“/”
ls /opt/test1
/opt/test1
ls /opt/test1/
ls: 无法访问/opt/test1/: 不是目录
7. cp 复制命令
cp(英文全拼:copy file)用于复制文件或目录,cp命令在复制时也可修改目录或文件名字
- 命令格式:cp [-选项] 源文件 目标目录
- 常用选项:
- -p或-a #保留源文件属性不变拷贝(如:修改时间、归属关系、权限)
- -r #复制目录(包含该目录下所有的子目录和文件)
- 使用. 配合cp命令执行复制(.永远表示当前路径)
#复制当前目录文件到/opt目录(相对路径方式复制)
cp t1 /opt/
#复制文件到/opt目录(绝对路径方式复制)
cp /root/t2 /opt
#同时复制多个文件
cp t3 t4 /opt/
#创建目录
mkdir abc
#使用-r对目录执行复制
cp -r abc /opt
#同时复制多个目录
mkdir abc1 abc2 abc3
cp -r abc1 abc2 abc3 /opt
#复制hello文件到/opt并改名为hello.txt
cp hello /opt/hello.txt
#复制xxxx目录到/opt并改名xxoo
mkdir xxxx
cp -r xxxx /opt/xxoo
#使用“.”配合cp命令执行复制
cd /etc/sysconfig/network-scripts/
cp /root/t1 .
#操持属性不变复制文件
cp -p anaconda-ks.cfg /opt
cp:是否覆盖"/opt/anaconda-ks.cfg"? y
#对比以上两个文件的详细属性信息(最后一次修改时间)
ls -l anaconda-ks.cfg
-rw-------. 1 root root 1800 3月 13 17:34 anaconda-ks.cfg
#这两个操作代表什么意思?
cp -r test /opt/public #拷贝并改名
cp -r test /opt/public #拷贝到该目录下
8. mv 移动命令
mv(英文全拼:move file)用于移动文件或目录到其他位置,也可用于修改目录或文件名
- 命令格式:mv [-选项] 源文件… 目标路径
- 使用. 配合mv命令使用
#移动当前路径hello文件到/mnt目录
mv hello /mnt
#同时移动多个文件
mv t1 t2 t3 t4 /mnt
#移动/opt目录下文件到/mnt
mv /opt/test1 /opt/test2 /opt/test3 /mnt/
#移动目录
mv student1 /mnt
#移动文件并改名
mv hello.txt /media/hello
#移动目录并改名
mv test /media/testxx
9. cat 查看文件内容命令
cat (英文全拼:concatenate)命令用于查看文本文件内容
- 命令格式:cat [选项] 文件名
- 常用选项
- -n #查看文件时以行号的形式显示文件内容
#查看文件内容
cat /etc/hosts
#查看网卡文件内容,网卡配置文件
cat /etc/sysconfig/network-scripts/ifcfg-ens32
#查看当前系统用户基本信息文件内容
cat /etc/passwd
#查看当前系统主机名配置文件内容
cat /etc/hostname
#查看当前系统版本信息文件内容
cat /etc/centos-release
#查看当前系统开机自动挂载配置文件内容
cat /etc/fstab
#查看系统组基本信息文件内容
cat /etc/group
#查看存放DNS配置文件信息
cat /etc/resolv.conf
#使用“-n”以行号形式显示文件内容
cat -n /etc/passwd
cat -n /etc/hostname
cat -n /etc/fstab
cat -n /etc/group
cat -n /etc/services
10. less命令
less 常用于查看内容量较大的文件,可以分页显示文件内容
- 命令格式:less [-选项] 文件
- 常用选项:-N #以行号形式显示文件内容
使用技巧 :
- 键盘上下键逐行查看
- f 向下翻一页
- b 向上翻一页
- /字符串 搜索指定字符串(n从上向下定位,N从下向上定位)
- G 直接跳转到文件最后一行
- gg 直接跳转到文件行首
- #查看当前系统主机名配置文件内容
- :1000 精准的定位到某一行(每次定位需要从第一行开始,否则会
- 从当前行数开始进行定位
- q 退出
11. head与tail命令
head命令:用来显示文件开头部分内容,默认显示文件开头 10 行内容
-
命令格式:head [选项] 文件
-
常用操作:
- <行数> #指定显示的行数
head /etc/passwd
head /etc/fstab
head /etc/group
head /etc/hostname
head /etc/hosts
head /etc/sysconfig/network-scripts/ifcfg-ens32
#指定显示文件前多少行内容
head -5 /etc/passwd
head -6 /etc/passwd
head -15 /etc/passwd
head -20 /etc/passwd
tail命令:用来显示文件末尾部分内容,默认显示文件末尾 10 行内容
- 命令格式:tail [选项] 参数
- 常用操作:
-
- <行数> 显示指定的行数
- 常用选项:
- -f #动态显示
tail /etc/passwd
#使用“-n”指定显示文件末尾多少行内容
tail -5 /etc/passwd
tail -5 /etc/sysconfig/network-scripts/ifcfg-ens32
#动态查看文件内容
touch t1
tail -f t1
#另开一个终端向文件写入内容
echo 123 > t1
12. rm删除命令
rm(英文全拼:remove)命令用于删除文件或者目录。
- 命令格式:rm [-选项…] 目录或文件…
- 常用选项
- -f 强制删除
- -r 删除目录
- *特殊字符:系统常用符号,匹配所有!
rm /opt/hello.txt
rm:是否删除普通空文件 "/opt/hello.txt"?y
#同时删除目录下指定文件
[root@localhost ~]# rm /opt/t1 /opt/t2 /opt/t3 /opt/t4
rm:是否删除普通空文件 "/opt/t1"?y
rm:是否删除普通空文件 "/opt/t2"?y
rm:是否删除普通空文件 "/opt/t3"?y
rm:是否删除普通空文件 "/opt/t4"?y
#使用“-f”强制删除文件(无需确认,直接删除)
rm -f /mnt/hello
#同时强制删除多个文件
rm -f /mnt/t1 /mnt/t2 /mnt/t3 /mnt/t4
#删除目录
rm -r /opt/abc
rm:是否删除目录 "/opt/abc"?y
#同时删除多个目录
rm -r /opt/abc1 /opt/abc2 /opt/abc3
rm:是否删除目录 "/opt/abc1"?y
rm:是否删除目录 "/opt/abc2"?y
rm:是否删除目录 "/opt/abc3"?y
#同时强制删除多个目录
rm -rf /opt/home /opt/student /opt/xx /opt/xxoo
#rm命令在删除目录时,包含改目录及目录下所有数据全部删除
rm -rf /opt/
#使用“*”通配任意所有字符,删除/mnt目录下所有数据
rm -rf /mnt/*
13. 软连接与硬连接
Linux中的链接文件类似于windows中的快捷方式
软链接特点:可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
软链接命令格式:ln -s 源文件路径 目标路径
注意:创建链接文件时一定要写绝对路径,哪怕是在当前路径下,也要写绝对路径
touch hello.soft
#创建软连接(必须要绝对路径创建)
ln -s /root/hello.soft /opt#查看连接文件详细属性
ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -
> /root/hello.soft
#提示:链接文件的权限最终取决于源文件的权限
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Especially_Allen/article/details/139699376
硬链接特点:硬连接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件仍然可用(类似与对文件做了一个备份)
- 硬链接命令格式:ln 源文件路径 目标路径
#创建文件,并创建硬连接
[root@localhost ~]# touch hello.hard
[root@localhost ~]# ln /root/hello.hard /opt/
[root@localhost ~]# ls /opt
hello.hard hello.soft test1
#向硬连接的源文件写入内容
root@localhost ~]# echo 123 > /root/hello.hard
#查看源文件内容
[root@localhost ~]# cat /root/hello.hard
123
#查看链接文件内容,以同步更新
[root@localhost ~]# cat /opt/hello.hard
123
#向链接文件写入内容,查看源文件以同步更新
[root@localhost ~]# echo xx >> /opt/hello.hard
#擦看源文件,以同步更新
[root@localhost ~]# cat /root/hello.hard
123
xx
#硬连接文件的特点可以保持文件属性不发生改变
[root@localhost ~]# ls -l /root/hello.hard
-rw-r--r--. 2 root root 7 3月 21 14:55 /root/hello.hard
[root@localhost ~]# ls -l /opt/hello.hard
-rw-r--r--. 2 root root 7 3月 21 14:55 /opt/hello.hard
#并且硬连接文件的i节点号相同
[root@localhost ~]# ls -i /root/hello.hard
33711090 /root/hello.hard
[root@localhost ~]# ls -i /opt/hello.hard
33711090 /opt/hello.hard
#硬连接不允许对目录进行连接
root@localhost ~]# ln /root/test1 /opt
ln: "/root/test1": 不允许将硬链接指向目录
#硬连接源文件删除后,链接文件仍然可用
[root@localhost ~]# rm -f /root/hello.hard
[root@localhost ~]# cat /opt/hello.hard
123
xx
#向硬连接文件写入内容
[root@localhost ~]# echo abc >> /opt/hello.hard
[root@localhost ~]# cat /opt/hello.hard
123
xx
abc
#硬连接不允许跨分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom
[root@localhost ~]# ln /root/hello.soft /boot
ln: 无法创建硬链接"/boot/hello.soft" => "/root/hello.soft":
无效的跨设备连接
第三章:系统常用管理命令
1. --help 命令帮助手册
–help命令长选项:用于查看系统中命令的帮助信息,包括使用方法、选项等…
- 命令格式:命令 --help
#查看命令帮助手册(命令自带)
cat --help
ls --help
2. man 获取命令帮助手册
man 工具用于查看系统命令的帮助信息,包括使用方法、选项、使用例子等…,对比–help ,man 输出的信息更加详细
- 命令格式:man [-选项] 命令
- 常用快捷操作
- 向下键向下移一行
- 向上键向上移一行
- f 向下翻一页
- b 向上翻一页
- /关键字 #搜索关键字,配合n(向下查询)、N(向上查询)
- q 退出
man ls
man cat
man touch
man mkdir
第四章:Linux执行命令
1. vi/vim文本编辑器
Vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性
安装vim工具:yum -y install vim
vi/vim 共分为三种模式:命令模式、输入模式、底线命令模式(末行模式)
1 )vim 文件名 便进入了命令模式
2 )按键盘a/i进入输入模式
3 )按ESC退出输入模式(回到命令模式)
4 )按英文:(冒号)切换到底线命令模式,wq保存并退出
提示:若文件不存在,则新创建文件并编辑,若文件以存在,则打开文
件并编辑
命令模式下常用的指令:
- a 切换到输入模式,当前光标向后移动一个位置
- i 切换到输入模式,当前光标不会移动位置
- o 切换到输入模式,在当前光标所在的行下,另起一个新行
- x 在命令模式下删除当前光标所在的单个字符
- C 删除当前光标及光标后所有内容并进入输入模式
- u 恢复上一次修改内容,一次恢复一个操作,可多次恢复,直到恢复本次操作初始状态为止
- ctrl +r 恢复到本次操作的前一个步骤
- $ 将光标移动至行尾
- 0 (零) 将光标移动至行首
- dd 删除一整行内容,配合数字可删除指定范围内的行
- yy 复制当前行,配合数字可以同时复制多行
- p 粘贴在当前的光标下一行
- r 替换字符,一次只能替换一个字符,可以替换多次
底线命令模式常用的指令:
- :w 保存
- :q 退出
- :wq 保存并退出
- :x 保存并退出
- ZZ 保存并退出(无需切换到底线命令模式)
- :q! 退出不保存
- :wq! 强制保存并退出,适用于只读文件(没有写权限,且只有root可以这样操作)
- :set nu 以行号形式显示文件内容
- :set nonu 取消行号显示
- :行号 快速跳转到指定行
- :%s 替换文件内容,g替换全文,默认只替换每一行匹配到的第一个关键字(数字s 指定替换的行)
- G 快速跳转到文件的最后一行
- gg 快速跳转到文件的行首/关键词 搜索指定的字符,n从上向下快速定位关键字,N从下向上快速定位关键字
- :nohl 取消高亮显示
2. history 管理命令历史
history命令用于显示历史记录和执行过的命令,登录系统时会读取.bash_history历史文件中记录下的命令,当退出时,会自动保存到历史命令文件,该命令单独使用时,仅显示历史命令。历史命令默认只能存储 1000 条,可以通过/etc/profile文件修改。
- 命令格式:history [-选项] [参数]
- 常用选项:
- -a 追加本次新执行的命令至历史命令文件中
- -d 删除历史命令中指定的命令
- -c 清空历史命令列表
- 快捷操作:
- !历史命令的编号 #调用命令历史
- ! 历史命令名称 #调用历史命令中最近执行的命令
查看历史命令
# history
查看记录历史命令文件
# cat .bash_history
将历史命令同步至历史命令配置文件中
# history -a
删除历史命令中655条命令历史
# history -d 655
# history -d 637
清空缓存中所有历史命令
# history -c
删除历史命令配置文件(该文件删除后系统会再次自动创建)
# rm -rf .bash_history
快速调用历史命令中第N条
# !3
调用历史命令中以cat开头的命令(就近原则)
# !cat
重复执行上一条命令
# !!
历史命令默认只能记录1000条,可以通过/etc/profile文件修改
# vim /etc/profile
...
46 HISTSIZE=100
3. date日期时间管理
- date命令用于显示或设置系统日期与时间
- 命令格式:date [+格式符] #查看系统日期时间
- 命令格式:date [-选项] #设置日期时间
- 常用选项:-s 设置日期时间
- 格式符:
- +%Y 年份
- +%B 月份
- +%d 日
- +%H 时
- +%M 分
- +%S 秒
- +%F 年-月-日
- +%X 时:分:秒
显示系统日期与时间
# date
提示:CST表示时区(亚洲上海)
只显示年分
# date +%Y
只显示月份
# date +%B
只显示几号
# date +%d
只显示小时
# date +%H
只显示分钟
# date +%M
只显示秒
# date +%S
显示年月日
# date +%F
显示时分秒
# date +%X
显示年月日时分秒
# date +%F%X
可以自定义分隔符“-”
# date +%F-%X
# date +%F:%X
修改系统年月日
# date -s 2020-03-28
修改系统时分秒
# date -s 17:16:00
修改年月日时分秒
# date -s '2021-03-28 17:17:00'
2021年 03月 28日 星期日 17:17:00 CST
#解释:
''单引号:引用整体,屏蔽特殊符号的功能
""双引号:引用整体,不会屏蔽特殊符号的功能
cal显示日历
# cal
三月 2021
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
显示指定的全年月份
# cal 2021
#修改系统时区(注意大写的字母,严格区分大小写)
timedatectl set-timezone Asia/Shanghai
4. wc统计命令
wc 用于统计文件的字节数、行数,并将统计的结果输出到屏幕
- 命令格式:wc [-选项] 文件名
- 常用选项:
- -l 统计行数
# wc /etc/passwd
43 87 2259 /etc/passwd
行数 单词 字节 文件名统计文件字节数
# wc -c /etc/passwd
2259 /etc/passwd统计文件行数
# wc -l /etc/passwd
43 /etc/passwd# wc -l /etc/fstab
11 /etc/fstab
5. 管道符
管道符 | 将命令的输出结果交给另外一条命令作为参数继续处理
查看/etc/passwd文件前6-10行内容,其余数据不要显示
# cat -n /etc/passwd|head|tail -5
# ifconfig ens32 |head -2
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu
1500
inet 192.168.0.40 netmask 255.255.255.0
broadcast 192.168.0.255
6. grep文件内容过滤
grep用于查找文件中符合条件的字符串,并把匹配到的字符串的行打印出来
- 命令格式:grep [-选项] “查找条件” 目标文件
- 常用选项:
- -n #以行号形式输出
- -i #忽略字符串大小写
- -v #排除匹配的内容
- ^ 常用的特殊符号,在grep中可用来匹配以什么开头的关键字
- $ 常用的特殊符号,在grep中可用来匹配以什么结尾的关键字
- ^$ 在grep中可用来匹配空行
过滤包含root关键字的行
# grep root /etc/passwd
以行号形式过滤包含root关键字的行
# grep -n root /etc/passwd
忽略大小写过滤
# grep -ni user /etc/passwd
排除包含#号的行
# grep -n -v '^#' /etc/fstab
过滤以root开头的行
# grep ^root /etc/passwd
过滤以root结尾的行
# grep -n 'root$' /etc/passwd
# grep -n 'bash$' /etc/passwd
通过grep过滤一个文件中有效的配置
# egrep -nv "#|^$" /etc/login.defs
7. 重定向操作
将前面命令的输出结果,写入到其他的文本文件中
重定向的表示符号:
- > 覆盖重定向,只收集正确的命令结果
- >> 追加重定向输出,只收集正确的命令结果
- << 输入重定向,需要从命令行中获取内容,将内容写入到文件中
- 2> 只收集错误的输出结果(覆盖)
- 2>> 只收集错误的输出结果(追加)
- &> 正确错误都收集(覆盖)
- &>> 正确错误都收集(追加)
将命令的输出结果以覆盖的方式重定向到文件中,(>附带创建文件功能)
ping -c2 www.baidu.com > up.txt
ping -c2 www.dhjgdhjg.com > up.txt
重定向输入(>覆盖)以EOF开始,以EOF结束,中间写入内容
# cat > xxxx.txt <<EOF
hello
Linux
EOF
重定向输入(需要配合重定向输出一起使用)
# cat >> xxxx.txt <<EOF
> 你好
> EOF
“>”只收集正确的输出结果,不收集错误的输出结果
# ls xxooooxx > /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录
“2>”只收集错误的输出结果,不收集正确的输出结果
# ls xxooooxx 2> /opt/xx.txt
# cat /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录
“2>”以覆盖的方式将输出结果重定向到文件中
# cat /etc/abc 2> /opt/ens32.bak
# cat /opt/ens32.bak
cat: /etc/abc: 没有那个文件或目录
“2>>”以追加的方式将输出结果重定向到文件中
# ls /etc/abcd 2>> /opt/ens32.bak
# cat /opt/ens32.bak
cat: /etc/abc: 没有那个文件或目录
ls: 无法访问/etc/abcd: 没有那个文件或目录
“&>”以覆盖的方式将正确输出与错误输出重定向到文件中
# lscat &> /opt/abc.txt
# cat /opt/abc.txt
# ls /etc/passwd &> /opt/pass.bak
# cat /opt/pass.bak
# free -h &> /opt/pass.bak
# cat /opt/pass.bak
“&>”以追加的方式将正确输出与错误输出重定向到文件中
# ifconfig ens32 | head -2 &>> /opt/pass.bak
# cat /opt/pass.bak
以覆盖方式将正确输出与错误输出重定向到不同文件中
# ll -d /root/ bcd >a.txt 2>b.txt
# cat a.txt
dr-xr-x---. 24 root root 4096 3月 28 18:07 /root/
# cat b.txt
ls: 无法访问bcd: 没有那个文件或目录
8. echo命令
echo命令用于输出指定的字符串和变量
- 命令格式:echo [-选项] [参数]
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bi
n# echo 你好 > hello
第五章、Linux文件类型和根目录结构
1.Linux文件类型
- 文件: - 开头
- 目录: d 开头
- 链接文件: l 开头
- 硬件设备文件:b 开头
- 字符设备文件:c 开头
- 管道设备文件:p 开头
- 套接字: s 开头
2. Linux系统目录介绍
- /(根):系统所有数据都存放在根目录下
- /bin:存放用户使用的系统管理命令
- /boot:存放Linux系统内核及引导系统程序
- /dev:存放硬件设备的目录,如硬盘、光驱设备、驱动程序等等 ( 记住 )
- /etc:存放服务的配置文件,用户信息文件 ( 记住 )
- /root:超级管理员的家目录( 记住 )
- /home:普通用户的家目录( 记住 )
- /lib:存放系统中的程序运行所需要的共享库及内核模块文件( 类似像windows的C++库)
- /opt:用户自己安装的软件可以放在这个目录(用户自定义软件安装路径)
- /srv:程序启动之后需要访问的数据目录
- /tmp:普通用户可以存放一些不重要的文件,一些程序运行的过程中产生一些临文件也会存放在这个目录
- /var:存放系统执行过程中经常变化的文件,如随时都在变化的日志文件就存放/var/log/下 ( 记住 )
- /mnt、/media :光盘和镜像等预设的挂载点( 记住 )
- /proc:Linux伪文件系统,该目录下的数据存在于内存当中,不占用磁盘空间
- /lib64 :存放共享的模块文件(系统中一些应用程序在运行的时候自动调用的)
- /run :程序或服务启动后,存放PID的目录
- /sys:存放被建立在内存中的虚拟文件系统
-
/usr:操作系统软件资源所放置的目录
/usr/bin:与/bin目录相同,存放用户可以使用的命令程序
/usr/lib:与/lib目录相同,存放系统中的程序运行所需要的共享库及内核模块
/usr/etc:用于存放安装软件时使用的配置文件
/usr/games:与游戏相关的数据放置处
/usr/include:c/c++等程序语言的档头(header)与包含档(include)放置处
/usr/lib64:与/lib64目录相同,存放函式库
/usr/libexec:不经常被使用的执行程序或脚本会放置在此目录中
/usr/local: 额外安装的软件存放目录,与/opt目录一样 ( 记住 )
/usr/sbin:该目录与/sbin目录相同,存放用户可执行的二进制程序文件
/usr/share: 放置只读架构的杂项数据文件
/usr/src:一般软件源代码建议存放该目录下、