Linux基础命令

目录

一、Linux命令

1.Linux基础知识

2.shell概念

程序(补充):

3.Linux命令分类

4.编辑Linux命令行(扩展)

5.命令帮助

6.目录操作

6.1查看切换显示统计目录

6.1.1.pwd(print work directory)

6.1.2.cd

6.1.3.相对与绝对路径

6.1.4.ls

6.1.5.通配符

6.1.6.alias

6.1.7.du(disk usage  磁盘使用空间)

6.1.8.创建目录mkdir make directories

6.1.9.touch

6.2.0.硬连接与软连接文件

6.2.1.cp 复制

6.2.2.移动  改名  mv

6.2.3.删除文件

6.2.4.find(重要)和locate

6.2.5.which

6.2.6.硬件信息及其他系统信息

6.2.7.rename

6.2.8.file

6.2.9.cat

6.3.0.tac

6.3.1.rev

 6.3.2.more、less

6.3.3.head

6.3.4.tail

 6.3.5.tr

6.3.6.cut

6.3.7.wc

 6.3.8.正则表达式

6.3.9.grep

6.4.0.paste

6.4.1.sort

6.4.2.去重uniq

6.4.3.split


一、Linux命令

1.Linux基础知识

root   #表示用户
localhost #主机名
~   #家目录
#   #管理员用户
$   #普通用户
root #root的家目录  
opt #opt目录

root@localhost ~]# 
[zhangsan@localhost root]$    普通用户
[zhangsan@localhost root]$ hostname
localhost.localdomain
[zhangsan@localhost opt]$ 


#关机命令:
1、halt   				#立刻关机
2、poweroff  			#立刻关机
3、shutdown -h now       #立刻关机(root用户使用)
4、shutdown -h 10        #10分钟后自动关机

#重启:
reboot
init6
shutdown -r now


#修改语言
修改LANG变量实现中文语言提示
[root@localhost ~]# LANG=zh_CN.UTF-8
[root@localhost ~]# echo $LANG 
zh_CN.UTF-8
[root@localhost ~]# LANG=en_US.UTF-8
[root@localhost ~]# echo $LANG 
en_US.UTF-8

#修改颜色
[root@localhost ~]#vim /root/.bashrc
PS1='\[\e[1;34m\][\u@\h \W]\$\[\e[0m\]'

[root@localhost ~]#source  /root/.bashrc


#修改时间
date -s "2022-09-15 12:00"

data

2.shell概念

是一类程序的总称,将人类使用的高级语言翻译成二进制语言

Linux系统中运行的一种特殊程序

在用户和内核之间充当“翻译官”

用户登录Linux系统时,自动加载一个shell程序

bash是Linux系统中默认使用的shell程序,每打开一个交互界面必须加载一个shell程序

shell类型

/bin/sh    没有   echo    外部

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh

程序(补充):

①是静态的    ②执行特定任务的一串代码

linux当中命令的本质就是一个个程序,没有安装该程序是无法使用

3.Linux命令分类

内部命令与外部命令的区别

 内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令也称为内建 (Built-in) 指令Linux系统中能够完成特定功能的脚本文件或二进制程序
属于shell的一部分属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行

Linux命令行的格式:

命令字 空格  [选项] 空格 [参数]

 

bash 集成了很多程序  内部命令

系统安装后:还需要安装的程序就是外部命令

所有的内部命令就在内存中

外部命令存储在硬盘上

内部命令优先于外部命令

我输入一个命令,系统判断是内部命令还是外部命令,如果是内部命令直接执行,如果是外部命令先去规划好的路径中寻找文件,找到文件直接运行,找不到报错
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin(5个中只要 找到一个就不会接着找了)

help命令可以查看内部命令

[root@localhost opt]# help 
GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)
这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表.
输入 `help 名称' 以得到有关函数`名称'的更多信息.
使用 `info bash' 来获得关于 shell 的更多一般性信息
使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息.

名称旁边的星号 (*) 意味着该命令被禁用.

 job_spec [&]                    history [-c] [-d 偏移量] >
 (( 表达式 ))                 if 命令; then 命令; [ el>
 . 文件名 [参数]            jobs [-lnprs] [任务声明 >
 :                               kill [-s 信号声明 | -n 
 [ 参数... ]                   let 参数 [参数 ...]
 [[ 表达式 ]]                 local [option] 名称[=值] >
 alias [-p] [名称[=值] ... >  logout [n]
 bg [任务声明 ...]           mapfile [-n 计数] [-O 起
 bind [-lpvsPVS] [-m 键映射>  popd [-n] [+N | -N]
 break [n]                       printf [-v var] 格式 [参
 builtin [shell 内嵌 [参数>  pushd [-n] [+N | -N | 目录>
 caller [表达式]              pwd [-LP]
 case 词 in [模式 [| 模式>  read [-ers] [-a 数组] [-d >
 cd [-L|[-P [-e]]] [dir]         readarray [-n 计数] [-O 賾
 command [-pVv] 命令 [参数>  readonly [-aAf] [name[=value>
 compgen [-abcdefgjksuv] [-o 缠 return [n]
 complete [-abcdefgjksuv] [-pr>  select NAME [in 词语 ... ;>
 compopt [-o|+o 选项] [-DE] >  set [-abefhkmnptuvxBCHP] [-o>
 continue [n]                    shift [n]
 coproc [名称] 命令 [重嬾  shopt [-pqsu] [-o] [选项厾
 declare [-aAfFgilrtux] [-p] [>  source 文件名 [参数]
 dirs [-clpv] [+N] [-N]          suspend [-f]
 disown [-h] [-ar] [任务声传 test [表达式]
 echo [-neE] [参数 ...]        time [-p] 管道
 enable [-a] [-dnps] [-f 文乾  times
 eval [参数 ...]               trap [-lp] [[参数] 信号
 exec [-cl] [-a 名称] [命乾  真
 exit [n]                        type [-afptP] 名称 [名称>
 export [-fn] [名称[=值] ..>  typeset [-aAfFgilrtux] [-p] >
 伪                             ulimit [-SHacdefilmnpqrstuvx>
 fc [-e 编辑器名] [-lnr] [>  umask [-p] [-S] [模式]
 fg [任务声明]               unalias [-a] 名称 [名称 >
 for 名称 [in 词语 ... ] ;>  unset [-f] [-v] [名称 ...]>
 for (( 表达式1; 表达式2>  until 命令; do 命令; don>
 function 名称 { 命令 ; } >  variables - 一些 shell 变>
 getopts 选项字符串 名祾  wait [编号]
 hash [-lr] [-p 路径名] [-d>  while 命令; do 命令; don>
 help [-dms] [模式 ...]        { 命令 ; }

可以使用 type 命令来区分内外部命令

[root@localhost /]# type cd         
cd 是 shell 内嵌                       //内嵌代表内部命令
[root@test1 /]# type -a ls
ls 是 `ls --color=auto' 的别名        //别名代表外部命令        
ls 是 /usr/bin/ls                    //外部命令会有程序路径
      
