Shell

来自技术笔记
跳到导航 跳到搜索

Shell/备份文件脚本

!# 上一个命令名

!$ 上一个命令的最后一个参数

!:n 上一个命令的第n个参数

判断网站是否能够打开

判断语句

https://www.gnu.org/software/bash/manual/html_node/index.html

Shell/参数

CLI // todo,与之合并

Shell/空间

#!/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

  1. 清屏

clear

  1. 输出
    1. echo //和cmd中的echo一样的效果
    2. printf //和C、C++、awk、Perl、Python、Tcl类似
  2. 读取变量
    1. read a //命令执行后,手工输入变量a的值
    2. echo "The value of \"a\" is $a."
  3. 变量赋值
    1. a=12345
    2. ab="12345"
    3. echo "The value of \"a\" is $a."
    4. echo "The value of \"a\" is ${a}b."
  4. readonly a
    1. a=54321
    2. unset a
    3. echo $a
  5. 运算
    1. let a=16+5
    2. echo "The value of \"a\" is now $a."
  6. 数组
    1. ARR=(2 4 6 8)
    2. ARR[1]="item_1"
    3. 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行

时间[编辑 | 编辑源代码]

  1. 获得当天的日期
    1. date +%Y-%m-%d
    2. 输出: 2011-07-28
  2. 获取明天的日期
    date -d next-day +%Y%m%d
  3. 获取昨天的日期
    • date -d last-day +%Y%m%d
    • date -d "1 days ago" +%Y-%m-%d
  4. 获取上个月的年和月
    date -d last-month +%Y%m
  5. 获取下个月的年和月
    date -d next-month +%Y%m
  6. 获取明年的年份
    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

Du[编辑 | 编辑源代码]