欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux命令行大全

程序员文章站 2022-07-16 13:01:17
...

第一章 shell是什么

date

  • date 显示时间日期

Linux命令行大全

cal

  • cal 显示日期

Linux命令行大全

df 和 free

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

Linux命令行大全

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

Linux命令行大全

属性 文件类型
- 普通文件 :-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

Linux命令行大全

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 查看进程信息

    Linux命令行大全

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

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

    Linux命令行大全

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

top

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

    Linux命令行大全

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

CTRL+C

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

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

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

    Linux命令行大全

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

    Linux命令行大全

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

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

kill

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

    Linux命令行大全

  • 杀死多个进程 使用killall

    Linux命令行大全

pstree

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

第十一章 环境

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

printenv

  • printenv

  • 可以查看环境变量,

  • 也可以查看单个的变量

    printenv USER
    printenv HOME
    

set

  • set

    • 可以查看shell变量

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

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

      echo $HOME
      这也等同于
      printenv HOME
      

alias

  • alias

    • 可以查看别名

      Linux命令行大全

    • 可以看到 使用的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

    Linux命令行大全

  • vim

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

Linux命令行大全

第十二章 VI简介

vi

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

  • 进入vi

    vi
    

    Linux命令行大全

  • 可以看一下vim界面

    Linux命令行大全

  • 退出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、Ubuntu dpkg apt-get apt-get update
    Red Hat类(.rpm技术) CentOS、RedHat rpm yum yum search search_string
  • 安装软件包

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

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

    系统类型 更新库中软件包 更新软件包中的软件包
    Debian系统 apt-get update\apt-get upgrade dpkg --install package_file
    RedHat系统 yum update rpm -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	
    

    Linux命令行大全

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

netstat

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

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

    Linux命令行大全

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

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

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

    Linux命令行大全

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-******生成**,加入授权就不用每次都输入密码了
    exit 	#退出刚才的localhost本机
    cd ~/.ssh
    ssh-****** -t rsa
    cat ./id_rsa.pub >> ./authorized_keys	#加入授权
    
    ssh remote -sys	#登录远程主机remote-sys
    
  • ssh 登录本地系统的其他用户

    Linux命令行大全

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

  • scp和sftp 安全传输文件

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

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

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

scp aaa@qq.com: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文档文件压缩
    

    Linux命令行大全

  • gunzip 文件解压缩

    Linux命令行大全

    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去查看的话会出现乱码

Linux命令行大全

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

    Linux命令行大全

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的文件
    

元字符和文字

  • . 任意字符

    Linux命令行大全

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

    Linux命令行大全

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

    Linux命令行大全

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

    • ^开头

    Linux命令行大全

    • 结尾$

Linux命令行大全

​ 以zip开头以zip结尾

Linux命令行大全

  • 中括号[]

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

    Linux命令行大全

  • ^ 否定

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

    Linux命令行大全

  • 大写字母开头

    Linux命令行大全

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

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

    Linux命令行大全

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

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

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

    echo $LANG
    

    Linux命令行大全

  • 或选项|

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

    Linux命令行大全

    • 区别

      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(后十)

      Linux命令行大全

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

      Linux命令行大全

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

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

      Linux命令行大全

uniq

  • uniq 通知或省略重复的行

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

    Linux命令行大全

  • uniq -d 只输出重复行

    Linux命令行大全

相关标签: linux