linux - shell
文章目录
shell环境
setshell或环境变量printenv环境变量echo查看变量内容alias查看别名
有趣的环境变量
DISPLAY如果你正在运行图形界面环境,那么这个变量就是你显示器的名字。通常,它是 “:0”, 意思是由 X 产生的第一个显示器。EDITOR文本编辑器的名字。SHELLshell 程序的名字。HOME用户家目录。LANG定义了字符集以及语言编码方式。OLD_PWD先前的工作目录。PAGER页输出程序的名字。这经常设置为/usr/bin/less。PATH由冒号分开的目录列表,当你输入可执行程序名后,会搜索这个目录列表。PS1Prompt 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一个回车符。\sshell 程序名。\t以24小时制,hours:minutes:seconds 的格式表示当前时间.\T以12小时制表示当前时间。\@以12小时制,AM/PM 格式来表示当前时间。\A以24小时制,hours:minutes 格式表示当前时间。\u当前用户名。\vshell 程序的版本号。\VVersion and release numbers of the shell.\w当前工作目录名。\W当前工作目录名的最后部分。\!当前命令的历史号。\#当前 shell 会话中的命令数。\$这会显示一个"$“字符,除非你拥有超级用户权限。在那种情况下, 它会显示一个”#“字符。\[标志着一系列一个或多个非打印字符的开始。这被用来嵌入非打印 的控制字符,这些字符以某种方式来操作终端仿真器,比方说移动光标或者是更改文本颜色。\]标志着非打印字符序列结束。