美文网首页
[Linux记录] 常用BASH命令(2)——进阶

[Linux记录] 常用BASH命令(2)——进阶

作者: Cooper_Hp | 来源:发表于2020-12-19 13:02 被阅读0次

进阶

稍微复杂一些的BASH命令,掌握后可加快Linux使用效率。

以下命令的更多用法可以参考:菜鸟教程-Linux命令大全
关于Linux系统知识可以参考:鸟哥的Linux私房菜
相关书籍分享:百度云盘(密码:u34s)

通配符

通配符常用于模糊匹配文件或目录名,个人常用于for循环、grep查找等等场景,详细说明和用法可参考。常见通配符包括:

  • *:匹配任意长度的任意字符
  • {string1,string2}:匹配string1或string2

常见用法:

# 打印所有以.py结尾的文件
$ ls *.py
# 对dirname目录所有文件进行查找
$ grep -r "hello" dirname/*
# 用VIM编辑器同时打开多个以.data结尾的文件
$ vim -p *.data
# 对当前目录的每个文件进行循环
$ for i in *;do echo $i;done
# 同时复制多个文件到当前目录
$ cp dirname/{INCAR,POSCAR,KPOINTS,POTCAR} .

管道

重定向

重定向分为输入重定向和输出重定向,详细内容可参考菜鸟教程-Shell 输入/输出重定向

标准文件描述符

文件描述符 缩写 描述
0 STDIN 标准输入
1 STDOUT 标准输出
2 STDERR 标准错误

对于终端界面来说,标准输入是键盘,标准输出是屏幕。所谓的输入/输出重定向就是将标准输入/输出/错误从键盘/屏幕转移至文件。

输入重定向

一个命令通常从标准输入(默认为终端)读取输入,使用command < file可将文件内容重定向到命令,即从文件读取输入。这种重定向个人使用的不多,另一种输入重定向称为内联输入重定向,符号为<<。这种方法无需使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据就可以了。个人只使用cat写入文件:

# bash script
cat > hello.sh << !
string="Hello, this is a test."
echo \$\{string\}
!

Note

  • 必须指定一个文本标记来划分输入数据的开始和结尾。如本例!,其他常用EOF
  • 注意特殊字符用\转义

输出重定向

输出重定向将命令产生的屏幕输出重定向至另一个位置(通常为文件),常用的重定向操作包括,>>>1>2>&>1>>2>>&>>tee

>>>

>>>是最基本也最常用的输出重定向命令,输出重定向至文件后屏幕将不会打印命令运行结果,二者的区别是> file将新建或覆盖(当file已存在时)file文件,而>> file将新建(当file不存在时)或追加内容到file文件。

# 打印所有的模块到文件
$ module avail > out.log
# 追加当前目录文件详细信息到文件
$ ls -l >> out.log

1>2>&>1>>2>>&>>

>>>前添加特殊文件描述符12,可指定将标准输出和标准错误输出至文件,而&分别表示将正确输出、错误输出、所有输出进行重定向,常用操作为:

# 只重定向正确输出
$ command 1> right.log
# 将错误输出丢弃
$ command 2>> /dev/null
# 将正确输出和错误输出分别重定向
$ command 1>> right.out 2>> wrong.out
# 将正确输出和错误输出同时输出至一个文件
$ command &> out
$ command > out 2>&1

Note

  • >>>默认重定向正确输出,等价于1>1>>
  • &> 等价于>&2>&1,一般用&>即可
  • /dev/null是Linux系统的特殊文件(可理解为垃圾桶),重定向至该文件的输出将全部消失

tee

前述的输出重定向都不会在屏幕显示输出,而tee命令配合管道可同时将正确和错误输出在屏幕并重定向至文件。tee命令用于读取标准输入的数据,并将其内容输出成文件。其一般使用如下:

$ vasp_std | tee out.log

Note-a选项,附加到既有文件后面,而非覆盖它。

查找

grep命令用于查找文件里符合条件的字符串,详细使用请参考菜鸟教程-Linux grep命令,常用选项包括:

  • -n:打印行号
  • -r-d:对目录递归查找
  • -e-E:根据正则表达式查找

其它查找命令还包括:

压缩和归档

Linux中的文件压缩工具有bzip2(.bz2)、compress(.Z)、gzip(.gz)、zip(.zip),但Linux系统中使用最广泛的归档工具是tar命令,常见用法包括:

# 创建压缩/归档文件
$ zip 
$ tar -cvf file.tar file1 file2 dir1 dir2 ...
# 从常见压缩/归档文件提取内容
$ unzip file.zip
$ tar -xvf file.tar
$ tar -zxvf file.tgz
$ tar -zxvf file.tar.gz

Note:可以将多个文件目录归档,通过一次性从远程服务器下载至本地

链接

Linux中的链接可分为软链接和硬链接,软链接相当于Windows系统中的快捷方式。硬链接可理解为创建一个新的指向源文件地址(inode)的文件名。硬链接和源文件可理解为同一个地址映射为两个文件名,而软链接可理解为指向源文件名的映射。二者具有以下特点:

  • 硬链接与源文件共享内存地址,删除源文件后,硬链接仍有效;而软链接会开辟新的内存地址,删除源文件后,软链接将失效
  • 不论删除软链接还是硬链接,都不会删除源文件
  • 硬链接只能对文件创建,而软链接对于文件和目录均可
  • 硬链接不能给不同文件系统的文件创建,而软链接可对任何文件系统创建
  • 移动源文件路径后,软链接将失效,而硬链接不会

硬链接的作用在于备份,可为重要文件创建硬链接,如果误删该文件,则仍可使用硬链接访问。而软链接的作用与Windows快捷方式相同,为目录层级比较深的目录或文件创建软链接至常用的目录位置,类似于Windows下为软件创建桌面快捷方式。ln命令用于创建软、硬链接,常用命令如下:

# 为文件创建硬链接
$ ln file file.hard    # .hard后缀名仅作为标识
# 为文件或目录创建软链接
$ ln -s file file.soft
$ ln -s dirname dirname.soft

Note:目录软链接删除时,不需要-rf选项,目录名后不要带/,如果带/很容易将源目录删除。

环境变量

目录切换

当需要在多个复杂层级目录来回切换时,使用cd命令进行切换就会比较麻烦,此时可以使用pushddirs命令,常见用法如下:

# 进入dirname目录,并将dirname压入目录栈中
$ pushd dirname
# 查看目录栈,第一列为编号
$ dirs -v
# 切换到编号为n的目录
$ pushd +n

目录栈是保存目录名的一个栈结构,编号0表示当前目录。日常使用只需要将目录压入栈中,通过dirs -v查看目录编号,再使用pushd +n切换到编号n对应的目录即可。
Notepushd如果不跟任何参数则栈顶层的两个目录进行切换,相当于cd -

相关文章

  • [Linux记录] 常用BASH命令(2)——进阶

    进阶 稍微复杂一些的BASH命令,掌握后可加快Linux使用效率。 以下命令的更多用法可以参考:菜鸟教程-Linu...

  • 近期常用

    bash 脚本要点 bash testing vim:你的不二选择 JSON 若干约定 Linux 常用命令 Bu...

  • [Linux记录] 常用BASH命令(1)——基础

    基础 Linux最简单基础的常用命令,掌握这些命令就可简单使用Linux系统。 以下命令的更多用法可以参考:菜鸟教...

  • Linux 常用命令(三)

    Linux 常用命令(三) Linux系统中进程管理 常看当前客户端的命令 ps 如果只是看和自己的bash有关的...

  • Git学习路线

    1. 掌握常用的linux命令 2. 掌握常用的git命令 (廖雪峰教程,通过博客记录学习总结,定期复习) 3. ...

  • linux常用命令行

    linux系统的使用离不开linux命令行,先对常用的linux命令行做个总结记录。目前,个人比较常用的命令行有如...

  • Linux常用命令

    Linux常用命令 一、常用命令 1.注销、关机、重启 2.linux基本命令 :文件操作命令 3.linux 系...

  • Linux之常用文件操作命令

    前言 继Linux命令基础 后.记录整理了Linux较为常用的处理文件目录的命令. 文件处理命令 Linux 下一...

  • Linux常用命令 1

    初学Linux,记录一下Linux常用命令。 Linux严格区分大小写。 目录处理命令: ls 命令所在路径:/b...

  • Linux入门10-bash基础特性

    Linux Bash初体验,学习命令别名,继续学习linux基本命令。

网友评论

      本文标题:[Linux记录] 常用BASH命令(2)——进阶

      本文链接:https://www.haomeiwen.com/subject/fxavmktx.html