云网牛站
所在位置:首页 > Linux命令 > Linux Bash命令示例:文件相关

Linux Bash命令示例:文件相关

2017-10-19 21:58:12作者:Linux编辑稿源:topspeedsnail

创建或清空一个文件

$ > filename

上面命令使用了输出重定向操作符 >:打开文件进行操作。如果文件不存在,创建文件,如果文件存在,则清空文件。上面命令没有重定向任何内容,所以为空。

如果你想用指定内容替换文件内容,可以使用如下命令:

$ echo "something you want to write" > filename

filename文件的内容为 something you want to write。

 

在文件为追加内容

$ echo "something that you want to append to file" >> filename

上面命令使用了输出重定向操作符 >>:在文件尾写入内容。如果文件不存在则创建文件。写入的文件内容前有新行符(n),如果你不想要n,可以指定-n参数,如下:

$ echo -n "fuck_the_gfw" >> file

 

读入文件的第一行并存入到一个变量中

$ read -r line < filename

$ echo $line   # 输出filename文件的第一行

read命令:从标准输入中读取一行放入到line里。<:重定向文件内容到标准输入。-r:读取raw数据。

另一种写法:

$ line=$(head -1 filename)

同:

$ line=`head -1 filename`

 

一行一行的读取文件内容

$ while read -r line; do

# 用 $line 做点什么

done < filename

如果你不想用<,可以用管道:

$ cat file | while read -r line; do

echo $line

done

 

随机读取文件中的一行数据

$ read -r random_line < <(shuf filename)

上面用到了shuf外部命令(generate random permutations)。

下面借助sort命令:

$ read -r random_line < <(sort -R filename)

同:

$ random_line=$(sort -R filename | head -1)

 

获得文件大小

$ size=$(wc -c < filename)

$ echo $size

 

从文件路径中提取文件名

假如你有一个字符串/path/to/filename.py,怎么获得文件名filename.py。

$ path=/path/to/filename.py

$ filename=${path##*/}

$ echo $filename

上面用到了参数扩展 ${var##pattern},使用pattern试图匹配path。

 

从文件路径中提取目录

$ path=/path/to/filename.py

$ dirname=${path%/*}

上面用到了参数扩展 ${var%pattern}。

 

快速拷贝一个文件

假如我们要拷贝/path/to/file 到 /path/to/file_copy,我们通常的写法是:

$ cp /path/to/file /path/to/file_copy

简便写法,可以用{…}表达式:

$ cp /path/to/file{,_copy}

同理,mv移动文件可以用如下命令:

$ mv /path/to/file{,_old}

Linux命令子频道
精选文章
热门文章