【Linux进阶指南】实用终端用法总结

10 篇文章 0 订阅

前言

概要

本文包含的所有终端用法

  • 可能因系统和Shell型号存在使用差异
  • 以实用、常用用法为主

作者使用环境

  • 系统:macOS
  • Shell:zsh & oh-my-zsh

注:

  1. 文中部分用法可能为zsh独有特性
  2. 推荐使用tldr查看常见命令用法

快捷键

ALT + .

用途:
直接调用最近一次命令的最后一个参数

CTRL + R

用途:
模糊查找并替换为历史命令
扩展:
fzf一样的UI界面,可使用正则表达式进行模糊查找

CTRL + Z

用途:
将当前执行中命令送入后台执行,以继续使用终端
扩展:

  1. 随时可使用fg(foreground)调回后台执行命令
  2. 使用bg可查看所有后台执行命令

CTRL + A

用途:
移动光标到首个字符

CTRL + E

用途:
移动光标到末尾字符

CTRL + U

用途:
删除全部输入字符

CTRL + W

用途:
删除光标所在单词(word)

命令

!!

用途:
替换换为最近一次执行的命令
扩展:

  1. 如果最近一次执行的命令因权限问题失败,可通过sudo !!再次执行
  2. 使用!!:<number>选择性替换为最近一次执行命令的command (!!:0)或第<number>个参数
  3. 使用!*替换为最近一次命令的所有参数
  4. 使用!$替换为最近一次命令的最后一个参数

cd

用途:
切换目录
扩展:

  1. 使用cd -切换回上一个所在目录
  2. 在zsh中可通过定义:
    function cd {
    	builtin cd && ls
    }
    
    在切换目录后自动显示子目录及文件

mkdir

用途:
创建目录
扩展:
使用mkdir -p <dir/not-existed-parent-dir/new-dir>创建嵌套目录

xargs

用途:
将管道(pipe)的标准输入作为命令参数
扩展:

  1. ls | xargs:将ls的标准输出作为参数打印,也即将分隔符换行符转换为空格
  2. ls | xargs -I {} echo "{}":使用-I为参数显式定义指示符{},以便在任意位置插入参数
  3. ls | xargs -t:显示xargs所被使用的命令,默认为/bin/echo,也即打印
  4. ls dir | xargs -I {} -n 1 echo "dir/{}":指定每一行含有-n个参数,以便在具有同一含义的多个参数上重复执行同一命令
  5. find . -type f -name "*.txt" -exec rm {} +find . -type f -name "*.txt" | xargs rm操作逻辑一致

tee

用途:
接收来自的管道(pipe)的标准输入,且将其分别传输到标准输出和目标文件或命令
扩展:

  1. command | tee <filename>:打印标准输出的同时保存到文件
  2. command | tee >(command):打印输出的同时传入到下一个命令

wget

用途:
通过命令行下载文件

curl

用途:
在HTTP、FTP等协议下传输数据

find

用途:
条件约束下查找指定目录下子文件系统内的目标文件,并可以附带某些针对目标文件的操作
扩展:

  1. find . -f '*.md' -exec ls -l {} +:以参数形式列举当前目录下的所有markdown文件
  2. find . -f '*.md' -exec ls -l {} \;逐行列举当前目录下的所有markdown文件

tr

用途:
字符替换
扩展:
echo $PATH | tr ':' '\n':逐行打印系统路径

cut

用途:
以域的形式切割文本
扩展:

  1. cut -c 1 <filename>:打印文本每一行的第一个字符
  2. cut -f, 1 <filename>:打印csv-like文本的第一列

awk

用途:
多行输入文本中与模式(pattern)匹配的行实现基于列/域(field)`的操作(action)

awk 'pattern {action}'

扩展:

  1. awk 'BEGIN {i=0} {i+=1} END {print i} <filename>'awk 'END {print NR}' <filename>:返回目标文件文本行数
  2. awk -F ' - ' '{print $NF}':以字符串-作为域分隔符,返回每一行文本的最后一个域
  3. awk 'BEGIN {FS=","; RS="\n"; OFS=" "; ORS="\n"} {print "line NR: "$0}':显式定义输入字符串的行分隔符(RS)和域分隔符(FS),输出字符串的行分隔符(ORS)和域分隔符(OFS),并以形式line <number>: fields逐行打印

nohup

用途:
命令进程不会跟随用户或终端退出
扩展:

  1. 使用nohup <command> &将命令进程送入后台,且不因终端退出而打断
  2. 使用nohup > log.out 2>log.error显示保存命令日志

tar

用途:
对数据文件进行打包备份和恢复
扩展:

  1. 备份:tar cvf *.tar;恢复:tar xvf *.tar
  2. 一般还会搭配压缩方法使用,如:tar czvf *.tar.gz

tail -f

用途:
持续读取目标文件
扩展:
使用tail -f <filename>动态打印日志文件的新增内容

watch

用途:
重复执行命令
扩展:
使用watch -n 1 nvidia-smi动态追踪GPU的使用情况

command

用途:
避免使用与输入<command>同名的自定义aliasfunction
扩展:
很多时候我们都会自定义终端常用命令的输出风格,而这可能会影响某些命令组合下的输出结果。因此,我们可以使用

command <command>

来保证原始<command>的输出结果

lsof

用途:
列举已打开文件及其对应的进程
扩展:
使用lsof -ti :<port> | xargs kill关闭对应端口

du

用途:
查看磁盘占用情况
扩展:
使用du- sh查看某一目录的磁盘占用情况

shred

用途:
在删除数据文件后用0重写数据文件使用过的存储空间
扩展:
shred -zvu <filename>

其它用法

特殊变量

用途:
系统保留变量,方便重新调用历史输入输出
扩展:

  1. $_:最近一次执行命令的最后一个参数
  2. $?:最近一次执行命令的退出码,0为正常退出

重定向(>)

用途:
重定向命令输出
扩展:

  1. command > <filename>:将标准输出保存到<filename>
  2. command 2> <filename>:将标准错误保存到<filename>
  3. command &> <filename>:将标准输出和标准错误保存到<filename>
  4. command 2>&1 >/dev/null:将标准错误指向终端,然后将标准输出指向空设备,也即舍弃

函数

用途:
定义局部函数
扩展:

$ <funcname> () { command; }
$ funcname

连续值

用途:
快速生成连续值
扩展:

  1. for i in {1..9};do echo $i; done
  2. for i in {a..z};do echo $i; done

数组

用途:
自定义包含可选值的局部数组变量
扩展:

$ nums=( 1 4 2 9 )
$ for i in {1..4};do echo "${nums[$i]}"; done

多行字符串

用途:
通过逐行输入打印多行字符串
扩展:

cat << EOF
...type string here
...
EOF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值