[root@localhost /]# whereis ls       //whereis 可以查找命令具体的位置所在
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

[root@localhost ~]# type -a echo 
echo 是 shell 内嵌
echo 是 /usr/bin/echo

外部命令存放于 echo $PATH  一个一个找,找到为止,找不到就报无命令
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
[root@localhost ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]# useradd wu
[root@localhost ~]# type useradd 
useradd 已被哈希 (/usr/sbin/useradd)
[root@localhost ~]# hash                  //或者使用hash
hash 缓存
使用过一次  外部命令   我就会将这个外部命令  缓存在hash
外部命令需要取找他的路径才能执行,  直接在缓存 调用 加快了速度
内部 外部   hash 的优先级
内部  hash  外部

命中	命令
   1	/usr/bin/dd                       //前面数字代表用过几次
   2	/usr/sbin/useradd
   1	/usr/bin/whoami
   3	/usr/bin/ls
[root@localhost ~]#hash -d dd              //清楚dd命令缓存 -r全清
[root@localhost ~]#hash -r
[root@localhost ~]#hash
hash: 哈希表为空
#清除所有缓存
[root@localhost ~]# hash
命中	命令
   2	/usr/sbin/useradd
   1	/usr/bin/whoami
   3	/usr/bin/ls

[root@localhost ~]# which ping      //外部命令的磁盘路径 -a 所有
/usr/bin/[root@localhost ~]# which help    //内部命令找不到
/usr/bin/which: no help in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost ~]# whereis echo            //相关文档的帮助的命令
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz

开启或关闭内部命令

关闭:enable -n 内部命令

开启:enable 内部命令

[root@localhost opt]# enable -n cd
[root@localhost opt]# cd /mnt/
[root@localhost opt]#

hash(扩展)

缓存空间

hash -d 加缓存里的命令 单独删除

hash -r 删除所有

将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后 ,才可以继续使用。

