记住linux命令这么居然简单

二.Linux基础

8.命令格式

8.1 命令格式:

主命令 选项 参数(操作对象)

8.2 命令分类

  • 内置命令:shell程序自带的命令
  • 外部命令:有独立的可执行程序文件,文件名即命令名

8.3 选项

  • 概念:指定命令的运行特性,指明要运行命令中的哪一个代码功能

  • 短选项:例如-l , -d 如果同意命令同时使用多个短选项,可数多合并,

  • 长选项:例如–help

8.4 参数

  • 概念:命令的作用对象,即命令对什么生效
  • 有些选项可以带参数,有些选项可以不带参数
  • 有些命令可同时带多个参数,多个参数之间以空白字符分隔

8.5 查看命令帮助

8.5.1 查看bash内部命令帮助
[root@192 ~]# help cd
8.5.2 命令–help
  • [] :表示的是可选
  • …: 表示的可以存在多个参数
  • |表示是可选的
  • <>:必填
  • {}:表示作为一个整体存在的
[root@192 ~]#cat --help
cat [OPTION]... [FILE]... 表明cat后面可以加上多个可选的选项以及多个可选的文件参数
8.5.3 所有用户可用man查看说明文档
[root@192 ~]# man help
8.5.4 使用说明文档的按键
按键作用
空格键,PaGe down先上一页
b,PaGeUP先下一页
home转到首页
end转到首尾
/从上至下搜索关键字如“/cat”
?从下至上搜索关键字如“?cat”
n定位到下一个搜索到的关键字
N定位到上一个搜索到的关键字
q退出帮助文档

8.5.5 帮助文档的信息如下

结构名称代表意义
NAME命令的名称
SYNOPSIS参数的大致使用方法
DESCRIPTION介绍说明
EXAMPLES演示(附带简单说明)
OVERVIEW概述
ENVIRONMENT环境变量
FILES用到的文件
SEE ALSO相关的资料
HISTORY维护历史与联系方式
8.5.6 info page

info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。但是与man page不同的 是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写, 并且在各个页面中 还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。

不过你要查询的目标数据的说明文件必须要以info的格式来写成才能够使用info的特殊功能(例如超链 接)。 而这个支持info命令的文件默认是放置在/usr/share/info/这个目录当中的。

[root@192 ~]# info info
快捷键作用
上箭头向上移动一行
下箭头向下移动一行
PgUp向上翻一页
PgDn向下翻一页
Tab在有*符号的节点进行切换
回车进入有*符号的子页面,查看详细帮助信息
u进入上一层信息
n进入下一小节信息
p回到上一小节信息
s或/在info page中使用关键字搜索
?查看帮助信息
q退出

9.date命令

9.1 date命令语法格式

data命令用于显示或设置系统的时间与日期,语法格式为:date[OPTION]…[+FORMAT]

用户只需要在date命令后输入以+开头的参数,就可以按照指定的格式输出系统时间或日期。

9.2 date命令中的参数

参数作用
%Y完整年份(2022)
%m月份(1-12)
%d本月中的第几天
%H小时(00–23)
%M分钟(00–59)
%j今年中的第几天(从01-01开始计算)

9.3 date的使用

[root@192 ~]# date
Sun Jul 31 04:40:49 CST 2022

9.4 今年的第几天

[root@192 ~]# date "+%j"
212

9.5 按照年月日时分秒显示

  • 第一种
[root@192 ~]# date "+%Y-%m-%d %H:%m:%S"
2022-07-31 04:07:50
  • 第二种
[root@192 ~]# date +'%F %T'
2022-07-31 04:45:48

9.6 date修改格式 月日时分年【.秒】 秒可选

[root@192 ~]# date 073104502022
Sun Jul 31 04:50:00 CST 2022

9.7 date修改格式 年月日时分秒

root@192 ~]# date -s "20220731 4:52:50"
Sun Jul 31 04:52:50 CST 2022

10. timedatectl命令

10.1 语法格式

timedatectl命令用于设置系统的时间,英文全称为:“time date control",语法格式为:timedatectl[OPTIONS…] COMMAND …

10.2 参数列表

参数作用
statuc显示状态信息
list-timezones列出已知时区
set-timezone设置生效时区
set-time设置系统时间

10.3 查看系统时间与时区

[root@192 ~]# timedatectl status
               Local time: Sun 2022-07-31 04:58:58 CST
           Universal time: Sat 2022-07-30 20:58:58 UTC
                 RTC time: Sat 2022-07-30 20:59:08
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

10.4 手动修改时区 为上海

