Shell
跳到导航
跳到搜索
!# 上一个命令名
!$ 上一个命令的最后一个参数
!:n 上一个命令的第n个参数
https://www.gnu.org/software/bash/manual/html_node/index.html
CLI // todo,与之合并
#!/usr/bin/env bash
快捷键[编辑 | 编辑源代码]
删除[编辑 | 编辑源代码]
- ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl
- ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh
- ctrl + k 删除光标后面所有字符相当于VIM里d shift+$
- ctrl + u 删除光标前面所有字符相当于VIM里d shift+^
- ctrl + w 删除光标前一个单词相当于VIM里db
- ctrl + y 恢复ctrl+u上次执行时删除的字符
- ctrl + ? 撤消前一次输入
- alt + r 撤消前一次动作
- alt + d 删除光标所在位置的后单词
移动[编辑 | 编辑源代码]
- ctrl + a 将光标移动到命令行开头相当于VIM里shift+^
- ctrl + e 将光标移动到命令行结尾处相当于VIM里shift+$
- ctrl + f 光标向后移动一个字符相当于VIM里l
- ctrl + b 光标向前移动一个字符相当于VIM里h
- ctrl + 方向键左键 光标移动到前一个单词开头
- ctrl + 方向键右键 光标移动到后一个单词结尾
- ctrl + x 在上次光标所在字符和当前光标所在字符之间跳转
- alt + f 跳到光标所在位置单词尾部
替换[编辑 | 编辑源代码]
- ctrl + t 将光标当前字符与前面一个字符替换
- alt + t 交换两个光标当前所处位置单词和光标前一个单词
- alt + u 把光标当前位置单词变为大写
- alt + l 把光标当前位置单词变为小写
- alt + c 把光标当前位置单词头一个字母变为大写
- ^oldstr^newstr 替换前一次命令中字符串
历史命令编辑[编辑 | 编辑源代码]
- ctrl + p 返回上一次输入命令字符
- ctrl + r 输入单词搜索历史命令
- alt + p 输入字符查找与字符相接近的历史命令
- alt + > 返回上一次执行命令
其它[编辑 | 编辑源代码]
- ctrl + s 锁住终端
- ctrl + q 解锁终端
- ctrl + l 清屏相当于命令clear
- ctrl + c 另起一行
- ctrl + i 类似TAB健补全功能
- ctrl + o 重复执行命令
- alt + 数字键 操作的次数
基础[编辑 | 编辑源代码]
首行添加#! /bin/sh
- 清屏
clear
- 输出
- echo //和cmd中的echo一样的效果
- printf //和C、C++、awk、Perl、Python、Tcl类似
- 读取变量
- read a //命令执行后,手工输入变量a的值
- echo "The value of \"a\" is $a."
- 变量赋值
- a=12345
- ab="12345"
- echo "The value of \"a\" is $a."
- echo "The value of \"a\" is ${a}b."
- readonly a
- a=54321
- unset a
- echo $a
- 运算
- let a=16+5
- echo "The value of \"a\" is now $a."
- 数组
- ARR=(2 4 6 8)
- ARR[1]="item_1"
- if echo "${ARR[@]}" | grep -w "item_1" &>/dev/null; then echo "Found" fi
文本处理[编辑 | 编辑源代码]
替换[编辑 | 编辑源代码]
- echo ${path/sbin/SBIN}
- echo ${path//sbin/SBIN}
- echo ${path#}关键字
- ##
- %%
- %
删除重复[编辑 | 编辑源代码]
计算行数、字数、字符数[编辑 | 编辑源代码]
打印[编辑 | 编辑源代码]
提取[编辑 | 编辑源代码]
tail -n file显示file的倒数n行
head -n file显示filed的前n行
时间[编辑 | 编辑源代码]
- 获得当天的日期
- date +%Y-%m-%d
- 输出: 2011-07-28
- 获取明天的日期
- date -d next-day +%Y%m%d
- 获取昨天的日期
- date -d last-day +%Y%m%d
- date -d "1 days ago" +%Y-%m-%d
- 获取上个月的年和月
- date -d last-month +%Y%m
- 获取下个月的年和月
- date -d next-month +%Y%m
- 获取明年的年份
- date -d next-year +%Y
export[编辑 | 编辑源代码]
export -p
显示当前的环境
alias lm='ls -l more'
别名
范例[编辑 | 编辑源代码]
read[编辑 | 编辑源代码]
read [-r] var
$IFS=分隔符
while IFS=: read user pass uid gid fullname homedir Shell > do > echo $user > done < /etc/passwd