Linux命令行大全
第一章 shell是什么datedate 显示时间日期calcal 显示日期df 和 freedf 系统磁盘空间使用情况free 显示可用内存exitexit 退出终端第二章 导航pwdpwd 查看当前工作目录lsls 列出当前工作目录的文件文件夹ls /home# 显示home文件下的内容ls ~ /usr# 显示主目录和/usr下的日容ls - a# 显示所有文件,包括隐藏的内容ls - l#
第一章 shell是什么
date
- date 显示时间日期
cal
- cal 显示日期
df 和 free
- df 系统磁盘空间使用情况
- free 显示可用内存
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
属性 | 文件类型 |
---|---|
- | 普通文件 :-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
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 查看进程信息
其中TTY表示进程的控制终端,TIME表示消耗CPU的时间综合
-
此外还可以在ps的基础上添加 x 或者aux 查看更多的进程信息。
其中?表示没有控制终端,STAT表示进程状态:R运行状态,S睡眠状态
top
-
top 动态查看进程信息,主要查看系统的最高top进程
其中top字段分别表示:当前时间;开机后系统运行多长时间了;登录的用户数;load average 负载均衡 即等待运行的进程数 小于1表示机器不忙;tasks 表示进程数和各个进程状态;cpu us表示用户进程占用,sy表示系统进程占用,ni表示友好进程占用,id表示cpu空闲,wa表示等待I/O操作;Mem表示物理RAM使用情况;Swap表示交换空间使用情况。
CTRL+C
-
xlogo 是一个x窗口系统,我们用来测试进程的开关。
-
终端进程可以用CTRL+C去中断进程
-
让xlogo进程在后台进行,就需要加上&
可以使用jobs去查看进程的状态
这个时候如果要终端进程,CTRL+C就不行了,需要把进程提到前台运行。
xlogo & fg %1 # 进程切换到前台 # 暂停进程! bg %1
kill
-
对于进程也可以使用kill去杀死进程 kill + 进程号
-
杀死多个进程 使用killall
pstree
- pstree 以树状的模式输出进程列表
第十一章 环境
- set 会显示shell变量和环境变量
printenv
-
printenv
-
可以查看环境变量,
-
也可以查看单个的变量
printenv USER printenv HOME
set
-
set
-
可以查看shell变量
-
但是不能查看某单个变量
-
查看单个变量还可以使用echo
echo $HOME 这也等同于 printenv HOME
-
alias
-
alias
-
可以查看别名
-
可以看到 使用的python显示python3
-
如果要切换到python2
alias python=python2
-
login 和 non-login shell
- shell分为两种
- login shell 会话会提示输入用户名和密码
- login shell 会启动一个或多个启动文件如:/etc/profile ~/.bash_profile ~/.bash_login ~/.profile
- non-login shell 典型的就是 终端会话
- non-login shell 会启动:/etc/bash.bashrc ~/.bashrc
- 其中~/.bashrc就是个人启动文件,在大数据中修改环境变量就是修改的这个文件
- 其中大多数以”.“开头的文件,意味着这些文件时被隐藏的!
- login shell 会话会提示输入用户名和密码
文本编辑器
-
gedit
-
vim
- 在vim中输入i可以添加要输入的内容
- esc键可以退出输入内容
- 退出vim可以输入
- wq 保存并退出
- q! 强制退出不保存
第十二章 VI简介
vi
-
vi 就是文本编辑器和使用的vim一样 但是大多数的文本编辑器已经被vim取代
-
进入vi
vi
-
可以看一下vim界面
-
退出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
这就表示从测试系统到www.baidu.com网站的连接需要经过30个路由器。没有加*的是提供身份信息的路由器。
netstat
-
netstat 检查网络设置及相关统计数据
-
netstat -ie 检查系统的网络接口信息
-
其实结果和ifgonfig命令是一样的!
-
网络日常诊断关键是看UP,表示网络接口启用;inet 地址的IP地址,表示DHCP正在工作。
-
-
netstat -r 显示内核的网络路由表
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 登录本地系统的其他用户
这个时候就已经进入到了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文档文件压缩
-
gunzip 文件解压缩
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去查看的话会出现乱码
-
zcat 和gunzip -c的效果是一样的!
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的文件
元字符和文字
-
. 任意字符
-
注意和只查“zip”的区别
-
-h的作用时抑制文件名的输出,也就是查询的前面有在哪个文件内找到的
-
锚:^(开头), $(末尾)
- ^开头
- 结尾$
以zip开头以zip结尾
-
中括号[]
- 表示[bg]匹配包含bzip或gzip的文件
-
^ 否定
- 表示zip前不是b或g的文件
-
大写字母开头
-
上述查找大写字母只适用于grep命令,对于ls就不适用。
ls /usr/sbin/[A-Z]* #输出结果并不是大写开头的 ls /usr/sbin/[[:upper:]]* # 这样输出结果才是大写字母开头 ls /usr/sbin/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]* # 这样是可以的但是很麻烦
-
-
包含大写字母
-
开头包含A-Za-z0-9
grep -h '^A-Za-z0-9' dirlist*.txt
-
包含A\Z-的文件
grep -h '-AZ' dirlist*.txt
-
查看系统的语言设置
echo $LANG
-
或选项|
- 表示查找结果包含bz或gz或zip
-
区别
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(后十)
-
sort -rn ,产生一个逆向的数值排序
-
和ls一起可以查看按照文件大小排序的结果
其中-k 5 是使用第五个字段进行排序
-
uniq
-
uniq 通知或省略重复的行
- uniq一般和sort配合使用,另外只能移除相邻的重复行。
-
uniq -c 输出重复行,并在前面加上重复的次数。
-
uniq -d 只输出重复行
更多推荐
所有评论(0)