[root@192 ~]# timedatectl set-timezone Asia/Shanghai

10.5 修改系统日期

[root@192 ~]# timedatectl set-time 2022-07-31

10.6 修改系统时间

[root@192 ~]# timedatectl set-time 5:03

11. 查看目录下的文件

11.1 参数列表

选项功能
-l以长格式显示文件和目录的详细信息,ls命令默认只显示名称的短格式
-d显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息
-c按文件的修改时间排序显示
-h显示出目录和文件的大小,默认单位是字节,与-l选项 配合使用
-R以递归的方式显示指定目录及其子目录中的所有内容
-a显示所有文件,包括名称以”.“开头的隐藏目录和隐藏文件
-A与-a相同,区别是不显示".“和表示父目录的”…"
-i显示文件索引点号。一个索引节点代表一个文件,每个文件都有一个编号,称为索引点号inode
-s按照文件大小排序

12. Linux文件类型和根目录结构

在这里插入图片描述

12.1 Linux文件类型

使用ls-l 查看第一个字符文件类型说明
-普通文件类似于windows的记事本
d目录文件类似于windows文件夹
c字符设备文件串行端口设备,顺序读写,键盘
b块设备文件可供存储的接口设备,随机读写,硬盘
p管道文件用于进程间的通信
s套接字文件网络通信,监听客户端,客户端通过套接字数据通信
l软连接或符号链接
硬链接

12.2 文件类型案例

[root@192 ~]# ll /usr/bin/ls
-rwxr-xr-x. 1 root root 143224 Jul 10  2021 /usr/bin/ls

[root@192 ~]# ll -d /home
drwxr-xr-x. 3 root root 4096 Jul 27 11:43 /home

[root@192 ~]# ll /dev/tty
crw-rw-rw-. 1 root tty 5, 0 Jul 27 11:46 /dev/tty

[root@192 ~]# ll /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 Jul 27 11:46 /dev/sr0

[root@192 ~]# ll /dev/nvme0n1
brw-rw----. 1 root disk 259, 0 Jul 27 11:46 /dev/nvme0n1

[root@192 ~]# ll //usr/bin/yum
lrwxrwxrwx. 1 root root 5 Sep 13  2021 //usr/bin/yum -> dnf-3

12.3 文件类型介绍

文件名描述
/根目录,其他所有目录都是其子目录
/boot存放系统启动时所需要的文件,这些文件若损害,会导致系统无法启动
/root超级用户的个人目录,普通用户没有权限访问
/home存放一般用户的个人目录
/binBinary的缩写,存放普通用户可执行的程序或命令
/sbin和/bin类似,只用root用户可以使用
/lib是库(library) 英文缩写,存放系统的各种库文件
/lib64存放系统本身需要用到64为程序的共享函数库
/usr一般用户程序安装所在的目录,用于安装各种 应用程序
/opt该目录通常给第三方应用程序使用
/etc存放系统管理是所需要的各种配置文件和子目录
/var通常各种系统日志文件放在这里
/run保存自系统启动以来描述系统的文件
/devdev是设备(device)的英文缩写,包含所有的设备文件
/mnt和/media可以临时将别的文件系统挂载这个目录下,为其他的文件系统提供安装点
/tmp存放临时文件,三十天回收
/srvsrv是服务(server)的缩写,服务启动之后所需要访问的数据目录
/sys将内核的一些信息映射文件,以供应用程序所用
/proc可以在这个目录下获取系统信息,这些信息是在内存中由系统自己产生的

13. 从命令行管理文件

13.1文件命名规则

  • 不能使用/根目录 来当文件名
  • 文件名不能超过255字符
  • 区分大小写
  • 目录也是文件,同一路径不能存在相同名字

13.2 创建目录

语法为:mkdir [-p] 【/路径/】目录名

  • -p 可以快速创建目录结果中指定的每个目录,对于存在的目录不会覆盖
  • -v 显示创建目录的过程

13.3.统计目录及文件的空间占用情况

du语法格式为:【选项】【目录名】

选项功能
-a统计磁盘占用时包括所有的文件,而不仅仅统计目录
-s只统计每个文件所占用空间总的大小,而不是统计每个子目录,文件的大小
-h以K.M.G为单位显示磁盘使用情况,以提高信息的可读性

13.4 删除目录文件

语法格式:rm -r [-f] 目录文件名

-r 递归删除 目录及其所有文件

-f 不需要确认 强制执行yes

13.5 创建普通文件,三个时间的含义

语法格式:touch [OPTION]… FILE…

1.如果文件已经存在,更新文件的三个时间,stat可以查看文件的详细信息

