vim /etc/profiel.d/PS1.sh _set_prompt () { _last_exit_code=$? # Must come first! C_EC='\[\e[1;37m\]'$(printf'%3s'${_last_exit_code})'\[\e[0m\]' #todo: set encoding to UTF-8 ! FancyX='\342\234\227'# ✗ ✘ Checkmark='\342\234\223'# ✓ ✔ C_Fail='\[\e[1;31m\]'${FancyX}'\[\e[0m\]' C_Ok='\[\e[32m\]'${Checkmark}'\[\e[0m\]' C_Time='\[\e[2;37m\]''\t''\[\e[0m\]' C_NormalUser='\[\e[2;33m\]''\u''\[\e[0m\]' C_RootUser='\[\e[1;35m\]''\u''\[\e[0m\]' if [ $(uname -s) == "Darwin" ]; then _ip_addr=$(ipconfig getifaddr $(netstat -nr | awk '{ if ($1 ~/default/) { print $6} }')) elif [ $(uname -s) == "Linux" ]; then # may print $(NF-2) #_ip_addr=$(ip route | awk '/ src / {print $NF}' | head -1 ) _ip_addr=$(ip route | grep -oP '(?<=src )[0-9.]+' | tail -1 ) fi C_Host='\[\e[1;33m\]'$(hostname -A | awk '{print $1}')'\[\e[0m\]','\[\e[4;32m\]'${_ip_addr:-\h}'\[\e[0m\]' C_Pwd='\[\e[36m\]''\w''\[\e[0m\]' C_Marker='\[\e[1;37m\]''\$''\[\e[0m\]' git diff --exit-code --quiet HEAD >/dev/null 2>&1 _git_diff_exit_code=$? if [ ${_git_diff_exit_code} -eq 1 ]; then C_Marker='\[\e[101m\]'*'\[\e[0m\]'" ${C_Marker}" elif [ ${_git_diff_exit_code} -eq 0 ]; then C_Marker='\[\e[102m\]'='\[\e[0m\]'" ${C_Marker}" fi # Add a bright white exit status for the last command PS1="$C_EC " # If it was successful, print a green check mark. # Otherwise, print a red X. if [[ ${_last_exit_code} -eq 0 ]]; then PS1+="$C_Ok " else PS1+="$C_Fail " fi # print HH:ii:ss PS1+="$C_Time " # If root, just print the host in red. Otherwise, # print the current user and host in green. if [[ $EUID -eq 0 ]]; then PS1+="${C_RootUser}@${C_Host}:" else PS1+="${C_NormalUser}@${C_Host}:" fi # Print the working directory and prompt marker PS1+="$C_Pwd$C_Marker " } PROMPT_COMMAND='_set_prompt'
Bash特性
基础语法
在语法中,中括号是可有可无的意思
命令
选项
参数
command
[options]
[arguments]
查看目录ls
选项
说明
-l
长格式显示详细信息
-a
显示所有文件,包括隐藏文件
-d
当遇到目录时列出目录本身而非目录内的文件
-h
显示文件大小,KB
-i
查看该文件的inode号
-F
在条目中追加指示符’/‘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#语法 ls [options] [文件名]
#示例 [root@web ~]# ls //命令 [root@web ~]# ls -l //命令+选项 [root@web ~]# ls -l /home/ //命令+选项+参数 #命令:整条shell命令的主体 #选项:用于调节命令的具体功能 - 以'-'引导段个事选项(单个字符),例如”-a“ - 以'--'引导长格式选项(多个字符),例如”--all“ - 多个短格式选项可以卸载一起,只用一个”-“引导,例如”-la“ #参数:命令操作的对象,如文件、目录名等
Ctrl + a #光标跳转至正在输入的命令行的首部 Ctrl + e #光标跳转至正在输入的命令行的尾部 Ctrl + w #按照空格来删除bash内容 Ctrl + c #终止前台运行的程序 Ctrl + d #在shell中,ctrl-d表示退出当前shell。(logout、exit) Ctrl + z #将任务暂停,挂至后台 Ctrl + l #清屏,和clear命令等效。 Ctrl + k #删除从光标到行末的所有字符 Ctrl + u #删除从光标到行首的所有字符 Ctrl + r #搜索历史命令, 利用关键字 Ctrl + 左右 #按照单词快速跳转光标(Xshell提供的) ESC + . #获取最后的指令