shell环境

  • set shell或环境变量
  • printenv 环境变量
  • echo 查看变量内容
  • alias 查看别名

有趣的环境变量

  • DISPLAY 如果你正在运行图形界面环境,那么这个变量就是你显示器的名字。通常,它是 “:0”, 意思是由 X 产生的第一个显示器。
  • EDITOR 文本编辑器的名字。
  • SHELL shell 程序的名字。
  • HOME 用户家目录。
  • LANG 定义了字符集以及语言编码方式。
  • OLD_PWD 先前的工作目录。
  • PAGER 页输出程序的名字。这经常设置为/usr/bin/less。
  • PATH 由冒号分开的目录列表,当你输入可执行程序名后,会搜索这个目录列表。
  • PS1 Prompt String 1. 这个定义了你的 shell 提示符的内容。随后我们可以看到,这个变量 内容可以全面地定制。
  • PWD 当前工作目录。
  • TERM 终端类型名。类 Unix 的系统支持许多终端协议;这个变量设置你的终端仿真器所用的协议。
  • TZ 指定你所在的时区。大多数类 Unix 的系统按照协调时间时 (UTC) 来维护计算机内部的时钟 ,然后应用一个由这个变量指定的偏差来显示本地时间。
  • USER 你的用户名

登录 shell 会话的启动文件

  • /etc/profile 应用于所有用户的全局配置脚本。
  • ~/.bash_profile 用户个人的启动文件。可以用来扩展或重写全局配置脚本中的设置。
  • ~/.bash_login 如果文件 ~/.bash_profile 没有找到,bash 会尝试读取这个脚本。
  • ~/.profile 如果文件 ~/.bash_profile 或文件 ~/.bash_login 都没有找到,bash 会试图读取这个文件。 这是基于 Debian 发行版的默认设置,比方说 Ubuntu。

非登录 shell 会话的启动文件

  • /etc/bash.bashrc 应用于所有用户的全局配置文件。
  • ~/.bashrc 用户个人的启动文件。可以用来扩展或重写全局配置脚本中的设置。

vi

  • y 复制
  • x 剪切字符
  • d 剪切范围
  • p/P 粘贴光标后/前
  • J 连接行

光标移动按键

  • l or 右箭头 向右移动一个字符
  • h or 左箭头 向左移动一个字符
  • j or 下箭头 向下移动一行
  • k or 上箭头 向上移动一行
  • 0 (零按键) 移动到当前行的行首。
  • ^ 移动到当前行的第一个非空字符。
  • $ 移动到当前行的末尾。
  • w 移动到下一个单词或标点符号的开头。
  • W 移动到下一个单词的开头,忽略标点符号。
  • b 移动到上一个单词或标点符号的开头。
  • B 移动到上一个单词的开头,忽略标点符号。
  • Ctrl-f or Page Down 向下翻一页
  • Ctrl-b or Page Up 向上翻一页
  • numberG 移动到第 number 行。例如,1G 移动到文件的第一行。
  • G 移动到文件末尾。
  • u 撤销最后一次修改

追加

  • A 在行尾添加文本
  • o 当前行的下方打开一行。
  • O 当前行的上方打开一行。

查找和替换

  • f 搜索行,;重复搜索

全局替换

:%s/Line/line/g

  • : 冒号字符运行一个 ex 命令。
  • % 指定要操作的行数。% 是一个快捷方式,表示从第一行到最后一行。另外,操作范围也 可以用 1,5 来代替(因为我们的文件只有5行文本),或者用 1,$ 来代替,意思是 “ 从第一行到文件的最后一行。” 如果省略了文本行的范围,那么操作只对当前行生效。
  • s 指定操作。在这种情况下是,替换(查找与替代)。
  • /Line/line 查找类型与替代文本。
  • g 这是“全局”的意思,意味着对文本行中所有匹配的字符串执行查找和替换操作。如果省略 g,则 只替换每个文本行中第一个匹配的字符串。

编辑多个文件

vi file1 file2 file3…

  • :w fileName 另存为
  • :n/N 下/上一个
  • :buffers 显示文件列表
  • :buffer 2 切换
  • :e file.txt 加入文件
  • :r file.txt 插入文件
  • ZZ 保存退出

shell提示符

  • $PS1

提示符中用到的转义字符

  • \a 以 ASCII 格式编码的铃声 . 当遇到这个转义序列时,计算机会发出嗡嗡的响声。
  • \d 以日,月,天格式来表示当前日期。例如,“Mon May 26.”
  • \h 本地机的主机名,但不带末尾的域名。
  • \H 完整的主机名。
  • \j 运行在当前 shell 会话中的工作数。
  • \l 当前终端设备名。
  • \n 一个换行符。
  • \r 一个回车符。
  • \s shell 程序名。
  • \t 以24小时制,hours:minutes:seconds 的格式表示当前时间.
  • \T 以12小时制表示当前时间。
  • \@ 以12小时制,AM/PM 格式来表示当前时间。
  • \A 以24小时制,hours:minutes 格式表示当前时间。
  • \u 当前用户名。
  • \v shell 程序的版本号。
  • \V Version and release numbers of the shell.
  • \w 当前工作目录名。
  • \W 当前工作目录名的最后部分。
  • \! 当前命令的历史号。
  • \# 当前 shell 会话中的命令数。
  • \$ 这会显示一个"$“字符,除非你拥有超级用户权限。在那种情况下, 它会显示一个”#“字符。
  • \[ 标志着一系列一个或多个非打印字符的开始。这被用来嵌入非打印 的控制字符,这些字符以某种方式来操作终端仿真器,比方说移动光标或者是更改文本颜色。
  • \] 标志着非打印字符序列结束。