Bootstrap

Linux--学习笔记

第一章、简单使用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.查看系统信息相关命令

  • 在终端窗口上输入命令,命令的格式: 主命令 参数 操作对象
查看当前 linux 的发行版信息:
[root@server ~] # cat /etc/redhat-release
Red Hat Enterprise Linux release 9 .1 (Plow)
# Plow RHEL9 的代号

查看内核版本 :

[root@server ~] # uname -r
5 .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 设置日期时间
  • 格式符:
  1. +%Y 年份
  2. +%B 月份
  3. +%d 日
  4. +%H 时
  5. +%M 分
  6. +%S 秒
  7. +%F 年-月-日
  8. +%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:一般软件源代码建议存放该目录下、

;