[root@localhost mnt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root:/root/bin
[root@localhost mnt]# mv /usr/bin/ls /usr/local//bin
[root@localhost mnt]# ls
-bash: /usr/bin/ls: 没有那个文件或目录
[root@localhost mnt]# hash 
命中	命令
   1	/usr/bin/mv
   2	/usr/bin/ls
   6	/usr/bin/cd
[root@localhost mnt]# hash -d ls
[root@localhost mnt]# ls
1.5.txt  f15..txt   f1.txt  f3.txt  f5.txt
15..txt  f15...txt  f2.txt  f4.txt
[root@localhost mnt]# hash
命中	命令
   1	/usr/bin/mv
   1	/usr/local/bin/ls
   6	/usr/bin/cd

4.编辑Linux命令行(扩展)

快捷键功能
Tab 键自动补齐(两次可以显示所有选项)
反斜杠“\”强制换行或转义
Ctrl+e 或 end 键光标移到最后
Ctrl+U清空至行首不包括当前光标处的 字符
Ctrl+K清空至行尾包括当前光标处的字符
Ctrl+a光标移到最前
Ctrl+w从当前光标删除到开头
ALT+d从当前光标删除末尾
Ctrl+l清屏
Ctrl+c取消本次命令编辑
Ctrl+s/Ctrl+q锁屏/解锁
向上下箭头回看执行过的命令
反斜杠举例
cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DSYSCONFIDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

5.命令帮助

5.1.help

格式说明(扩展)

  • [ ]表示可选项

  • CAPS或<>表示可变化的数据

  • ...表示一个列表可加多个一个或多个

  • x|y|z 表示或的意思

  • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后

只能查看内部命令的 使用方法 tar -zxvf tar zxfv -区分前后 解压 压缩

[root@localhost ~]# help echo
#内部命令查看帮助
echo: echo [-neE] [参数 ...]
    将参数写到标准输出。
    
    在标准输出上显示 ARG 参数后跟一个换行。
    
    选项:
      -n	不要追加换行
      -e	启用下列反斜杠转义的解释
      -E	显式地抑制对于反斜杠转义的解释
    
    `echo' 对下列反斜杠字符进行转义:
      \a	警告(响铃)
      \b	退格
      \c	抑制更多的输出
      \e	转义字符
      \f	格式提供
      \n	换行
      \r	回车
      \t	横向制表符
      \v	纵向制表符
      \\	反斜杠
      \0nnn	以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
    	0到3个八进制数字
      \xHH	以 HH (十六进制)为值的八比特字符。HH可以是
    	一个或两个十六进制数字
    
    退出状态:
    返回成功除非有写错误发生。
# -n 不换行显示
[root@localhost ~]# echo -n " 1 2 3"   
 1 2 3[root@localhost ~]# 
[root@localhost ~]# echo -n "123456";echo "123456"
123456123456
#  \b  删除前一个字符
[root@localhost ~]# echo -e " 1 2\b 3"      
 1  3
#\n换行
[root@localhost ~]# echo -e " 1\n 2\n 3"
 1
 2
 3
#tab键叫制表符 
[root@localhost ~]# echo -e " 1\t 2\t 3"    tab键叫制表符
 1	 2	 3

help---查看外部命令帮助

[root@localhost ~]# ls --help
[root@localhost dev]# useradd --help

5.2 .man

man分九个章节默认打开第一章节(menu菜单 manual手册)

9个章节

[root@localhost ~]# whatis ls
ls (1)               - 列目录内容
    1代表第一章手册
ls (1p)              - list directory contents
	1p 代表开发程序使用

[root@localhost ~]# whatis passwd 
#可以查看命令的章节
passwd (5)           - (未知的主题)
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user's authentication tokens
[root@localhost ~]# man 5 passwd      
#查看第五章内容,第5章一般是配置文件格式详细解释
[root@localhost ~]# man 7 ascii
[root@localhost ~]# man 7 UTF-8
[root@localhost ~]# mandb
#生成man数据库,man命令无效时
正在删除 /usr/share/man 里的旧数据库条目...
mandb: 警告:/usr/share/man/man8/fsck.fat.8.manpage-fix.gz:忽略错误的文件名
正在处理 /usr/share/man 下的手册页...
正在删除 /usr/share/man/hu 里的旧数据库条目...
正在删除 /usr/share/man/pl 里的旧数据库条目...



[root@localhost ~]# man man

 该清单是一组用冒号分隔的欲查找的手册清单。此选项将覆盖                MANSECT               环境变量。
              有些指令或程序可能有一个以上的主题,它们位于不同的区段中。因此,要查看较后的区 段,你可以在此指定  man
              查找区段的顺序。具体区段划分如下所示:
              区段1:用户指令
              区段2:系统调用
              区段3:程序库调用
              区段4:设备
              区段5:文件格式     shadow passwd fstab
              区段6:游戏
              区段7:杂项
              区段8:系统指令
              区段9:内核内部指令
              区段n:Tcl或Tk指令

5.3.info

info也可以查看相关的帮助信息

[root@localhost dev]# info ls

6.目录操作

6.1查看切换显示统计目录
6.1.1.pwd(print work directory

用于查看当前所在路径

[root@localhost ~]# pwd       //显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月   6 20:57 /bin -> usr/bin
[root@localhost bin]# pwd -P
/usr/bin
#-P 显示真实路径
快捷方式   不是文件真正的路径

[root@localhost opt]#ln -s /opt/ky18/   /mnt/k18
#设置软连接
[root@localhost opt]#cd /mnt/k18/
#切换到软连接
[root@localhost k18]#ls
#
[root@localhost k18]#pwd
#显示的是当前路径
/mnt/k18
[root@localhost k18]#pwd -P
#文件的真实路径
/opt/ky18

6.1.2.cd

cd 目标位置 change directory

[root@localhost ~]# cd /etc/
[root@localhost etc]# 
[root@localhost ~]# cd  
[root@localhost ~]# 
[root@localhost ~]# cd  ~
[root@localhost ~]# 



家目录:存放用户个性化配置文件的地方
命令效果
cd或cd ~若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd -回到前一次目录
一个点号“.”开头(自己)表示以当前的工作目录作为起点(已点开头的是)
两个点号“..”开头(上一级)表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头表示以指定用户的宿主目录(家目录)作为起点
"."开头文件表示隐藏文件
~ky18 (有个用户叫ky18 家目录为起点)表示以指定用户的宿主目录作为起点
6.1.3.相对与绝对路径

相对路径:不以根目录开始的路径
如 ls ./passwd
绝对路径:以根目录开始的路径
如 ls /etc/test

凡是/前面有任何字符的都是相对路径

相对路径表现形式

文件 所在位置

[root@localhost opt]#cat passwd
#此处省略了路径
[root@localhost opt]#cat ./passwd 
#查看当前路径下的passwd文件
[root@localhost opt]#cd ./ky18/
#切换到当前目录下的 ky18 文件夹
[root@localhost ky18]#
[root@localhost ky18]#cd ../../
#切换到上两层的目录
[root@localhost /]#



-      rw-r--r--. 1 root root 474 6月  27 11:33 dm.sh


-   普通类型
l   连接
b   磁盘 
c   字符文件
d   目录
s   套接字                 
p   管道



程序核程序之间通信


mkdir /data/nginx/html -pv

cd /data/nginx/html/
echo haishi > index.html

systemctl   start     nginx

systemctl   restart   nginx 
6.1.4.ls

生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)

ls [选项] [文件或目录… ]

  • -l 已长格式显示文件和目录列表 ll=ls -l

  • -a 显示全部包括隐藏文件

  • -A 显示全部文件或隐藏文件,但不包括 . 和..

  • -d 仅列出目录本身,而不是列出目录内的文件数据

  • -h 友好显示文件大小(human,人性化)

  • -R 递归显示该目录及该目录的子目录下的所有内容

  • -t 已时间顺序显示

  • -r 倒序显示

  • --color 显示颜色

  • -S 以文件容量大小排序

当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时
会根据文件的具体类型给文件名配色
[root@localhost mnt]# ll
#长格式
总用量 0
drwxr-xr-x 3 root root 16 8月  21 10:39 aa
第一个字段 d   代表文件类型比如 d是目录 - 是普通文件
第2-9(rwxr-xr-x)字母表示该文件的权限
root 文件所有者
root 文件所属组
16 文件大小
21 10:39 文件的最近使用时间
aa 文件或目录名称


[root@test1 ~]# ls -a 
#显示所有 包括隐藏文件
.                .cache     .ICEauthority         .viminfo.tmp  下载
..               .config    initial-setup-ks.cfg  .Xauthority   音乐
anaconda-ks.cfg  .cshrc     .lesshst              公共          桌面
.bash_history    .dbus      .local                模板
.bash_logout     .esd_auth  mysql.sh              视频
.bash_profile    hhh.cgg    .tcshrc               图片
.bashrc          .history   .viminfo              文档
################################################
[root@test1 ~]# ls -A 
#显示所有 不包括. ..的隐藏文件
anaconda-ks.cfg  .config    .ICEauthority         .viminfo      图片
.bash_history    .cshrc     initial-setup-ks.cfg  .viminfo.tmp  文档
.bash_logout     .dbus      .lesshst              .Xauthority   下载
.bash_profile    .esd_auth  .local                公共          音乐
.bashrc          hhh.cgg    mysql.sh              模板          桌面
.cache           .history   .tcshrc               视频
########################################################
[root@test1 ~]# ls -d   
#只显示本目录
.


[root@test1 ~]# ls -d /etc
######################################################
[root@test1 ~]# ls -lh   //加单位k友好显示
总用量 16K
-rw-------. 1 root root 1.6K 6月  18 23:13 anaconda-ks.cfg
-rw-r--r--. 1 root root    4 6月  28 13:47 hhh.cgg
-rw-r--r--. 1 root root 1.6K 6月  18 23:15 initial-setup-ks.cfg
-rwxr-xr-x. 1 root root 2.3K 6月  28 00:46 mysql.sh
drwxr-xr-x. 2 root root    6 6月  18 23:38 公共
drwxr-xr-x. 2 root root    6 6月  18 23:38 模板
drwxr-xr-x. 2 root root    6 6月  18 23:38 视频
drwxr-xr-x. 2 root root    6 6月  18 23:38 图片
drwxr-xr-x. 2 root root    6 6月  18 23:38 文档
drwxr-xr-x. 2 root root    6 6月  18 23:38 下载
drwxr-xr-x. 2 root root    6 6月  18 23:38 音乐
drwxr-xr-x. 2 root root    6 6月  18 23:38 桌面
######################################################
[root@test1 opt]# ls -R     //递归显示
.:
123456.txt  123.txt  1.txt  2.txt  abc.txt  rh  test.txt

./rh:
aaa

./rh/aaa:

颜色表示的文件类型:

  • 黑色数据文件 普通文件

  • 绿色 可执行文件

  • 黄色 块设备文件硬件设备(硬盘)

  • 红色 压缩包

  • 蓝色 文件夹

  • 天蓝色 连接文件(快捷方式)

[root@localhost ~]# vim /etc/DIR_COLORS
#颜色在这里显示

文件类型

  1. - 普通文件

  2. d 目录文件directory

  3. l 符号链接文件link

  4. b 块设备block 比如直接读1块 /dev 4k (512*8(扇区)=4096字节=4k)

  5. c 字符设备character 一个字符一个字符读取 /dev/zero (/dev/null)

  6. p 管道文件pipe 两个软件联系 A-管道文件-B A 写 B 读 单向的

  7. s 套接字文件socket 可以双向的

第一个字符文件类型
-普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d目录,类似 Windows 系统中的文件夹。
b块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
c字符设备文件
s套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l链接文件,类似 Windows 系统中的快捷方式。

补充:file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓

[root@localhost data]# ls /run/
autofs.fifo-misc  
#管道
gssproxy.sock
#套接字


7 大文件类型   
    - 普通文件   文本文档    黑色
d  目录文件   文件夹        蓝色
c   字符文件                     黄色
b   块文件      硬盘设备     黄色
l    链接文件   快捷方式     青色
s   套接字                          紫色
p  管道                              黄色       

6.1.5.通配符

去匹配文件名(包括文件夹)ls

符号效果
匹配一个字符 f?.txt
*匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10}1到10
{a..z}a b c ...z
{A..Z}A B C .....Z
[123]([此处括号里值代表一个字符])取其中之一有就显示没有也无所谓
[a-z]单个小写字母范围需要注意
[0-9]单个数字匹配数字范围(0123456789)
\转义符,表示原来的意思
[[:lower:]]小写字母表示 a-z
[[:upper:]]大写字母表示 A-Z
[^zhou]匹配列表中的所有字符以外的字符
[[:digit:]]任意数字,相当于0-9
[[:alpha:]]任意字母
[root@localhost data]# ls -a *
1
#不显示隐藏文件
[root@localhost data]# ls -a
.  ..  1
#显示隐藏文件
[root@localhost data]# ls *
# *不包括.开头的
ls: 无法访问*: 没有那个文件或目录

[root@localhost data]# ls .*
#包括了 .. 上层目录中的文件
.:

..:
aaa  boot  dev  home  lib64  misc  net  proc  run   sdb1  sys  usr
bin  data  etc  lib   media  mnt   opt  root  sbin  srv   tmp  var

[root@test1 opt]# touch f{a..z}.log
[root@test1 opt]# touch f{A..Z}.log
[root@test1 opt]# ls
123456.txt  fa.log      fe.log  fj.log  fo.log  ft.log  fy.log
123.txt     f{A.Z}.log  ff.log  fk.log  fp.log  fu.log  fz.log
1.txt       fb.log      fg.log  fl.log  fq.log  fv.log  rh
2.txt       fc.log      fh.log  fm.log  fr.log  fw.log  test.txt
abc.txt     fd.log      fi.log  fn.log  fs.log  fx.log
[root@test1 opt]# ls f[zhou].log  
#####四个其中的之一有就全显示      
fh.log  fo.log  fu.log  fz.log
[root@test1 opt]# ls f[x-z].log   
####显示的xXyYz 不包括Z
fx.log  fX.log  fy.log  fY.log  fz.log
[root@test1 opt]# ls f[a-c].log   
#####显示的A b B c C 不包括a
fa.log  fA.log  fb.log  fB.log  fc.log   
[root@test1 opt]# ls f{a..c}.log
#显示所有小写
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc
[root@localhost ~]# ls 1[[:lower:]]*                
#########显示小写字母
1a1.txt  1e1.txt  1i1.txt  1m1.txt  1q1.txt  1u1.txt  1y1.txt
1b1.txt  1f1.txt  1j1.txt  1n1.txt  1r1.txt  1v1.txt  1z1.txt

[root@localhost ~]# ls 1[[:upper:]]*                 
########################显示大写字母
[root@localhost ~]# ls 1[[:upper:]]*
1A1.txt  1E1.txt  1I1.txt  1M1.txt  1Q1.txt  1U1.txt  1Y1.txt

[root@localhost opt]#ls [a-zA-Z].txt
#显示 所有大小写
[root@localhost data]#ls [a-Z].txt

######[0-9]只能匹配10 以下的
[root@localhost data]# touch f{1..10}.txt
[root@localhost data]# touch f{10..20}.txt
[root@localhost data]# ll f[0-9].txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f1.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f2.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f8.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f9.txt
[root@localhost data]# ll f[0-9][0-9].txt
#两个 [0-9]可以匹配双数字
[root@localhost data]# ll f{1..20}.txt
#{10..20}可以匹配双数字

[root@localhost data]# ll f??.txt
#两个?号可以匹配
[root@localhost data]# ll f*.txt
#  *也可以
-rw-r--r--. 1 root root 0 8月  29 01:51 f10.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f11.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f12.txt

[root@localhost data]# ls /etc/.*
#显示隐藏文件也包括.. 的上层目录
#如果不想看上层目录 就要加-d 只显示当前目录
[root@localhost data]# ls /etc/.* -d
#只显示当前目录
/etc/.  /etc/..  /etc/.java  /etc/.pwd.lock  /etc/.updated
6.1.6.alias

临时修改

  • alias 命令别名=’命令‘

  • unalias 别名命令 删除别名

  • \加别名命令 (显示原始命令)

du --max-depth=1 /etc/ |sort -nr
du -d 2 /etc/ |sort -nr
a s h
[root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

#如果不加引号无法识别
[root@localhost dev]# alias myls=ls -alh
-bash: alias: -alh: 未找到

#就想使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls

#删除别名
[root@localhost dev]# unalias myvim 
[root@localhost dev]# myvim
bash: myvim: 未找到命令...


永久修改

- 在/etc/.profile会影响全部用户
- /root/.bashrc只影响当前用户

补充:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

6.1.7.du(disk usage  磁盘使用空间)

查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。

du [选项] [文件或目录… ]

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize)只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n (-d 1)最大显示到第n层
--exclude不计入统计

注意a和s无法同时使用

文件夹:

  • 文件名最长255个字节

  • 包括路径在内文件名称最长4095

  • 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。

6.1.8.创建目录mkdir make directories

mkdir -p 递归创建 没有文件夹 会自动递归创建

mkdir [选项] 目录位置及名称…

[root@localhost data]# mkdir a b c d
#创建多个文件夹
[root@localhost data]# ls
a  b  c  d
[root@localhost data]# mkdir -p aaa/bbb/cccc
# 递归创建文件夹
[root@localhost data]# ls
a  aaa  b  c  d

[root@localhost data]# tree
.
├── a
├── aaa
│   └── bbb
│       └── cccc
├── b
├── c
└── d


mkdir  -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
#一次建立多个文件
6.1.9.touch
  • touch 新文件…(可为空) 文件名 不存在就是新建空文件

  • touch 不会破坏已有文件 刷新时间

每个文件有三个时间戳:

  1. access time 访问时间,atime,读取文件内容

  2. modify time 修改时间,mtime,改变文件内容(数据)

  3. change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )

[root@localhost data]# touch  1 2 3
#创建新文件,或空的新文件
[root@localhost data]# ls
1  2  3
[root@localhost data]# echo "" > 4
#创建4的空文件
[root@localhost data]# ls
1  2  3  4 


[root@localhost bin]# stat /etc/passwd
##############查看三种时间
  文件:"/etc/passwd"
  大小:2337      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-28 22:53:51.539000016 +0800
最近更改:2021-08-27 16:48:55.881739056 +0800
最近改动:2021-08-27 16:48:55.881739056 +0800
[root@localhost bin]# touch /etc/passwd
#################刷新三种时间

[root@localhost bin]# stat /etc/passwd
  文件:"/etc/passwd"
  大小:2337      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-29 01:43:01.305128380 +0800
最近更改:2021-08-29 01:43:01.305128380 +0800
最近改动:2021-08-29 01:43:01.305128380 +0800
创建时间:-
access time    atime   最近打开文件的时间如果你不打开文件是不会刷新的
change time    ctime   属性权限改变()  
modify time    mtime   内容改变属性(大小)
6.2.0.硬连接与软连接文件

硬连接 同一个文件取不同的名或者叫多个名字(比如 苏轼 字子瞻 号东坡居士 苏二 谥号文忠 )不支持文件夹,创建一个连接数加一,多路径访问。

软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件(应该使用什么路径? 1绝对?2 相对?). /opt /mnt

ln(link)

ln [-s] 源文件或目录… 链接文件或目标位置

加s是软连接 符号连接

二者区别:

对比项硬链接软链接
本质本质是同一个文件本质不是同一个文件
inode(身份证号)相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除,新建都不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同(指向硬盘上的同一个文件)源文件的路径的长度

例子

ln -s 绝对路径的源文件 软连接位置

ls 绝对路径源文件 硬连接位置

只用软连接 不用硬连接

[root@localhost data]# mkdir  /data
[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬连接
#不能跨分区建立连接 无法对文件夹创建 
[root@localhost data]# ln /data/f1.txt  /boot/f111.txt
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。
#为什么文件夹的连接数是2?
#.也是名字..也是





当前目录  opt  . 自己   ..  /根目录

opt下有个目录 aa  
cd aa
. ..    .aa   ../opt     


a    
新建 a1

a

a1

软连接例子

删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root    6 8月  26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root   66 8月  26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月  26 11:55 passwd
会认为f1111.txt 与f1.txt在同一目录

################实际运用####################              
软件版本升级迭代 
开发出 app1.0   做软连接 app
如果有 app2.0   就把 软连接app删除 新建app2.0的软连接app

$PATH    以后自行安装软件  系统不会自行 识别    httpd mysql ls         
1将程序文件 放入$PATH 路径 usr/bin  
2做软连接   $PATH
3修改$PATH 路径










cp   /etc/passwd    /mnt/



cp  /etc/passwd   /etc/shadow     /mnt/
6.2.1.cp 复制

cp(copy)备份

  1. cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为

  2. cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹

选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认(提示有同名)
-p复制时保持源文件的权限、属主及时间标记等属性不变(保留属性)
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录(表示递归复制所有文件及子目录  复制文件夹一定要加-r)
-a完整保留所有的信息
-v可视化,显示过程
-u相当于增备,差异备份(只对文件夹起作用)

如果已有文件夹会生成子目录

[zhangsan@localhost ~]$ ll
#张三用户新建文件
总用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 8月  29 11:17 zhansan

[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有权限 包括软连接文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root     root     0 8月  29 11:06 1
-rw-rw-r--. 1 zhangsan zhangsan 0 8月  29 11:17 zhansan

[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖

[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt 
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f111.txt" 
6.2.2.移动  改名  mv

mv [选项] … 源文件或目录… 目标文件或目录 单个文件

移动 或者改名

  • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;

  • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);

  • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;

  • -v:显示文件或目录的移动过程;

批量

rename log log.bak* //所有 log文件改成 log.bak

rename 旧字符 新字符 目标文件

[root@test1 opt]# rename txt txt.bak *
#将txt改成txt.bak
[root@test1 opt]# ls
a.txt.bak  E.txt.bak  j.txt.bak  N.txt.bak  R.txt.bak  w.txt.bak
A.txt.bak  f.txt.bak  J.txt.bak  o.txt.bak  s.txt.bak  W.txt.bak
b.txt.bak  F.txt.bak  k.txt.bak  O.txt.bak  S.txt.bak  x.txt.bak
B.txt.bak  g.txt.bak  K.txt.bak  p.txt.bak  t.txt.bak  X.txt.bak
c.txt.bak  G.txt.bak  l.txt.bak  P.txt.bak  T.txt.bak  y.txt.bak
C.txt.bak  h.txt.bak  L.txt.bak  q.txt.bak  u.txt.bak  Y.txt.bak
d.txt.bak  H.txt.bak  m.txt.bak  Q.txt.bak  U.txt.bak  z.txt.bak
D.txt.bak  i.txt.bak  M.txt.bak  rh         v.txt.bak  Z.txt.bak
e.txt.bak  I.txt.bak  n.txt.bak  r.txt.bak  V.txt.bak
rename 旧字符 新字符 目标文件
[root@test1 opt]# rename txt txt.bak *.txt
#把 txt 改成 txt.bak
6.2.3.删除文件

rm [选项] 要删除的文件或目录

  • -f、强制

  • -i、交互

  • -r 递归(删除目录需要)

[root@localhost ~]# rm -rf /    #不让执行
[root@localhost ~]# echo *      #删根后查看
[root@localhost ~]# rm -rf /data/*
[root@localhost ~]# rm -rf /data/*    ##之间的区别误操作,等于删根

如何删除特殊的文件

[root@localhost ~]# touch ./-f
# -开头的文件
[root@localhost ~]# ls
[root@localhost ~]# rm -f -f
#删除不掉
[root@localhost ~]# rm -f ./-f
#需要加路径
[root@localhost ~]# touch ./-f
[root@localhost ~]# rm -- -f
rm:是否删除普通空文件 "-f"?y

shred (粉碎销毁文件)

rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安 全删除文件

shred格式: shred [OPTION]... FILE...

常见选项:

-z 最后一次覆盖添加0,以隐藏覆盖操作

-v 能够显示操作进度

-u 覆盖后截断并删除文件

-n # 指定覆盖文件内容的次数(默认值是3次)

6.2.4.find(重要)和locate

locate:查找文件速度快,但是依赖系统中的库,缺点是该库不会实时更新。使用格式:locate +需要寻找的文件名称

find 命令的特点:

  • 精确查找

  • 实时查找

  • 支持查找条件巨多

查找路径:指定具体目标路径;不指定为默认为当前目录

查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕(print)

用来查找文件名,不能查找文件具体内容。优点实时刷新,缺点查找相对于locate慢一点,因为是全部磁盘找一遍

使用格式:find  [查找范围]   [查找条件表达式]  [处理动作]  可配合通配符使用

查找范围:只能加目录,默认是当前目录

查找条件表达式:

and用-a表示:是且的意思模式是and

or用-o表示:是或的意思

常用可选项

查找类型关键字说明
按名称查找-name根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写
按文件大小查找-size根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB
按文件属主查找-user根据文件是否属于目标用户进行查找
按文件类型查找-type根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
按inode号-inum根据文件inode号查找
按权限查找-perm按文件权限查找
最大搜索目录深度-maxdepth level将你的文件已分级的形式查找
最小搜索目录深度-mindepth level同上 find /etc -maxdepth 2 -mindepth 2

[选项]     -name 按文件名查找

  -iname 按名称查找不区分大小写全部显示

 -size 按文件大小查找,除k之外其他单位都是大写,例如+1M表示大于1M,-1M表示小于1M,直接写1M表示1M左右

  -user 按所属用户名查找文件

   -type 按文件所属类型查找文件,普通文件为 f 其他6大类不变

-inum 按inode号查找文件(ls -i显示inode号)

   -maxdepth 搜索深度,最大搜索到距当前目录的第几层

 -mindepth 搜索深度,最小搜索到距当前目录的第几层

 -links 按硬链接数查找

 -uid 根据uid查找 (id命令用于查看uid=多少)

            -nouser 查找无主文件,即用户已经删除但是有属于他的文件存在

            -empty 查找空文件(常用)

            -mtime 按时间查找,例如 -mtime +7表示最佳修改时间大于7天的,-7表示小于7天的,7表示7天左右的

处理动作:

-print:打印到屏幕,默认动作

-delete:删除找到的文件

找到data目录下的1.bak文件并删除

-ls:长格式显示,显示文件8段,类型、最近修改时间等

找出data目录下2.bak并长格式显示

-ok:连接符固定使用格式 -ok {}代表find找到的所有文件 \;结束符号。缺点是每个文件都会询问是否更,需要输入y或者n

-exec:连接符固定使用格式 -exec {}代表find找到的所有文件 \;结束符号,不需要每个文件都询问,直接做动作,例如  -exec  mv {}  /etc \;  表示将find找到的文件全部移动到/etc目录下

高级find命令

请找到 var/log/ 文件夹下 30天以前大于1G 已 og 结尾的普通文件并将找到的文件移动到/opt 下

find /var/log-mtime +30 -size +1G -name '*log' -type f -exec mv{}/opt ;
6.2.5.which

which命令用来查找外部命令的对应文件路径,都在$PATH变量中,如下图。

6.2.6.硬件信息及其他系统信息

 1.查看 cpu

lscpu   命令可以查看cpu信息

cat /proc/cpuinfo   也可看查看到

[root@localhost ky15]# lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    1
座:                 2
NUMA 节点:         1
厂商 ID:           AuthenticAMD
CPU 系列:          23
型号:              96
型号名称:        AMD Ryzen 7 4800U with Radeon Graphics
步进:              1
CPU MHz:             1795.914
BogoMIPS:            3593.25
超管理器厂商:  VMware
虚拟化类型:     完全
L1d 缓存:          32K
L1i 缓存:          32K
L2 缓存:           512K
L3 缓存:           8192K
NUMA 节点0 CPU:    0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec arat overflow_recov succor


[root@localhost ky15]# cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 96
model name	: AMD Ryzen 7 4800U with Radeon Graphics
stepping	: 1
microcode	: 0x8600103
cpu MHz		: 1795.914
cache size	: 512 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec arat overflow_recov succor
bogomips	: 3593.25
TLB size	: 3072 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 96
model name	: AMD Ryzen 7 4800U with Radeon Graphics
stepping	: 1
microcode	: 0x8600103
cpu MHz		: 1795.914
cache size	: 512 KB
physical id	: 2
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec arat overflow_recov succor
bogomips	: 3593.25
TLB size	: 3072 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

2.查看内存大小

free

cat /proc/meminfo

[root@localhost ky15]# free
              total        used        free      shared  buff/cache   available
Mem:        1867048      283684     1189772        9316      393592     1381240
Swap:       4194300           0     4194300
[root@localhost ky15]# cat /proc/meminfo
MemTotal:        1867048 kB
MemFree:         1189772 kB
MemAvailable:    1381260 kB
Buffers:            2116 kB
Cached:           306144 kB
SwapCached:            0 kB
Active:           229236 kB
Inactive:         250000 kB
Active(anon):     171852 kB
Inactive(anon):     8440 kB
Active(file):      57384 kB
Inactive(file):   241560 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        4194300 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        171016 kB
Mapped:            87664 kB
Shmem:              9316 kB
Slab:              85352 kB
SReclaimable:      47308 kB
SUnreclaim:        38044 kB
KernelStack:        5744 kB
PageTables:        12680 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5127824 kB
Committed_AS:    1259164 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      180916 kB
VmallocChunk:   34359310332 kB
HardwareCorrupted:     0 kB
AnonHugePages:     45056 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       81792 kB
DirectMap2M:     2015232 kB
DirectMap1G:           0 kB

3.查看硬盘和分区情况

[root@localhost ky15]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   14G  0 part 
  ├─centos-root 253:0    0   10G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  
[root@localhost ky15]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1    5242880 sda1
   8        2   14688256 sda2
  11        0    4415488 sr0
 253        0   10485760 dm-0
 253        1    4194304 dm-1

4.查看机器架构

[root@localhost ky15]# arch
x86_64

5.查看内核版本

[root@localhost ky15]# uname -r
3.10.0-693.el7.x86_64
[root@localhost proc]#cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

6.系统时间

date查看当前系统时间

-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间

%F 完整日期格式,等价于 %Y-%m-%d

% T 时间(24小时制)(hh:mm:ss)

-s 修改系统时间

[root@localhost ~]# date -d '-1 day' +%F 
#前一天

[root@localhost ~]# date  +%F 
#当前日期 yy-mm-dd(年月日)
[root@localhost ~]# date -d '1 day ' +%F-%T
#后一天
[root@localhost mnt]# date -d "-3 day"      
#前三天
2021年 08月 18日 星期三 11:30:15 CST
[root@localhost mnt]# date -d "+3 day"  
#后三天
2021年 08月 18日 星期三 11:30:15 CST


[root@localhost mnt]# date -s "12:34:56"
6.2.7.rename

mv命令在更改文件名称时只能更改单个文件,rename则可以更改多个文件,但是条件是需要更改的文件名称和更改后的文件名称必须相同,如下图。

6.2.8.file

file命令加文件名称可以查看文件属于什么类型,如下图。

6.2.9.cat
选项效果
-n显示行号包括空行
-b跳过空白行编号
-s

将所有的连续的多个空

替换为一个空行(压缩成一个空行)

-A显示隐藏字符

默认是顺序查看,可同时查看多个文件,按查询顺序显示。

使用格式:  cat  [选项]   文件名

   -n 显示行号

 -b 显示行号不给空号编号

 -s 把连续的空行压缩

[选项] : -A 显示隐藏字符,包括回车,tab等。

6.3.0.tac

用于文件倒叙查看,如下图

6.3.1.rev

 用于文件中每行的反向显示

 6.3.2.more、less

用于在虚拟机中查看一页放不下的文件内容,less命令可以使用上下键滚动查看文件内容,more命令不可以向上查看只能向下查看。

more [选项] 文件名

基本操作

  • 空格下一行 到文末后自动退出

  • b上一行

  • enter一行一行滚动

  • 自动退出

  • q退出

less [选项] 文件名

  • 可以使用/ 查找 n向下 N向上查找

  • Page Up 向上翻页,Page Down 向下翻页

  • 其余参考more

6.3.3.head

用于查看文件内容,默认为查看前10行内容

[选项]: -n  后面加数字可以自定义查看文件的前多少行。

              -c  后面加数字可以自定义查看文件的前多少个字符。

可以显示文件或标准输入的前面行

格式:

head [选项]... [文件名]...

选项:

-c # 指定获取前#字节
-n # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前
-# 同上

head -n 具体数字 文件名 (不加具体的数字,默认开头十行)

6.3.4.tail

tail 和head 相反,查看文件或标准输入的倒数行

用于从文件最后查看内容,默认查看文件最后10行

格式:tail [选项]... [文件名]...

常用选项:

-f 跟踪显示文件fd新追加的内容,常用日志监控(实时跟踪显示文件最后内容,随着文件内容的更新会进行滚动)

-n 加数字表示查看最后多少行,+5表示从第五行开始往后,-5表示最后5行,默认是最后10行。

tail      -n      具体数字  文件名     (不加具体的数字,默认结尾十行)
tail      -f       具体数字  文件名        实时跟踪最后十行

 6.3.5.tr

基本功能转换

格式

tr [选项]... SET1 [SET2]

SET 是一组字符串,一般都可按照字面含义理解

-d 删除

-s 压缩

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

6.3.6.cut

cut 命令可以提取文本文件数据的指定列

格式

cut [选项]... [文件]...

常用选项

6.3.7.wc

默认显示文件内容顺序为,文件行数、文件单词数、文件字符数(包括回车等)   文件名

wc [选项]... 目标文件..

统计列数,wc本身就是参数 word

  • -l:统计文件的行数

  • -w:统计文件的单词个数

  • -c:统计文件的字符数

 6.3.8.正则表达式

正则表达式用于过滤文件中的字符串,与通配符的区别是通配符用于匹配文件名。

标准输出:命令执行结果正确后反馈的结果

标准输入:输入进系统的命令

错误输出:命令执行结果错误后反馈的结果

常用:    ^ :表示以...开头    ^n以n开头

               $ :表示以...结尾  n$ 以n结尾

              ^$ :表示过滤空行,以什么开头和结尾中间什么都没有

      管道符 |:只支持有标准输出的命令

     重定向 >:改变标准输出的方向,输出到文件中,输出到其他的远程连接

6.3.9.grep

grep [选项]… 查找条件 目标文件

过滤想要的文件内容或文件名

使用格式:①过滤想要的文件内容,cat   [选项]  文件名  | grep   [选项]  "想要的内容"

                  ②过滤想要的文件名称,ls     [选项]  文件名  | grep   [选项]  "想要的文件名"                   grep[选项]:

                 -v 反选

                 -o 只显示匹配字符

                 -i 忽略大小写

                 -r 递归,快速过滤但是不过滤软连接内容

                 -R 递归,快速过滤包括软连接源文件内容

                 -n 显示过滤内容在第几行

                 -w 把字符串看成单词,除了单词都不要,稍微精确一点

                 - f 对比两个文件的相同行

                -c 匹配的行数([root@localhost ky15]# grep -c root passwd 2)

基本格式

  • 要查找的字符串以双引号括起来单引号也可以

  • “^……”表示以……开头,“……$”表示以……结尾

  • “^$”表示空行

6.4.0.paste

-d 指定分隔符

合并文件

#一个文件放密码一个文件放用户名
[root@localhost ~]#cat user.txt pass.txt 
lisi
liwu
liliu
123
345
444
[root@localhost ~]#paste user.txt pass.txt 
lisi	123
liwu	345
liliu	444


[root@localhost ~]#paste -d: user.txt pass.txt 
###分隔符 用冒号隔开
lisi:123
liwu:345
liliu:444
6.4.1.sort

排序

sort [options] file(s)

把整理过的文本显示在屏幕上,不改变原始文件

r n t k (主要)

-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t 指定分隔符
-k 指定列

[root@localhost ~]#sort /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]#sort -t: -k3 /etc/passwd
#已冒号为分隔符,只排序第三列,不是已数字是已字符比较
[root@localhost ~]#sort -t: -k3 -n /etc/passwd
#正序
[root@localhost ~]#sort -t: -k3 -nr /etc/passwd
#到序
[root@localhost ~]#df |tail -n +2 |tr -s " " % |cut -d % -f5|sort -nr |head -1
8
6.4.2.去重uniq

uniq [OPTION]... [FILE]...

-c: 显示每行重复出现的次数

-d: 仅显示重复过的行

-u: 仅显示不曾重复的行

uniq常和sort 命令一起配合使用:

6.4.3.split

作用:分割文件

split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]

最常用的选项,都在这里了:
-b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
-<行数>或-l<行数>:指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
-a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值