1.source命令
source 配置文件 # 立即是配置文件生效
. 配置文件 # ./ 是當(dāng)前文件夾 .后加空格效果等于source
2.配置文件
/etc/profile #對(duì)每個(gè)用戶起作用
/etc/profile.d/*.sh
/etc/bashrc
~/bash_profile #每個(gè)用戶的配置文件
~/.bashrc
~/.bash_logout #退出執(zhí)行
PS1變量
umash
PATH
umask
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/20369CE2-564A-4E06-A944-684EC910E649.png)
3.登錄提示信息(issue只對(duì)本機(jī)妓灌,如果issue.net遠(yuǎn)程登錄)
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/C9BED461-9647-4109-9A04-0EAACC857562.png)
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/7E325742-2430-4127-96A3-0C6B6A035821.png)
4.退出歡迎
/etc/motd #遠(yuǎn)程和本地都可以
5.echo命令
mac@MacBook-Air ~/Desktop echo -e "\e[1;31m 我喜歡你蘭老師,我要追你 \e[0m"
我喜歡你蘭老師沟娱,我要追你
\n #換行
\t #table
30m | 31m | 32m | 33m | 34m | 35m | 36m | 37m |
---|---|---|---|---|---|---|---|
黑色 | 紅色 | 綠色 | 黃色 | 藍(lán)色 | 洋紅 | 青色 | 白色 |
一嗡官、Bash的基礎(chǔ)功能
-
歷史別名和快捷鍵
alias mvn="/Users/liuxin/Desktop/apache-maven-3.2.1/bin"
-
輸出重定向
- 鍵盤(pán)輸出 /dev/stdin 0
- 顯示輸出 /dev/stdout 1
- 錯(cuò)誤輸出 /dev/stderr 2
- 覆蓋重定向 >
- 追加重定向 >>
- 輸出報(bào)錯(cuò)信息 2>
- 命令 >~/text 2>&1 如果命令正確就寫(xiě)到text中恋日,錯(cuò)誤就輸出到2里然后在輸出到1里面
- 命令&>~/text 等同于上一個(gè),簡(jiǎn)單寫(xiě)法
- 命令>文件1 2>文件2 把正確的放文件1嘹狞,錯(cuò)誤的放到文件2
-
多命令順序執(zhí)行
- ; 多個(gè)命令順序執(zhí)行 【缺點(diǎn)就是錯(cuò)誤了岂膳,后面也執(zhí)行】
- && 連接服 【如果錯(cuò)就不執(zhí)行】
- 命令1&&命令2 【命令1對(duì)就執(zhí)行命令2,不對(duì)就不執(zhí)行2了】
- 命令1||命令2 【 命令1錯(cuò)誤了磅网,就執(zhí)行命令2谈截,對(duì)了就不執(zhí)行命令2
- ls && echo yes || echo no 【 如果正確就yes如果錯(cuò)了就no
-
輸入重定向(crtl+d查看)
- -c 統(tǒng)計(jì)字節(jié)數(shù)
- -w 統(tǒng)計(jì)單詞數(shù)
- -i 統(tǒng)計(jì)行數(shù)
- wc < access.log 或者wc access.log 統(tǒng)計(jì)文件
- Wc << ddy 當(dāng)輸入的內(nèi)容中遇到ddy就結(jié)束,開(kāi)始統(tǒng)計(jì)
-
Shell統(tǒng)配符號(hào)
- ? 匹配一個(gè)任意字符
- * 匹配0個(gè)或多個(gè)
- [] 匹配中括號(hào)中任意一個(gè)
- [-] 匹配中括號(hào)中范圍 [a-z]任何一個(gè) 一個(gè)
- [^] 不匹配中括號(hào)中范圍 [^a-z]
-
管道福
- 命令1 | 命令2 【命令1的內(nèi)容涧偷,作為命令2的條件】
- ls -i /etc | more 【分屏幕查看】
-
黑洞
- ls &>/dev/null 所有信息簸喂,都扔了不看
二、Bash變量
export
變量名=變量值-
Bash 進(jìn)入子shell 然后export y=123 然后set就能看到y(tǒng)的變量
mac@MacBook-Air ~/Desktop bash bash-3.2$ export y=123 bash-3.2$ set
-
Locale 查看語(yǔ)系 等同于 echo $LANG
mac@MacBook-Air ~/Desktop echo $LANG zh_CN.UTF-8
-
位置參數(shù)變量
$n n為數(shù)字燎潮,$0代表命令本身娘赴,$1-$9 代表第一到第九個(gè)參數(shù),十以上參數(shù)跟啤,需要大括號(hào)${10} $* 這個(gè)變量代表命令行中所有的參數(shù)诽表,$* 把所有參數(shù)看成一個(gè)整體 $@ 這個(gè)把命令行中參數(shù)區(qū)別對(duì)待,可以遍歷 $# 這個(gè)變量代表命令行中所有參數(shù)的個(gè)數(shù) $? 返回零代表執(zhí)行成功隅肥,反之失敗 $$ 當(dāng)前進(jìn)程號(hào) $! 后臺(tái)運(yùn)行進(jìn)程號(hào) ?
#!bin/shell num1=$1 num2=$2 sum=$(($num1+$num2)) # 雙括號(hào)竿奏,如果是單括號(hào),是輸出字符串腥放,雙括號(hào)是計(jì)算 echo $sum
#!bin/shell #在當(dāng)前目錄下創(chuàng)建num1目錄泛啸,然后進(jìn)入num1目錄創(chuàng)建num2目錄 num1=$1 num2=$2 cd ./ mkdir $1 cd ./$1 mkdir $2
?
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/6021D4E2-A302-455B-9162-B78530DCA613.png)
#!bin/bash
for i in "$@"
do
echo "$i"
done
- Read 鍵盤(pán)接受變量
參數(shù) | 解釋 |
---|---|
-p | 提示信息 |
-t | 秒數(shù) |
-n | 字符限制 |
-s | 隱藏輸入 |
#!/bin/bash
read -p "please input your name:" name
echo "你好,$name 先生"
#!/bin/bash
#時(shí)間限制30秒
read -p "please input your name in 30s:" -t 30 name
echo "你好,$name 先生"
#!/bin/bash
#隱藏輸入
read -p "please input your password:" -s password
echo "你好,$name 先生"
#!/bin/bash
#只允許接受一個(gè)字符,如果不是一個(gè)就終止運(yùn)行
read -p "please input [y|n] end:" -n 1 pw
echo "退出成功"
四秃症、bash運(yùn)算符
-
declare 聲明變量類(lèi)型
declare [+/-] [選項(xiàng)] 變量名 > - :給變量設(shè)定類(lèi)型屬性 > + :取消變量的類(lèi)型屬性 > -a:將變量聲明為數(shù)組型 > -i:將變量聲明為整數(shù)類(lèi)型(integer) > -x:將變量聲明為環(huán)境變量 > -r:將變量聲明為只讀變量 > -p:顯示指定變量的被聲明的類(lèi)型
movie[0]=1 movie[1]=2 declare -a movie[2]=3 echo ${movie} echo ${movie[2]} echo ${movie[*]}
-
字符串截取命令
- cut 字段提取
- -f 列號(hào):提取第幾列
- -d 分隔符: 按照指定分隔符分割 默認(rèn)是table
mac@MacBook-Air ~/Desktop/ssh cat student UID NAME 1 liuxin 2 ayu 3 haoliang 4 sunxiao # 提取包含i的行數(shù)候址,但是不包含sun mac@MacBook-Air ~/Desktop/ssh grep i student | grep -v sun 1 liuxin 3 haoliang # 截取第二列 默認(rèn)是table分隔符 mac@MacBook-Air ~/Desktop/ssh grep i student | grep -v sun | cut -f 2 liuxin haoliang mac@MacBook-Air ~/Desktop/ssh grep i student | grep -v sun | cut -f 2 liuxin haoliang
#包含bin/bash的行 mac@MacBook-Air ~/Desktop/ssh grep bin/bash /etc/passwd _mbsetupuser:*:248:248:Setup User:/var/setup:/bin/bash #通過(guò):分割的第五列 mac@MacBook-Air ~/Desktop/ssh grep bin/bash /etc/passwd | cut -f 5 -d ":" Setup User
?
- printf
- awk
- grep
- -v 取反
- cut 字段提取
五、邏輯判斷語(yǔ)句
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/709FED10-B1FA-4C82-BDAB-890B9BFFB681.png)
-e 文件是否存在
-
-d 目錄是否存在
test -e /root/bin/install.log test -d /root [-e /root/bin/install.log] [-d /root]
?
文件權(quán)限判斷![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/26D69B84-DA59-46BF-BB4F-5E56861F8CE8.png)
-
兩個(gè)文件之間進(jìn)行比較
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/10E950D3-F1F7-4127-BC5F-9A50BB809069.png)
-
兩個(gè)整數(shù)之間比較
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/E55462AA-4FC2-4CC5-9982-84210E1CCE84.png)
-
字符串判斷
![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/17CAD21B-0719-4764-8A2E-EF4C9767CFED.png)
多重判斷![](/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1213327162/QQ/Temp.db/5107B155-D778-44F1-ADCF-F5EA62B13314.png)
六种柑、流程控制語(yǔ)句
-
單分支if語(yǔ)句
if [];then 程序 fi --- if[] then 程序 fi
read -p "請(qǐng)輸入你的項(xiàng)目名:" projectName read -p "請(qǐng)輸入動(dòng)物名:" groupId read -p "請(qǐng)輸入服務(wù)名:" categoryId echo -e "\e[1;31m 正在為你創(chuàng)建 $projectName 項(xiàng)目... \e[0m " pro=$projectName animal=$groupId category=$categoryId mkdir $pro && $pro創(chuàng)建完整 || $pro 創(chuàng)建失敗 cd $pro mkdir src cd src mkdir main mkdir test cd main mkdir java mkdir resources cd java mkdir $animal cd $animal mkdir $category mkdir domain mkdir base mkdir config mkdir dao mkdir manager mkdir modle mkdir rest mkdir service mkdir util cd dao mkdir impl cd ../modle mkdir do mkdir dto mkdir vo cd ../service mkdir impl cd ../../resources mkdir config cd ../ touch application.properties touch application-test.properties touch application-pro.properties touch application-stg.properties
?
shell正式開(kāi)始
第一個(gè)腳本
#!/bin/bash
#創(chuàng)建項(xiàng)目
read -p "請(qǐng)輸入你的項(xiàng)目名:" projectName
read -p "請(qǐng)輸入動(dòng)物名:" groupId
read -p "請(qǐng)輸入服務(wù)名:" categoryId
if [-z $projectName]
then
read -p "請(qǐng)檢查輸入的內(nèi)容是否為空岗仑,輸入yes退出" -n 1 pw
fi
if [-z $groupId]
then
read -p "請(qǐng)檢查輸入的內(nèi)容是否為空,輸入yes退出" -n 1 pw
fi
if [-z categoryId]
then
read -p "請(qǐng)檢查輸入的內(nèi)容是否為空聚请,輸入yes退出" -n 1 pw
fi
pro=$projectName
animal=$groupId
category=$categoryId
mkdir $pro
cd $pro
mkdir src
cd src
mkdir main
mkdir test
cd main
mkdir java
mkdir resources
cd java
mkdir $animal
cd $animal
mkdir $category
mkdir domain
mkdir base
mkdir config
mkdir dao
mkdir manager
mkdir modle
mkdir rest
mkdir service
mkdir util
cd dao
mkdir impl
cd ../modle
mkdir do
mkdir dto
mkdir vo
cd ../service
mkdir impl
cd ../../../resources
mkdir config
touch application.properties
touch application-test.properties
touch application-pro.properties
touch application-stg.properties
cd ../../../
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
echo -e "\033[41;37m 已經(jīng)為你創(chuàng)建完成 $pro 項(xiàng)目 \033[0m"