linux局部变量特殊字符替换,变量,全局变量,环境变量,特殊符号、管道符命令:cut、sort、uniq、wc、tee、tr、sp...
變量
常見(jiàn)的變量:
PATH:決定shell在哪些目錄下尋找命令和程序;
HOME:家目錄;
PWD:當(dāng)前目錄;
LOGNAME:當(dāng)前用戶名稱;
env命令:
查看常見(jiàn)變量;
HOSTNAME:表示主機(jī)的名稱。
SHELL:表示當(dāng)前用戶的shell類型。
HISTSIZE:表示歷史記錄數(shù)。
MAIL:表示當(dāng)前用戶的郵件存放目錄。
PATH:該變量決定了shell將到哪些目錄中尋找命令或程序。
PWD:表示當(dāng)前目錄。
LANG:這是與語(yǔ)言相關(guān)的環(huán)境變量,多語(yǔ)言環(huán)境可以修改此環(huán)境變量。
HOME:表示當(dāng)前用戶的家目錄。
?
set命令:
查看全部系統(tǒng)以及自己定義變量;
如果想讓設(shè)定的環(huán)境變量永久有效,有以下兩種方法:
允許系統(tǒng)內(nèi)所有用戶登錄后都能使用該變量。具體的操作方法是:在/etc/profile文件的最后一行加入export myname=jinkai,然后運(yùn)行source /etc/profile就可以生效了。此時(shí)再運(yùn)行bash命令或者切換到其他賬戶
[root@jinkai01 ~]# echo "export myname=jinkai" >> /etc/profile
[root@jinkai01 ~]# source !$
source /etc/profile
[root@jinkai01 ~]# bash
[root@jinkai01 ~]# echo $myname
jinkai
[root@jinkai01 ~]# exit
exit
root@jinkai01 ~]# su - linuxprobe
[linuxprobe@jinkai01 ~]$ echo $myname
jinkai
如僅允許當(dāng)前用戶使用該變量。具體的操作方法是:在用戶主目錄下的.bashrc文件的最后一行加入export myname=jinkai,然后運(yùn)行source .bashrc就可以生效了。這時(shí)再登錄test賬戶,myname變量則不會(huì)生效了。這里source命令的作用是將目前設(shè)定的配置刷新,即不用注銷再登錄也能生效。
[root@jinkai01 ~]# echo "export myname=jinkai" >> .bashrc
[root@jinkai01 ~]# source .bashrc
[root@jinkai01 ~]# echo $myname
jinkai
[root@jinkai01 ~]# su - linuxprobe
Last login: Mon Aug 17 22:47:20 CST 2020 on pts/0
[linuxprobe@jinkai01 ~]$ echo $myname
[linuxprobe@jinkai01 ~]$
自定義的變量規(guī)則:
設(shè)定變量的格式為a=b,其中a為變量名,b為變量的內(nèi)容,等號(hào)兩邊不能有空格。
變量名只能由字母、數(shù)字以及下劃線組成,而且不能以數(shù)字開(kāi)頭。
當(dāng)變量?jī)?nèi)容帶有特殊字符(如空格)時(shí),需要加上單引號(hào)。
實(shí)驗(yàn)1:特殊符號(hào)變量,必須加單引號(hào);
[linuxprobe@jinkai01 ~]$ myname='jin kai'
[linuxprobe@jinkai01 ~]$ echo $myname
jin kai
實(shí)驗(yàn)2:變量?jī)?nèi)容本身帶有單引號(hào),這時(shí)就需要加雙引號(hào)
[linuxprobe@jinkai01 ~]$ myname="jin'kai"
[linuxprobe@jinkai01 ~]$ echo $myname
jin'kai
實(shí)驗(yàn)3:如果變量?jī)?nèi)容中需要使用到其他命令,運(yùn)行結(jié)果則可以使用反引號(hào)
[linuxprobe@jinkai01 ~]$ name=pwd
[linuxprobe@jinkai01 ~]$ echo $name
/home/linuxprobe
實(shí)驗(yàn)4:變量?jī)?nèi)容可以累加其他變量的內(nèi)容,但需要加雙引號(hào)
[root@jinkai01 ~]# b=2
[root@jinkai01 ~]# myname="$b"a
[root@jinkai01 ~]# echo $myname
2a
定義全局變量:
格式:
export [變量名]=[變量值]
[root@jinkai01 ~]# abc=123
[root@jinkai01 ~]# echo $abc
123
[root@jinkai01 ~]# bash
[root@jinkai01 ~]# echo $abc
#沒(méi)有使用全局變量前,切換一個(gè)環(huán)境,變量不生效了
[root@jinkai01 ~]# exit
exit
[root@jinkai01 ~]# export abc
[root@jinkai01 ~]# echo $abc
123
[root@jinkai01 ~]# bash
[root@jinkai01 ~]# echo $abc
123 #設(shè)定全局變量后,切換環(huán)境,變量依然生效
取消全局變量:
格式:
unset [變量名]
[root@jinkai01 ~]# echo $abc
123
[root@jinkai01 ~]# unset abc
[root@jinkai01 ~]# echo $abc
[root@jinkai01 ~]#
pstree
pstree命令需要安裝psmisc包;
yum -y install psmisc
查看當(dāng)前所在bash
[root@jinkai01 ~]# pstree
systemd-+-NetworkManager---2[{NetworkManager}]
|-VGAuthService
|-agetty
|-auditd---{auditd}
|-crond
|-dbus-daemon---{dbus-daemon}
|-firewalld---{firewalld}
|-lvmetad
|-master-+-pickup
| `-qmgr
|-polkitd---6[{polkitd}]
|-rsyslogd---2[{rsyslogd}]
|-sshd---sshd---bash---pstree
|-systemd-journal
|-systemd-logind
|-systemd-udevd
|-tuned---4[{tuned}]
`-vmtoolsd---{vmtoolsd}
進(jìn)入新bash
[root@jinkai01 ~]# bash
[root@jinkai01 ~]# pstree
systemd-+-NetworkManager---2[{NetworkManager}]
|-VGAuthService
|-agetty
|-auditd---{auditd}
|-crond
|-dbus-daemon---{dbus-daemon}
|-firewalld---{firewalld}
|-lvmetad
|-master-+-pickup
| `-qmgr
|-polkitd---6[{polkitd}]
|-rsyslogd---2[{rsyslogd}]
|-sshd---sshd---bash---bash---pstree
|-systemd-journal
|-systemd-logind
|-systemd-udevd
|-tuned---4[{tuned}]
`-vmtoolsd---{vmtoolsd}
退出
exit
環(huán)境變量
全局的變量(針對(duì)所有用戶):
/etc/profile :用戶環(huán)境變量、交互、登錄才執(zhí)行;
/etc/bashrc : 用戶不用登錄、執(zhí)行shell就生效;(這個(gè)文件主要預(yù)設(shè)umask以及PS1)
個(gè)人用戶home變量文件(只針對(duì)當(dāng)前用戶):
.bash_profile:該文件定義了用戶的個(gè)人化路徑與環(huán)境變量的文件名稱。每個(gè)用戶都可使用 該文件輸入專屬于自己的shell信息,當(dāng)用戶登錄時(shí),該文件僅僅執(zhí)行一次。
.bashrc:該文件包含專屬于自己的shell的bash信息,當(dāng)?shù)卿浕蛎看未蜷_(kāi)新的shell時(shí),該文件 會(huì)被讀取。例如,你可以將用戶自定義的別名或者自定義變量寫(xiě)到這個(gè)文件中。
.bash_history:該文件用于記錄命令歷史。
.bash_logout:當(dāng)退出shell時(shí),會(huì)執(zhí)行該文件。你可以將一些清理的工作放到這個(gè)文件中。
PS1變量
當(dāng)我們登錄系統(tǒng)后,命令的最左邊會(huì)顯示:
[root@jinkai01 ~]#
怎樣控制這個(gè)顯示,那么就要說(shuō)到PS1變量;
PS1變量定義在 /etc/bashrc 文件下面;
[root@jinkai01 ~]# echo $PS1
[\u@\h \W]\$
[root@jinkai01 ~]#
u@:代表用戶名
h:代表hostname
W:代表最后一個(gè)路徑
注意:可將大W改小w 顯示為絕對(duì)完全路徑
實(shí)驗(yàn)1:修改顯示為絕對(duì)路徑;
[root@jinkai01 ~]# PS1='[\u@\h \w]\$'
[root@jinkai01 ~]#cd /etc/sysconfig/
[root@jinkai01 /etc/sysconfig]#
特殊符號(hào)
號(hào)* 任意個(gè)任意字符
號(hào)?任意一個(gè)字符
號(hào) # 注釋字符
\ 脫義字符
| 管道符
$變量前面的標(biāo)識(shí)符,還可以和!結(jié)合使用。
!$ 表示上條命令中的最后一個(gè)變量,例如ls a.txt,那么當(dāng)前命令下輸入!$則代表a.txt
;多條命令寫(xiě)到一行,用分號(hào)分隔
~ 用戶家目錄
& 放到命令后面,會(huì)把命令丟到后臺(tái)執(zhí)行,例如:sleep 300 &
;> :輸出重定向
;>> :追加重定向
2> :錯(cuò)誤輸出重定向
2>> :錯(cuò)誤追加重定向
&>:正確和錯(cuò)誤結(jié)果重定向到一個(gè)文件
[ ] :方括號(hào)表示指定字符中的一個(gè),【0-9】,【a-zA-Z】,【abc】;
||和&& 判斷語(yǔ)句,用于命令之間;(|| 或的意思 ls 1.txt || ls 2.txt 如果執(zhí)行l(wèi)s 1.txt成功 就不會(huì)執(zhí)行l(wèi)s 2.txt)
(&& 是and的意思 ls 1.txt && ls 2.txt 表示 如果ls 1.txt 執(zhí)行成功 才會(huì)執(zhí)行 ls 2.txt)
管道符命令
cut命令:
作用:截取文件部分顯示
格式:cut -d ‘分割字符’ [-cf] 數(shù)字
-d 后面跟分隔符,分割字符要用單引號(hào)括起來(lái)
-f指定段數(shù)
-c后面接的是第幾個(gè)字符;
顯示passwd文檔的前兩段,截取:之前的1段;
cat /etc/passwd |head -2 |cut -d ":" -f 1
[root@jinkai01 /etc]#cat /etc/passwd | head -2 | cut -d ':' -f 1
root
Bin
sort命令:
作用:排序顯示;
格式:sort [ -t 分隔符 ] [ -kn1,n2 ] [-nru ]
-n:表示使用純數(shù)字排序
-r:表示使用反向排序
-t:后面跟分割字符,作用跟cut 的 -d 選項(xiàng)一樣
-kn1/-kn1,n2:表示由n1區(qū)間排序到n2區(qū)間,可以只寫(xiě)-kn1,即對(duì)n1字段排序
如果sort 不加任何選項(xiàng),則從首字符向后依次按照ASCII碼值進(jìn)行比較,最后將它們按升序輸出
實(shí)驗(yàn):將psswd 按ACISS編碼排序從a-z順序;
sort /etc/passwd #仔細(xì)看首字符字母順序
[root@jinkai01 /etc]#sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
wc命令
作用:統(tǒng)計(jì)文件行數(shù)、字符數(shù)或詞數(shù);
-l: 統(tǒng)計(jì)文件行數(shù);
-m:統(tǒng)計(jì)字符數(shù)(換行符也會(huì)計(jì)算在內(nèi))#cat -A 可以看到文件換行符
-w:統(tǒng)計(jì)詞 (空白作為分隔)
統(tǒng)計(jì)/etc/passwd 有多少行
[root@jinkai01 /etc]#wc -l /etc/passwd
19 /etc/passwd
[root@jinkai01 /etc]#
uniq命令
作用:去重復(fù)(去重復(fù)內(nèi)容只限于相鄰段),配合sort排序然后再去重復(fù),-c 統(tǒng)計(jì)重復(fù)的行數(shù),并把行數(shù)寫(xiě)在前面;
實(shí)驗(yàn)1:不排序去重復(fù);
[root@jinkai01 /etc]#cat a.txt
abc
222
abc
111
111
[root@jinkai01 /etc]#uniq a.txt
abc
222
abc
111
結(jié)果:abc沒(méi)有去重復(fù),因?yàn)椴幌噜?/p>
實(shí)驗(yàn)2:排序去重復(fù);結(jié)合sort使用
[root@jinkai01 /etc]#cat a.txt
abc
222
abc
111
111
[root@jinkai01 /etc]#sort a.txt
111
111
222
abc
abc
[root@jinkai01 /etc]#sort a.txt | uniq
111
222
abc
sort 先給排序,然后把輸出結(jié)果通過(guò)管道符給后面去執(zhí)行
tee命令
作用:相當(dāng)于>命令,也就是輸出重定向,但是可以顯示;
參數(shù)-a:追加;
[root@jinkai01 /etc]#cat a.txt | tee 2.txt
abc
222
[root@jinkai01 /etc]#cat a.txt | tee -a 2.txt
abc
222
[root@jinkai01 /etc]#cat 2.txt
abc
222
abc
222
tr命令
作用:替換字符;
-d:表示刪除某個(gè)字符,后面跟要?jiǎng)h除的字符
-s:表示刪除重復(fù)的字符
實(shí)驗(yàn):把小寫(xiě)字母換成大寫(xiě)字母,如tr ‘[a-z]’ ‘[A-Z]’
[root@jinkai01 /etc]#head -2 /etc/passwd | tr '[a-z]' '[A-Z]'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
實(shí)驗(yàn):還可以替換字符
[root@jinkai01 /etc]#grep 'root' /etc/passwd | tr 'r' 'R'
Root:x:0:0:Root:/Root:/bin/bash
opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin
split命令
作用:切割命令,將一個(gè)大的文件分割成多個(gè)文件;
-b表示依據(jù)大小來(lái)分割(默認(rèn)單位字節(jié)),
-l 表示依據(jù)行數(shù)來(lái)分割;
實(shí)驗(yàn)1:按大小來(lái)分割文件;
[root@jinkai01 /etc]#mkdir aa
[root@jinkai01 /etc]#cp /etc/passwd aa/
[root@jinkai01 /etc]#cd aa
[root@jinkai01 /etc/aa]#split -b 500 passwd
[root@jinkai01 /etc/aa]#ls
passwd xaa xab
可以指定目標(biāo)文件名
[root@jinkai01 /etc/aa]#rm -f xa*
[root@jinkai01 /etc/aa]#split -b 500 passwd 123
[root@jinkai01 /etc/aa]#ls
123aa 123ab passwd
實(shí)驗(yàn)2:按行數(shù)來(lái)分割文件;
[root@jinkai01 /etc/aa]#split -l 10 passwd
[root@jinkai01 /etc/aa]#ls
passwd xaa xab
[root@jinkai01 /etc/aa]#wc -l *
19 passwd
10 xaa
9 xab
38 tota
總結(jié)
以上是生活随笔為你收集整理的linux局部变量特殊字符替换,变量,全局变量,环境变量,特殊符号、管道符命令:cut、sort、uniq、wc、tee、tr、sp...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux内存free低cache高,L
- 下一篇: Linux文本编辑跳到指定行,Linux