[root@192 ~]# stat /etc/hostname
  File: /etc/hostname
  Size: 22        	Blocks: 8          IO Block: 4096   regular file
Device: 10301h/66305d	Inode: 949361      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-07-30 19:43:02.634011009 +0800  
Modify: 2022-07-27 11:48:00.513470620 +0800
Change: 2022-07-27 11:48:00.513470620 +0800
 Birth: 2022-07-27 11:43:26.718122830 +0800

**atime,**即access time 查看一下文件内容(cat),文件的atime时间会更新
mtime,即modify time 是在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间。
**ctime,**即change time 元素据【文件的属性,大小,文件名等】被改变,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。

[root@192 ~]# touch /etc/hostname
[root@192 ~]# date
Sun Jul 31 07:54:00 CST 2022
[root@192 ~]# stat /etc/hostname
  File: /etc/hostname
  Size: 22        	Blocks: 8          IO Block: 4096   regular file
Device: 10301h/66305d	Inode: 949361      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-07-31 07:53:56.264077320 +0800
Modify: 2022-07-31 07:53:56.264077320 +0800
Change: 2022-07-31 07:53:56.264077320 +0800
 Birth: 2022-07-27 11:43:26.718122830 +0800
[root@192 ~]# hostnamectl set-hostname server
[root@192 ~]# cat /etc/hostname
server
[root@192 ~]# stat /etc/hostname
  File: /etc/hostname
  Size: 7         	Blocks: 8          IO Block: 4096   regular file
Device: 10301h/66305d	Inode: 917509      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-07-31 07:54:24.634077800 +0800
Modify: 2022-07-31 07:54:19.207077708 +0800
Change: 2022-07-31 07:54:19.207077708 +0800
 Birth: 2022-07-31 07:54:19.207077708 +0800

13.6.如果文件不存在,则创建该文件

创建多个普通文件:

方法1:touch 文件名1 文件名2 文件名3

方法2: touch {文件名1,文件名2,文件名3}

方法3: touch abc{1,2,3}

13.7 删除普通文件

格式:rm [-f] 文件名

14. 数据流和重定向

14.1 数据流 代码很重要

  • 标准输入:代码为0
  • 标准输出:代码为1
  • 标准错误输出:代码2

14.2 重定向操作符

  • 输出重定向操作符:> ,>>
  • 输入重定向操作符:<,<<
使用形式功能
命令 1 >文件or命令 >文件标准输出不显示在屏幕,以覆盖的方式写入到指定的文件中,文件不存在就创建
命令 2>文件命令执行错误不显示在屏幕,以覆盖的方式写入到指定文件,文件不存在就创建
命令 2 >/dev/null命令执行错误不显示在屏幕,写入到空设备文件中,一段时间就会将错误信息丢掉
命令 & >文件 or命令 >&文件命令执行正确和不正确都不显示在屏幕,以覆盖的方式写入到指定的文件中,文件不存在就创建
命令 >> 文件将命令执行正确以追加方式写入指定文件,不覆盖原文件内容,文件不存在就创建
命令 < 文件使用命令从指定的文件中读取数据作为输入
命令 << 文件在命令行读取数据作为 输入,知道遇到指定的结束标识符

14.3 输出重定向案例

  • 标准输出重定向:1> or >, 1>> 或 >>
  • 标准错误输出重定向:2 >, 2 >>
14.3.1 案例1:输出重定向(覆盖)1和> 之间没有空格
[root@localhost ~]# date 1> date.txt

14.3.2 案例2:输出重定向(追加)
[root@localhost ~]# date >>date.txt
14.3.3 案例3:错误输出重定向
[root@localhost ~]# ls /home/  /aaaaaaaa >list.txt
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录

14.3.4 案例4 :正确和错误输入到不同位置
//正确结果重定向到list.txt
//将错误结果重定向到error.txt中
[root@localhost ~]# ls /home/ /aaaaaa/>list.txt 2>error.txt

[root@localhost ~]# cat error.txt
ls: cannot access '/aaaaaa/': No such file or directory

[root@localhost ~]# cat list.txt 
/home/:
wc
14.3.5 案例5:正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaa &>list.txt

查看 
[root@localhost ~]# cat list.txt
ls: cannot access '/aaaaaaa': No such file or directory
/home/:
wc

14.3.6 案例6:正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaa >list.txt 2>&1

[root@localhost ~]# cat list.txt 
ls: cannot access '/aaaaaaa': No such file or directory
/home/:
wc

14.3.7 重定向到空设备 /dev/null 将产生的错误丢到null中

