第一章 shell是什么

date

  • date 显示时间日期

1592473153741

cal

  • cal 显示日期

1592473234036

df 和 free

  • df 系统磁盘空间使用情况
  • free 显示可用内存

1592473539578

exit

  • exit 退出终端

第二章 导航

pwd

  • pwd 查看当前工作目录

ls

  • ls 列出当前工作目录的文件文件夹
ls /home	# 显示home文件下的内容
ls ~ /usr	# 显示主目录和/usr下的日容
ls - a	# 显示所有文件,包括隐藏的内容
ls - l	# 长格式显示结果

cd

  • cd 更改当前工作目录

    • 绝对路径
    cd /home/hadoop/文档
    
    • 相对路径
    cd ..	# 退到上一级目录
    cd ./文档 # 当前在home/hadoop下 进入到文档这个文件夹
    cd 文档 # 当前在home/hadoop下 进入到文档这个文件夹
    
    cd # 更换到主目录
    

第三章 Linux系统

file

  • file 确定文件的类型

less

  • less 查看文件内容(使用文本显示)

cat

  • cat 查看文件内容(在界面显示)

ln

  • 硬链接
  • 符号链接

第四章 操作文件与目录

mkdir

  • mkdir 创建文件夹
mkdir dir1		# 创建file1文件夹
mkdir dir1 dir2 dir3		# 创建多个文件夹

cp

  • cp 复制文件和目录
cp dir1 -r dir2		# 将dir1文件内的文件和目录 全部复制到dir2
cp file1 file2		# 将file1内的内容复制到file2中

mv

  • mv 移动和重命名文件和目录
mv dir1 dir2	# 将整个dir1文件夹 全部移动到dir2内
mv file1 file2	# 将file1内容移动到file2内

rm

  • rm 删除文件和目录
rm file1	# 删除file1文件
rm -r dir1	# 删除dir1文件夹及其内部东西

ln

  • ln 创建链接

第五章 命令的使用

type

  • type 显示命令的类型
type type
type ls
type cd

which

  • which 显示可执行程序的位置
which ls
/bin/ls

help

  • help 查看帮助文档
# 一般都这样用
ls --help	# 显示命令的使用信息

whatis

  • whatis 显示命令的简要描述
whatis ls

alias

  • alias 创建自己的命令(本次打开的终端有效)
alias foo='cd /home/hadoop'		# 创建一个别名为foo的 定位到/home/hadoop的命令

第六章 重定向

标准输出重定向 >

ls -l /home/hadoop/文档 > ls-output.txt
# 这样就把/home/hadoop/文档下的内容 写到了ls-output.txt这个文件里去了
cat ls-output.txt	# 查看内容

less ls-output.txt	# 使用less查看内容

# 删除文件内的内容
> ls-output.txt

标准错误重定向 2>

ls -l /home/hadoop/asdasdasd 2> ls-error.txt

处理不想要的输出

ls -l /home/hadoop/dasdasd 2> /dev/null		# 放到/dev/null这个特殊的文件里,这也叫做位桶

标准输入重定向

cat >> file1 +内容	# 这样是在最后面添加内容,之前内容不会被覆盖掉

cat > file1 	# 这是在文件开头添加内容,这样之前的会被覆盖掉

管道

|

  • | 可以用来将输出的作为输入
ls -l /home/hadoop | less	# 这是把/home/hadoop下的内容 输出 传给less 作为输入

过滤器

  • 管道中添加过滤器可以删选一些信息

  • sort 排序显示

  • uniq 过滤掉重复信息

ls -l /home/hadoop |sort|uniq |less
  • wc 打印行数、字数、字节数
wc file		# 统计出file这个文件里的行数、字数、字节数 字数是由空格分隔开的
  • grep 打印匹配行
ls /bin /usr/bin | sort | uniq | grep zip	# 搜索出文件名中包含zip的所有文件
  • head/tail 打印文件的开头部分和结尾部分(默认是10行)
head -n 5 file1		# 列出fiel1 文件的前5行
tail -n 2 file1		# 列出file1 文件的后两行

第七章 透过shell看世界

echo

  • echo 显示一行文本
echo this is a test		# 显示为this is a test

echo *		# 显示当前工作目录下的所有文件名	效果等同 ls

echo D*		# 显示当前目录下所有以D开头的文件名

echo *s		# 显示当前目录下所有以s结尾的文件名

