【Linux shell 常用指令】

重定向和管道

重定向

>:覆盖输出
>>:追加输出
标准输入 (stdin): 代码为0,使用<或<<;
标准输出 (stdout): 代码为1,使用>或>>;
标准错误输出(stderr): 代码为2,使用2>或2>>;

ls *.txt >> /dev/null
if (! $status) then
    echo "file exist"
else
    echo "file not exist"
endif

管道

管道是将前一个命令的stdout作为后一个命令的stdin
命令1 | 命令2 | 命令3 | …

command1 | command2 | command3 | ...

tee

tee [OPTION] FILE...

tee读取stdin并将其写到stdout和文件中

选项功能
-a附加到已有文件后面
ls /usr/bin | tee ls.txt | grep zip

xargs

command | xargs [OPTION] command

Xargs从标准输入中读取由空格或换行符分隔的项,并使用从标准输入中读取的项后面的任何初始参数执行一次或多次命令。标准输入上的空行将被忽略。

选项功能
-a file从文件中读入作为stdin
-I {}将xargs的每项赋值给{}
-n num命令执行的时候一次用的argument数量
-d分隔符

find

find [path...] -name [expression]

cp

\cp -rf FILE

强制复制,不进行询问

rm

rm [OPTION] FILE...
选项功能
-d删除空文件夹
-f强制删除,不进行确认
–i对每个文件的删除进行确认
-r删除文件夹及其子文件
  • find+rm:
find . -name “*.v” | xarg rm -rf

ln

ln [OPTION] TARGET DIRECTORY
选项功能
-s建立软链接

说明一下软链接和硬链接的区别

硬链接的特点如下:

  • 不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。
  • 不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件都可以被访问。
  • 硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。
  • 硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的。
  • 硬链接不能链接目录,因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂。

软链接类似于快捷方式,特点如下:

  • 不论是修改源文件(check),还是修改硬链接文件(check-soft),另一个文件中的数据都会发生改变。
  • 删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在。
  • 软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及 inode 号。
  • 软链接可以链接目录。
  • 软链接可以跨分区。

symlinks

用于管理链接的一个指令

symlinks [OPTION] dirlist
选项功能
d删除无效链接

sort

sort [OPTION]... [FILE]...
选项功能
-b忽略空格
-f忽略大小写
-k n,m[OPTION]按照域优先级进行排序,先n后m;n.m意味着第n个域的第m个字符;可以结合sort的其余OPTION进行排序
-n按照字符串数字大小排列
-r逆序排列
-t [symbol]设置分隔符
-u输出唯一的结果

查看文件命令

  • cat
  • more
  • less
  • head
  • tail

文本处理三剑客

grep

grep [OPTION] PATTERN [FILE ...]
grep "xxx" */*.v
选项功能
-c查找匹配的行数
–i查找时不区分大小写
-l列出带有匹配行的文件名
-n列出行号
-v从文件内容查找不匹配指定字符串的行
-A n显示匹配行的后n行
-B n显示匹配行的前n行
-C n显示匹配行的前后共计n行
  • find+grep:
find . -name "*.in" | xargs grep "thermcontact"

sed

sed [OPTION]... {script-only-if-no-other-script} [input-FILE]...
sed "xxx" */*.v
选项功能
-n显示script处理相关的结果
-e直接增加脚本
-f通过文件增加脚本
-i直接替换源文件内容

awk

awk 'BEGIN{flag1=0;flag2=0} {if(/conditonA/)flag1=1;if(/conditionB/)flag2=0;if(flag1&&/conditionC/)flag2=1;if(flag1&&flag2&&/conditionD/) print $0}' temp.log;

diff

diff -rq dir1 dir2

打包和压缩

压缩命令不能直接压缩目录,必须先用 tar 命令将目录打包,然后才能对打包文件进行压缩

tar

tar [OPTION] -f name.tar[.gz] [FILE/DIR]...

主要功能选项

选项功能
-A追加tar文件到档案
-c创建一个新的档案
–delete删除档案中的文件
-r向档案结尾中添加文件或者目录
-t只看档案中有什么内容
-x从档案提取文件

辅助功能选项

选项功能
-f name指定档案名,需要自行加上后缀,名称必须指定
-C 目录指定文件提取位置
-k不覆盖已存在的同名文件
-p不改变文件原来的属性
-v显示打包过程
-z解压或压缩成.tar.gz

zip

zip [OPTION] zipfile file(s) ...

zip命令会打包并压缩文件

选项功能
-m将文件压缩之后,删除原始文件
-q在压缩的时候不显示命令的执行过程
-r递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩
-s splitsize指定归档文件的最大大小
-u更新压缩文件,即往压缩文件中添加新文件
-v显示详细的压缩过程信息
-[0-9]-1 压缩速度更快,-9 压缩效果更好,默认为-6

unzip

unzip [OPTION] file.zip [zips ...] [-x xfile(s) ...] [-d exdir]
选项功能
-d exdir将压缩文件解压到指定目录下
-n解压时不覆盖已经存在的文件
-o解压时覆盖已经存在的文件
-t测试压缩文件有无损坏,但并不解压
-v查看压缩文件的详细信息。包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作
-x xfile(s)解压不包含文件列表中的文件

gzip

gzip [OPTION] name ...

该命令可以用于压缩文件,也可以用于对压缩后的档案进行操作。gzip和tar不同,gzip只进行压缩,不提供打包功能,因此对多个文件进行操作的时候会得到各自的.gz文件。

选项功能
-c将压缩数据输出到标准输出中,并保留源文件
-d解压档案
-l显示档案内的信息
-r递归压缩指定目录下以及子目录下的所有文件
-v对于每个文件和档案,显示相应的文件名和压缩比
-[0-9]-1 压缩速度更快,-9 压缩效果更好,默认为-6

在使用 gzip 命令压缩文件时,源文件会消失,转变为压缩文件。
因此会用到下列用法:

gzip -c file > foo.gz
cat file1 file2 | gzip > foo.gz
gzip -cd old.gz | gzip > new.gz

gunzip

gunzip [OPTION] name ...
选项功能
-c将解压文件输出到标准输出中,并保留源文件
-f强制解压档案
-l显示档案内的信息
-r递归解压指定目录下以及子目录下的所有文件
-t测试档案是否正常,但不解压
-v显示命令执行过程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值