//将产生的错误 丢到null中
[root@localhost ~]# ls /home/ /aaaaaaaa &>list.txt 2>/dev/null
[root@localhost ~]# cat list.txt 
/home/:
wc
//将产生的错误 丢到null中
[root@localhost ~]# ls /home/ /aaaaaaaa &>/dev/null
[root@localhost ~]# cat list.txt 
/home/:
wc

14.4 输入重定向的案例

标准的输入重定向:< 或0< 0<<或<<

14.4.1案例1:从文件读取作为cat命令的输入
[root@localhost ~]# echo test > file
[root@localhost ~]# cat < file
test
14.4.1案例2:标准输入重定向 << 并不是代表追加,指定结束符
[root@localhost ~]# cat > file3 <<end
> aa bb cc
> end
[root@localhost ~]# cat file3
aa bb cc

14.5 拓展案例

14.5.1案例1:mysql表结构导入
[root@localhost ~]# mysql -uroot -p123456 < bbs.sql
14.5.2案例2:使用输入重定向写邮件(不懂)
[root@localhost ~]# mail -s "ssss" alice #没有改变输入的方向,
默认键盘
111
222
333
^D
[root@localhost ~]# su - alice
[alice@localhost ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/alice": 1 message 1 new
\>N 1 root@localhost.local Mon Oct 29 14:09 18/657 "ssss"
&
[root@localhost ~]# mail -s "test01" alice < /etc/hosts #输入重定向,来自于文件

14.5.3案例3:(不懂)
[root@localhost ~]# dd if=/dev/zero of=/file1.txt bs=1M count=2
[root@localhost ~]# dd </dev/zero >/file2.txt bs=1M count=2
14.5.4案例4:at(不懂)
[root@localhost ~]# at now +5 min
at> useradd yang99
at> <EOT>
job 1 at 2015-06-09 11:57
[root@localhost ~]# vim at.txt
useradd yang100
useradd yang102
[root@localhost ~]# at now +2 min < at.txt
job 2 at 2015-06-09 11:55

14.6 拓展:使用文件描述符重定向的复杂用法

使用文件描述符的重定向都使用了&符号:

使用意义
cmd >&n把输出文件送到描述符n
cmd m>&n把输出到文件符m的信息重定向到文件描述符n
cmd >&-关闭标准输出
cmd <&n输入来自文件描述符n
cmd m<&nm来自文件描述符n
cmd <&-关闭标准输入
cmd <&n-移动输入文件描述符n而非复制它
cmd >&n-移动输出文件描述符 n而非复制它
14.6.1 示例 2>&1: 将stderr 重定向到标准输出
[root@localhost ~]# 2>&1
[root@localhost ~]# cat 1
ls: cannot access '/aaaaaaa': No such file or directory

14.7 将标准输出重定向到文件

14.7.1 echo命令

  • echo命令常用于在终端设备上输出字符串或变量提取后的值
  • 语法格式:echo [字符串] [$变量]
  • 执行 echo 字符串 或者 echo $变量 $是取变量实际值

14.7.2 把指定字符串“bingbing”输出到终端屏幕上的命令

[root@localhost ~]# echo bingbing
bingbing
14.7.3 提取变量SHELL的值,输出到屏幕上
[root@localhost ~]# echo $SHELL
/bin/bash

14.7.4 bash shell提示符
[root@localhost ~]# echo $PS1
[\u@\h \W]\$

14.7.5 PS1常用参数含义

参数含义
\d代表日期,格式为 Mon Aug 1
\H完整的主机名称
\h仅取主机的第一个名字
\t显示时间为24小时格式 HH:MM:SS
\T显示时间为12小时格式
\A显示时间为24小时格式: HH:MM
\u当前用户的账号名称
\vBASH的版本信息
\w完整的工作目录
\W利用basename取得工作目录名称,所以指挥列出最后一个目录
\#下达的第几个命令
\$提示字符,如果是root就 # 如果是普通用户就$
14.7.6 PS1修改主机名案例
root@localhost ~]# PS1="[\u@ \t \w]"
[root@ 11:13:45 ~]

14.7.7 将标准输出重定向到文件
[root@ 11:13:45 ~]echo test > /root/test/file
-bash: /root/test/file: No such file or directory
[root@ 11:15:54 ~]echo test2 >> /root/test/file
-bash: /root/test/file: No such file or directory

14.8 tee命令读取数据输出到文件

14.8.1管道符

用于两个命令或多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入

14.8.2 tee文件

读取标准输入的数据,将其内容输出到文件的同时输出到屏幕(把输出保存到文件中,又想在屏幕上看到内容)

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件