echo /home/*/文档		# 显示包含的所有目录 结果为:/home/hadoop/文档	/home/jiwei/文档

echo ~		# 显示当前用户的主目录

## 做计算!!!
# 注意括号!!!!
echo $((3+3))	# 9
echo $((5/2))	# 2
echo $((5%2))	# 1
	
echo $(((5**2)*3))	# 注意看好括号!! 75


## 大括号! 很有趣
echo number-{1..5}	# 结果为:number-1 number-2 number-3 number-4 number-5

echo {A..Z}		# 结果为:Z Y X  ................... A

echo a{A{1,2},B{3,4}}b		# 支持嵌套
# 可以用来创建多个有顺序的文件夹
mkdir {2018..2020}-0{1..9}	# 创建了多个以2018-01 这样的文件夹

## 双引号!!!
# 双引号不能处理“$”美元符号,“\”反斜杠,反引号。也不能处理参数扩展、算术扩展、和命令替换

echo I have $5.00	# 结果不能显示美元符号!
echo "I have $5.00"		# 结果也不能显示美元符号!
echo "I have \$5.00"	# 用反斜杠去转义字符
echo "I have \\\$5.00"	# 这个显示的结果就是I have \$5.00

echo "$(cal)"
echo $(cal)		# 这两个结果还不一样!!

第八章 高级键盘技巧

clear

  • 清屏
  • 还有一种清屏的方式是:Ctrl+L
clear	#清屏
Ctrl + L 	# 清屏并且把光标移动到左上角。

history

  • 显示历史列表的记录
history | less		# 使用通道将历史记录传到less中
history | grep /home/hadoop		# 显示所有包含/home/hadoop的历史命令

# 历史记录前面是命令所在的行号
# 使用如下可以找出某行的命令
!number		# 重复历史记录中第number行的命令
!?string	# 重复最近包含string的历史记录
! string	# 重复最近以string开头的历史记录

光标的一些操作

Ctrl + A	# 移动光标到行首
Ctrl + E	# 移动光标到行尾
Ctrl + E	# 清屏,并移动光标到坐上角
Ctrl + D	# 删除光标处的字符

剪切和粘贴

Ctrl + shift + C	# 复制
Ctrl + shift + V	# 粘贴

Ctrl + K	# 剪切从光标到行尾的文本
Ctrl + U	# 剪切从光标到行首的文本

Ctrl + Y	# 粘贴到光标位置

第九章 权限

id

  • id 显示用户身份标识

    uid:用户ID User ID gid:有效组ID Primary Group ID

1592633088581

属性文件类型
-普通文件 :-rwx------ -rw------- -rw-r—r-- -rwxr-xr-x -rw-rw----
d目录文件 : dwxrwx— drwxr-x—
l符号连接
c字符设备文件
b块设备文件
属性文件
r打开和读取文件
w写入和截取文件
x允许进入目录下

chmod

  • chmod 更改文件模式

7(rwx)、6(rw-)、5(r-x)、4(r–)、0(—)

> file1
ls -l file1
chmod 600 file1
ls -l file1

1592633755678

su

  • su 以其他用户和组ID的身份来运行shell
su -	#需要输入超级用户的密码,这时候切换到超级用户的shell,$就变成了#了,要退出当前需要输入exit 退出。

sudo

  • sudo 以另一个用户的身份来执行命令

sudo与su的区别:

​ 使用sudo命令并不需要输入超级用户的密码,只需要输入自己的密码来认证。

chown

  • chown 更改文件所有者和所属群组

    sudo chown -R hadoop ./hadoop	#把./hadoop下的所有文件的所有者给hadoop这个用户
    

还没好好看!!!

passwd

  • passwd 更改密码

    sudo passwd hadoop	# 更改hadoop用户的密码
    

第十章 进程

ps

  • ps 查看进程信息

    1592750952459

    其中TTY表示进程的控制终端,TIME表示消耗CPU的时间综合

  • 此外还可以在ps的基础上添加 x 或者aux 查看更多的进程信息。

    1592751055025

    其中?表示没有控制终端,STAT表示进程状态:R运行状态,S睡眠状态

top

  • top 动态查看进程信息,主要查看系统的最高top进程

    1592751188788

    其中top字段分别表示:当前时间;开机后系统运行多长时间了;登录的用户数;load average 负载均衡 即等待运行的进程数 小于1表示机器不忙;tasks 表示进程数和各个进程状态;cpu us表示用户进程占用,sy表示系统进程占用,ni表示友好进程占用,id表示cpu空闲,wa表示等待I/O操作;Mem表示物理RAM使用情况;Swap表示交换空间使用情况。

CTRL+C

  • xlogo 是一个x窗口系统,我们用来测试进程的开关。

  • 终端进程可以用CTRL+C去中断进程

  • 让xlogo进程在后台进行,就需要加上&

    1592751648529

    可以使用jobs去查看进程的状态

    1592751747455

    这个时候如果要终端进程,CTRL+C就不行了,需要把进程提到前台运行。

    xlogo &
    fg %1	# 进程切换到前台
    # 暂停进程!
    bg %1
    

kill

  • 对于进程也可以使用kill去杀死进程 kill + 进程号

    1592751896613

  • 杀死多个进程 使用killall

    1592751986199

pstree

  • pstree 以树状的模式输出进程列表

第十一章 环境

  • set 会显示shell变量和环境变量

printenv

  • printenv

  • 可以查看环境变量,

  • 也可以查看单个的变量

    printenv USER
    printenv HOME
    

set

  • set

    • 可以查看shell变量

    • 但是不能查看某单个变量

    • 查看单个变量还可以使用echo

      echo $HOME
      这也等同于
      printenv HOME
      

alias

  • alias

    • 可以查看别名

      1593010865177

    • 可以看到 使用的python显示python3

    • 如果要切换到python2

      alias python=python2
      

login 和 non-login shell

  • shell分为两种
    1. login shell 会话会提示输入用户名和密码
      • login shell 会启动一个或多个启动文件如:/etc/profile ~/.bash_profile ~/.bash_login ~/.profile
    2. non-login shell 典型的就是 终端会话
      • non-login shell 会启动:/etc/bash.bashrc ~/.bashrc
      • 其中~/.bashrc就是个人启动文件,在大数据中修改环境变量就是修改的这个文件
    3. 其中大多数以”.“开头的文件,意味着这些文件时被隐藏的!

文本编辑器

  • gedit

    1593012764304

  • vim

    • 在vim中输入i可以添加要输入的内容
    • esc键可以退出输入内容
    • 退出vim可以输入
      • wq 保存并退出
      • q! 强制退出不保存

1593012781678

第十二章 VI简介

vi

  • vi 就是文本编辑器和使用的vim一样 但是大多数的文本编辑器已经被vim取代

  • 进入vi

    vi
    

    1593158106617

  • 可以看一下vim界面

    1593158147063

  • 退出vi

    • :q 正常退出
    • :q! 强制退出
    • :wq 保存并退出
    • :w 保存
    • :q 退出
  • 可以只用vi创建文件,进入编辑模式

    vi foo.txt
    # 这样就在当前的路径下 创建了一个foo.txt文件 可以直接编辑
    
  • 进入插入模式

    • 按I键进入插入模式
    • 按A键在文本末尾插入
    • 插入一行使用o、O命令
      • o在当前行的下方
      • O在当前行的上方
    • 按u键取消上述操作
  • 删除文本

    • x 删除光标处的文字
    • X 删除光标前的所有文字
    • d删除整行?
    • D删除光标后的所有文字
  • 剪切、复制、粘贴文本

    • yy 复制当前行
    • 5yy 复制当前行开始的5行
    • yW 复制当前字符到下一单词的起始
    • yG 复制当前行到文件末尾
    • y20G 复制当前行到文件的第20行
    • p 粘贴
  • 合并行

    • J(大写,小写的j是移动光标)
  • 查找和替换

  • 行内搜索f+要搜索的字符 如 f5 光标直接跳转到5所在的位置 :号键重复上一次的搜索

  • 整个文件搜索 输入“/”键然后输入要搜索的字符 n重复此搜索

  • 替换:

    :%s/Line/line/g		# 将Line替换成line
    :%s/Line/line/gc	# 将Line替换成line 替换前确认
    
  • 同时打开多个文件

    # 第一种方式
    vi file1 file2 file3
    
    # 多个文件怎么切换呢?
    :n	# 切换到下一个文件
    :N	# 切换到上一个文件
    
    # 第二种方式
    :buffers	# 查看正在编辑的文件列表
    :buffer 2	# 切换到第二个文件的内容
    
  • vi内的光标(非编辑模式下,也就是需要按下esc键后)

    • 方向键即 上下左右移动光标对应的键盘按键为: l h j k
    • 数字0移至行开头
    • shift+G 移至最后一行
    • 上下翻页,CTRL+F下翻页 CTRL+B上翻页
    • number+shift+G 移至第number行

第十三章 定制提示符

没啥用

第十四章 软件包管理

  • 软件包系统的工作方式

    • 软件包文件

      由组成软件包的文件压缩而成的文件集。包括安装文件,元数据,安装脚本

    • Linux版本的中心库包含成千上万的软件包。

    • 软件包工具

      • 低级工具:执行安装、删除软件包文件等任务
      • 高级工具:进行元数据搜索及提供依赖性解决
  • 软件包版本、高级低级软件包工具

    软件包系统发行版本(部分)低级工具高级工具软件包搜索命令
    Debian类(.deb技术)Debian、Ubuntudpkgapt-getapt-get update
    Red Hat类(.rpm技术)CentOS、RedHatrpmyumyum search search_string
  • 安装软件包

    系统类型安装库中软件包安装软件包文件中软件包
    Debian系统apt-get update\apt-get install package_namedpkg --install package_file
    RedHat系统yum install package_namerpm -i package_file
  • 删除软件包

    系统类型删除软件包
    Debian系统apt-get remove package_name
    RedHat系统yum erase package_name
  • 更新软件包

    系统类型更新库中软件包更新软件包中的软件包
    Debian系统apt-get update\apt-get upgradedpkg --install package_file
    RedHat系统yum updaterpm -U package_file
  • 列出已经安装的软件包列表

    系统类型命令
    Debian系统dpkg --list
    RedHat系统rpm -qa
  • 判断软件包是否安装

    系统类型命令
    Debian系统dpkg --status package_name
    RedHat系统rpm -q package_name
  • 显示已安装软件包的相关信息

    系统类型命令
    Debian系统apt-cache show package_name
    RedHat系统yum info package_name
  • 查看某具体文件由哪个软件包安装得到的

    系统类型命令
    Debian系统dpkg --search file_name
    RedHat系统rpm -qf file_name
  • 对于压缩包格式的文件安装

    sudo tar -zxf file_name.tar.gz -C /解压目录
    

第十五章 存储介质

先不看这一章节

第十六章 网络

ping

  • ping 向网络主机发送特殊数据包

    ping www.baidu.com		# 通过ping命令可以查看网络连接是否正常
    # 想要结束ping程序 按Ctrl+C
    

traceroute

  • traceroute 跟踪网络数据包的传输路径

    traceroute www.baidu.com	
    

    1593413511218

这就表示从测试系统到www.baidu.com网站的连接需要经过30个路由器。没有加*的是提供身份信息的路由器。

netstat

  • netstat 检查网络设置及相关统计数据

  • netstat -ie 检查系统的网络接口信息

    1593413684487

    • 其实结果和ifgonfig命令是一样的!

    • 网络日常诊断关键是看UP,表示网络接口启用;inet 地址的IP地址,表示DHCP正在工作。

  • netstat -r 显示内核的网络路由表

    1593413761454

ftp

  • ftp 采用FTP(文件传输协议)传输文件;主要用来与FTP服务器进行通信。

    ftp fileserver	# 连接FTP服务器的fileserver
    ls	# 列出远程系统上的目录列表
    help	# 列出所支持的命令列表!!!
    exit/bye/quit 	# 注销登录远程服务器
    

lftp

  • lftp 更好的ftp(文件传输协议)

    • 一般都需要自行安装lftp

      sudo apt-get install lftp
      
    • 其他的和ftp差不多

wget

  • wget 非交互式网络下载工具

    • 另一个用于文件下载的命令行程序。

      wget http://linuxcommand.org/index.php
      

ssh

  • ssh 安全登录远程计算机

    • 解决1.ssh协议能验证远程主机身份是否真实,避免中间人攻击
    • 解决2.ssh将本机与远程主机之间的通信内容全部加密

    Ubuntu系统一般需要自行安装sshopen-server软件包。

    sudo apt-get install sshopen-server
    ssh localhost 	# 登录本机,每次都需要输入密码
    # 利用ssh-keygen生成密钥,加入授权就不用每次都输入密码了
    exit 	#退出刚才的localhost本机
    cd ~/.ssh
    ssh-keygen -t rsa
    cat ./id_rsa.pub >> ./authorized_keys	#加入授权
    
    ssh remote -sys	#登录远程主机remote-sys
    
  • ssh 登录本地系统的其他用户

    1593415830963

这个时候就已经进入到了hadoop2的用户系统下了

  • scp和sftp 安全传输文件

    ①远程系统下的文件到本地系统

    scp remote-sys:document.txt .
    # 从remote-sys远程系统的home目录将document.txt文件复制到本地系统
    

​ ②本地系统其他用户的文件到本地

scp hadoop2@hadoop-VirtualBox:document.txt
# 从本地其他用户的home目录将document.txt文件复制到本地当前用户工作目录
  • sftp

    相比传统的ftp具有不许套远程主机上运行FTP服务器,仅仅需要ssh服务器。

第十七章 文件搜索

locate

  • locate 较简单的方式查找文件(依据文件名)

    locate bin/zip	# 查找以zip开头的程序,由于产找的是程序文件所以,要查找的程序目录应该以bin/结尾
    
  • locate可以和其他的命令结合

    locate zip | grep bin
    

find

  • find 较为复杂的方式查找文件

    find ~	# 查找系统主目录(~)下的文件列表清单
    find ~ | wc -l		# 查找系统主目录下的文件总量	
    					# wc 有三个参数 -l表示行 还有-m表示字符个数;-c字符大小				
    
  • tese选项

    find ~ -type d | wc -l		# d 目录
    find ~ -type f | wc -l 		# f 普通文件
    find ~ -type b | wc -l 		# b 块设备文件
    find ~ -type c | wc -l 		# c 字符设备文件
    find ~ -type l | wc -l 		# l 符号连接
    
    find ~ -type f -name "*.JPG" -size +1M | wc -l		# 文件名为: 文件大小:
    # 其他的一些test项参数
    -cmin n 	# 匹配n分钟前改变状态的文件或目录; 不到n分钟用-n;超过n分钟用+n
    -cnever file	# 匹配内容获属性的修改时间比文件file更晚的文件或目录
    -ctime n	#匹配系统中n*24小时前文件状态被改变的文件或目录
    -empyt		#匹配空文件及空目录
    -mmin n 	#匹配n分钟前内容被修改的文件或目录
    -mtime n 	#匹配n*24小时前只有内容被更改的文件或目录
    -nouser 	#匹配没有有效用户的文件或目录,也是用来测试哪些属于已删除账户的文件!!!
    
  • 操作符

    -and	# 与操作
    -or		# 或操作
    -not 	# 非操作
    
  • action选项

    -delete		# 删除匹配文件
    -ls 		# 对匹配的文件执行ls操作,以标准格式输出其文件名和其他信息
    -print		# 将匹配的文件的全路径以标准形式输出
    -quit 		# 一旦匹配成功便退出
    

touch

  • touch 可以创建空文件,也可以更新文件的修改时间

    mkdir -p /home/hadoop/playground/dir-{00{1..9}, 0{10..99}, 100}		# 创建空文件夹
    touch /home/hadoop/playground/dir-{00{1..9}, 0{10..99}, 100}/file-{A..Z}	# 当文件夹内不存在file-{A..Z}时就创建空文件
    
    #然后就可以利用find去查找了
    find /home/hadoop/playground -type f -name 'file-A'		# 100个文件为'file-A'的文件路径
    find /home/hadoop/playground -type f -name 'file-A' |wc -l		# 100
    
    

stat

  • stat 加强版的ls

    touch /home/hadoop/playground/timestamp		# 创建timestamp文件
    stat /home/hadoop/palyground/timestamp		# 查看文件信息
    touch /home/hadoop/playground/timestamp		# 更新timestamp文件信息
    

文本搜索grep!

  • grep 文本搜索

    ls /usr/bin | grep zip		# 搜索/usr/bin目录下文件包含zip字符串的所有文件。
    

第十八章 归档和备份

gzip

  • gzip 文件压缩

    • gzip -d 解压缩,和gunzip一样。
    • gzip -f 强制压缩。
    • gzip -r 递归压缩包含在目录的文件。
    • gzip -t 检验压缩文件的完整性。
    • gzip -v 压缩时显示详细信息。
    gzip file 	#将file文档文件压缩
    

    1593575853322

  • gunzip 文件解压缩

    1593575941101

    gunzip file.gz 		#将上面压缩成file.gz的压缩文件解压
    
  • gzip的一些应用

    gzip file.txt
    gzip -tv file.txt.gz	# -tv是检查压缩包的完整性和信息
    gzip -d file.txt	# 利用gzip -d 去解压文件
    
    ls -l /home/hadoop | gzip > file2.txt.gz	# 将/home/hadoop目录列表压缩到file.txt.gz
    gunzip file.txt.gz	#利用gunzip解压文件
    gunzip -v file.tx
    

zcat

  • zcat 和cat命令相同,但是zcat主要用来查看压缩包内的内容。
    • 可以看出用cat去查看的话会出现乱码

1593577620871

  • zcat 和gunzip -c的效果是一样的!

    1593577764983

bzip2

  • bzip2和gzip类似,该方式具有高质量的数据压缩能力,却降低了压缩速度。
  • 文件后缀以.bz2结尾

tar

  • tar 文件归档

    # 在安装软件的时候通常下载的是压缩包格式,将压缩包解压就是安装
    sudo tar -zxf ~/下载/hadoop-3.1.3-tar.gz -C /usr/local
    
    
  • 模式描述
    c创建归档文件(压缩)
    x从归档文件提取文件(解压缩)
    f在归档文件末尾追加指定路径名
    r列出归档文件的内容
  • 将整个文件夹归档为.tar格式

    mkdir -p playground/dir-{00{1..9},0{10..99},100}
    touch playground/dir-{00{1..9},0{10..99},100}/file-{A..Z}
    
    # 归档(压缩!)
    tar cf playground.tar playground	# tar cf +压缩包的名称 +要压缩的文件夹
    
    # 查看归档文件内容
    tar tf playground.tar	
    # 查看更多详细信息
    tar tfv playground.tar
    
    # 解压!
    tar xf /home/hadoop/playground.tar	#将/home/hadoop/下的playground.tar压缩包 解压到当前的工作路径
    
    

zip

  • zip 打包压缩文件

    # 压缩
    zip -r plaryground.zip playground 	# -r递归的压缩文件
    # 解压
    unzip ../playground.zip		#解压到当前的路径
    
    unzip -l ../playground.zip		# 列出归档文件的内容,而不会提取文件。
    

第十九章 正则表达式

grep

  • grep 文本搜索

    ls /usr/bin | grep zip		# 搜索/usr/bin目录下文件包含zip字符串的所有文件。
    stat 可以查看找到的文件的详细信息。
    
    选项功能描述
    -i忽略大小写。
    -v不匹配。
    -c输出匹配项数目
    -l输出匹配项文件名而不是直接输出匹配行自身。
    -L与-l选项类似,但输出的是不包含匹配项的文件名。
    -n在每个匹配行前面加上该行在文件内的行号
    -N进行多文件搜索时,抑制文件名输出。
  • grep 的一些操作

    ls /bin > dirlist-bin.txt	# 将/bin目录下的文件列表输出到dirlist-bin.txt这个新建的文件内
    ls /usr/bin > dirlist-usr-bin.txt	# 同上
    ls /sbin > dirlist-sbin.txt
    ls /usr/sbin > dirlist-usr-sbin.txt
    ls dirlist*.txt
    
    cat dirlist-bin.txt 	# 查看dirlist-bin.txt这个文件内的内容,输出到终端界面
    cat dirlist-bin.txt | wc -l 	# 查看dirlist-bin.txt 这个文件的行数
    
    grep bzip dirlist*.txt 		# 从所有的dirlist开头的文件中搜索bzip这个元素
    grep -l bzio dirlist*.txt	# 从所有的dirlist开头的文件中搜索包含bzip的文件
    grep -L bzip dirlist*.txt 	# 从所有的dirlist开头的文件中搜索不含bzip的文件
    

元字符和文字

  • . 任意字符

    1593671000034

  • 注意和只查“zip”的区别

    1593671045253

  • -h的作用时抑制文件名的输出,也就是查询的前面有在哪个文件内找到的

    1593671216525

  • 锚:^(开头), $(末尾)

    • ^开头

    1593671291700

    • 结尾$

1593671327532

​ 以zip开头以zip结尾

1593671456998

  • 中括号[]

    • 表示[bg]匹配包含bzip或gzip的文件

    1593671612237

  • ^ 否定

    • 表示zip前不是b或g的文件

    1593671776109

  • 大写字母开头

    1593675149188

    • 上述查找大写字母只适用于grep命令,对于ls就不适用。

      ls /usr/sbin/[A-Z]*		#输出结果并不是大写开头的
      ls /usr/sbin/[[:upper:]]*	# 这样输出结果才是大写字母开头
      ls /usr/sbin/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*		# 这样是可以的但是很麻烦
      
  • 包含大写字母

    1593675205203

  • 开头包含A-Za-z0-9

    grep -h '^A-Za-z0-9' dirlist*.txt
    
  • 包含A\Z-的文件

    grep -h '-AZ' dirlist*.txt
    
  • 查看系统的语言设置

    echo $LANG
    

    1593675530917

  • 或选项|

    • 表示查找结果包含bz或gz或zip

    1593676001500

    • 区别

      grep -Eh '^(bz|gz|zip)' dirlist*.txt	#表示开头为bz或gz或者zip的文件
      greo -Eh '^bz|gz|zip' dirlist*.txt		#这就表示以bz开头包含gz或zip的文件
      
  • ?表示出现一次

  • *表示匹配某元素多次或零次

  • +表示匹配某元素多次或一次

  • {}表示以指定次数匹配某元素

正则表达式的应用

  • 用grep命令查找某文件内的内容
  • locate命令查找文件
  • find命令查找文件
  • less和vim命令搜索文本

通配符

利用通配符去查找-name “ ” 所匹配的通配符格式的文件

通配符匹配项
*匹配任意多个字符(包括0个和1个)
匹配任意一个字符(不包括0个)
[characters]匹配任意一个属于字符集中的字符
[!characters]匹配任意一个不属于字符集的字符
[[:class:]]匹配任意一个属于指定字符类中的字符
字符类匹配项
[:alnum:]匹配任意一个字母或数字
[:alpha:]匹配任意一个字母
[:digit:]匹配任意一个数字
[:lower:]匹配任意一个小写字母
[:upper:]匹配任意一个大写字母

通配符示例:

形式匹配项
g*以g开头的任一文件
b*.txt以b开头,中间任意多字符,并以.txt结尾的文件
Data???以Data开头,后面跟3个字符的文件
[abc]*以abc中任一个开头的文件
BACKUP.[0-9] [0-9] [0-9]以BACKUP开头后面紧跟3个数字的文件
[[:upper:]]*以大写字母开头的文件
[![:digit:]]*不以数字开头的文件
*[[:lower:]123]以小写字母或1、2、3中任一个结尾的文件

第二十章 文本处理

cat

  • cat 文件拼接、输出、创建文件

    • 创建文件

      cat > foo.txt	# 在当前的路径下,创建foo.txt文件 按下回车后 可以写如内容;按ctrl+D退出
      
    • 显示文件内容:

      cat foo.txt		# 显示内容(也是全部内容)
      cat -A foo.txt	# 显示全部内容
      
      cat -ns foo.txt		# -n是显示行号;-s是去除多余空白行
      					# 去除空余行后,显示行号
      

sort

  • sort对文本排序

    sort foo2.txt 	# 创建foo2.txt 
    c
    b
    a
    # 按ctrl+D结束输入
    cat foo2.txt	# 查看foo2.txt内容
    a
    b
    c
    
    选项描述
    -b默认对每行的第一个字符排序;-b会忽略行开头的空格,且从第一个非空字符开始排序
    -f排序时不区分大小写
    -n基于字符串长度排序
    -r逆序排序
    -k对file1和file2之间的字符排序,文件排序
    -o将排序结果输出到文件,而不是标准输出
    • du命令可以列出一个以路径名顺序排列的列表;head(前十);tail(后十)

      1593771141678

    • sort -rn ,产生一个逆向的数值排序

      1593771268831

    • 和ls一起可以查看按照文件大小排序的结果

      其中-k 5 是使用第五个字段进行排序

      1593771350583

uniq

  • uniq 通知或省略重复的行

    • uniq一般和sort配合使用,另外只能移除相邻的重复行。
  • uniq -c 输出重复行,并在前面加上重复的次数。

    1594185566082

  • uniq -d 只输出重复行

    1594185647245

Logo

更多推荐