14.8.3 tee文件语法
tee   [-ai][--help][--version][文件...]
参数作用
-a 或者-append附加到现有文件的后面,而非覆盖他
-ih或者–ignore-interrupts忽略中断信号
–help在线帮助
14.8.4 tee的使用
[root@master test]#tee file
[root@ 11:53:08 ~]cat /etc/group | tee /root/file
14.8.5 如何确保tee命令追加信息文件中
[root@ 12:01:22 ~]tee -a file
ddd
ddd
14.8.6 tee写入多个文件
[root@ 12:01:34 ~]tee -a file1 file2 file3

15.作业1

1、#创建目录
在/mnt下创建boot和sysroot目 t#cd /mnt在/mnt/boot下创建grub目录
在/mnt/sysroot下创建proc,sys,bin,sbin,lib,usr,var,etc,dev,home,root,tmp
在/mnt/sysroot/usr下创建bin,sbin,lib
在/mnt/sysroot/lib下创建modules在/mnt/sysroot/var下创建run,log,lock在/mnt/sysroot/etc下创建init.d

mkdir -p /mnt/{boot/grub,sysroot/{proc,sys,bin,sbin,lib/moudules,usr/{bin,sbin,lib},var/{run,log,lock},etc/init.d,home,root,tmp}}
[root@ 12:26:49 /tmp]tree

用tree查看

2.如何一次性在/test目录创建以abc表示的100个文件,例如abc1,abc2,abc3,.abc100

[root@ 12:28:38 /tmp]rm -rf abc{1,2,3} /test

16. 作业2

1.手动调整当前主机时间(时区和时间更改)

[root@192 ~]# timedatectl set-timezone Asia/Shanghai 

[root@192 ~]# timedatectl set-time 2022-07-31

[root@192 ~]# timedatectl set-time 8:18:50

2.查看系统时间按照年月日 时分秒 格式显示并将结果写入time文件

[root@192 ~]# date +'%F %T' > /time
[root@192 ~]# cat /time
2022-07-31 08:23:03

3.查看主机/etc/下是否存在group文件,是什么类型文件

[root@192 ~]# ll /etc/group
-rw-r--r--. 1 root root 978 Jul 27 11:43 /etc/group

4.查看/etc/sysconfig目录文件的属性

[root@192 ~]# ll -d /etc/sysconfig
drwxr-xr-x. 5 root root 4096 Jul 27 11:43 /etc/sysconfig

5.在root用户的家目录下创建file文件,在/pub创建该文件的软连接文件newfile,在/test创建硬链接文件file.lnk

[root@192 ~]# ln -s /root/file /pub/newfile
[root@192 ~]# mkdir /test
[root@192 ~]# ln /root/file   /test/file.lnk

6.在文件中编写一下内容:

Good good study,day day up …

//第一种
[root@192 ~]# vim aaa.txt
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
//第二种
[root@192 ~]# echo "Good good study,day day up....." >> aaa.txt
[root@192 ~]# cat aaa.txt

//第三种
[root@192 ~]# tee << end >> aaa.txt
> Good good study,day day up....
> end

//第四种
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
Good good study,day day up.....
Good good study,day day up....

//第五种
[root@192 ~]# cat << EOF >> aaa.txt
>Good good study,day day up.....
>Good good study,day day up....
>EOF

ll /etc/group
-rw-r–r–. 1 root root 978 Jul 27 11:43 /etc/group


4.查看/etc/sysconfig目录文件的属性

[root@192 ~]# ll -d /etc/sysconfig
drwxr-xr-x. 5 root root 4096 Jul 27 11:43 /etc/sysconfig


5.在root用户的家目录下创建file文件,在/pub创建该文件的软连接文件newfile,在/test创建硬链接文件file.lnk

```vbscript
[root@192 ~]# ln -s /root/file /pub/newfile
[root@192 ~]# mkdir /test
[root@192 ~]# ln /root/file   /test/file.lnk

6.在文件中编写一下内容:

Good good study,day day up …

//第一种
[root@192 ~]# vim aaa.txt
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
//第二种
[root@192 ~]# echo "Good good study,day day up....." >> aaa.txt
[root@192 ~]# cat aaa.txt

//第三种
[root@192 ~]# tee << end >> aaa.txt
> Good good study,day day up....
> end

//第四种
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
Good good study,day day up.....
Good good study,day day up....

//第五种
[root@192 ~]# cat << EOF >> aaa.txt
>Good good study,day day up.....
>Good good study,day day up....
>EOF
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值