日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux局部变量特殊字符替换,变量,全局变量,环境变量,特殊符号、管道符命令:cut、sort、uniq、wc、tee、tr、sp...

發布時間:2024/1/23 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux局部变量特殊字符替换,变量,全局变量,环境变量,特殊符号、管道符命令:cut、sort、uniq、wc、tee、tr、sp... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

變量

常見的變量:

PATH:決定shell在哪些目錄下尋找命令和程序;

HOME:家目錄;

PWD:當前目錄;

LOGNAME:當前用戶名稱;

env命令:

查看常見變量;

HOSTNAME:表示主機的名稱。

SHELL:表示當前用戶的shell類型。

HISTSIZE:表示歷史記錄數。

MAIL:表示當前用戶的郵件存放目錄。

PATH:該變量決定了shell將到哪些目錄中尋找命令或程序。

PWD:表示當前目錄。

LANG:這是與語言相關的環境變量,多語言環境可以修改此環境變量。

HOME:表示當前用戶的家目錄。

?

set命令:

查看全部系統以及自己定義變量;

如果想讓設定的環境變量永久有效,有以下兩種方法:

允許系統內所有用戶登錄后都能使用該變量。具體的操作方法是:在/etc/profile文件的最后一行加入export myname=jinkai,然后運行source /etc/profile就可以生效了。此時再運行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

如僅允許當前用戶使用該變量。具體的操作方法是:在用戶主目錄下的.bashrc文件的最后一行加入export myname=jinkai,然后運行source .bashrc就可以生效了。這時再登錄test賬戶,myname變量則不會生效了。這里source命令的作用是將目前設定的配置刷新,即不用注銷再登錄也能生效。

[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 ~]$

自定義的變量規則:

設定變量的格式為a=b,其中a為變量名,b為變量的內容,等號兩邊不能有空格。

變量名只能由字母、數字以及下劃線組成,而且不能以數字開頭。

當變量內容帶有特殊字符(如空格)時,需要加上單引號。

實驗1:特殊符號變量,必須加單引號;

[linuxprobe@jinkai01 ~]$ myname='jin kai'

[linuxprobe@jinkai01 ~]$ echo $myname

jin kai

實驗2:變量內容本身帶有單引號,這時就需要加雙引號

[linuxprobe@jinkai01 ~]$ myname="jin'kai"

[linuxprobe@jinkai01 ~]$ echo $myname

jin'kai

實驗3:如果變量內容中需要使用到其他命令,運行結果則可以使用反引號

[linuxprobe@jinkai01 ~]$ name=pwd

[linuxprobe@jinkai01 ~]$ echo $name

/home/linuxprobe

實驗4:變量內容可以累加其他變量的內容,但需要加雙引號

[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

#沒有使用全局變量前,切換一個環境,變量不生效了

[root@jinkai01 ~]# exit

exit

[root@jinkai01 ~]# export abc

[root@jinkai01 ~]# echo $abc

123

[root@jinkai01 ~]# bash

[root@jinkai01 ~]# echo $abc

123 #設定全局變量后,切換環境,變量依然生效

取消全局變量:

格式:

unset [變量名]

[root@jinkai01 ~]# echo $abc

123

[root@jinkai01 ~]# unset abc

[root@jinkai01 ~]# echo $abc

[root@jinkai01 ~]#

pstree

pstree命令需要安裝psmisc包;

yum -y install psmisc

查看當前所在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}

進入新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

環境變量

全局的變量(針對所有用戶):

/etc/profile :用戶環境變量、交互、登錄才執行;

/etc/bashrc : 用戶不用登錄、執行shell就生效;(這個文件主要預設umask以及PS1)

個人用戶home變量文件(只針對當前用戶):

.bash_profile:該文件定義了用戶的個人化路徑與環境變量的文件名稱。每個用戶都可使用 該文件輸入專屬于自己的shell信息,當用戶登錄時,該文件僅僅執行一次。

.bashrc:該文件包含專屬于自己的shell的bash信息,當登錄或每次打開新的shell時,該文件 會被讀取。例如,你可以將用戶自定義的別名或者自定義變量寫到這個文件中。

.bash_history:該文件用于記錄命令歷史。

.bash_logout:當退出shell時,會執行該文件。你可以將一些清理的工作放到這個文件中。

PS1變量

當我們登錄系統后,命令的最左邊會顯示:

[root@jinkai01 ~]#

怎樣控制這個顯示,那么就要說到PS1變量;

PS1變量定義在 /etc/bashrc 文件下面;

[root@jinkai01 ~]# echo $PS1

[\u@\h \W]\$

[root@jinkai01 ~]#

u@:代表用戶名

h:代表hostname

W:代表最后一個路徑

注意:可將大W改小w 顯示為絕對完全路徑

實驗1:修改顯示為絕對路徑;

[root@jinkai01 ~]# PS1='[\u@\h \w]\$'

[root@jinkai01 ~]#cd /etc/sysconfig/

[root@jinkai01 /etc/sysconfig]#

特殊符號

號* 任意個任意字符

號?任意一個字符

號 # 注釋字符

\ 脫義字符

| 管道符

$變量前面的標識符,還可以和!結合使用。

!$ 表示上條命令中的最后一個變量,例如ls a.txt,那么當前命令下輸入!$則代表a.txt

;多條命令寫到一行,用分號分隔

~ 用戶家目錄

& 放到命令后面,會把命令丟到后臺執行,例如:sleep 300 &

;> :輸出重定向

;>> :追加重定向

2> :錯誤輸出重定向

2>> :錯誤追加重定向

&>:正確和錯誤結果重定向到一個文件

[ ] :方括號表示指定字符中的一個,【0-9】,【a-zA-Z】,【abc】;

||和&& 判斷語句,用于命令之間;(|| 或的意思 ls 1.txt || ls 2.txt 如果執行ls 1.txt成功 就不會執行ls 2.txt)

(&& 是and的意思 ls 1.txt && ls 2.txt 表示 如果ls 1.txt 執行成功 才會執行 ls 2.txt)

管道符命令

cut命令:

作用:截取文件部分顯示

格式:cut -d ‘分割字符’ [-cf] 數字

-d 后面跟分隔符,分割字符要用單引號括起來

-f指定段數

-c后面接的是第幾個字符;

顯示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:表示使用純數字排序

-r:表示使用反向排序

-t:后面跟分割字符,作用跟cut 的 -d 選項一樣

-kn1/-kn1,n2:表示由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序

如果sort 不加任何選項,則從首字符向后依次按照ASCII碼值進行比較,最后將它們按升序輸出

實驗:將psswd 按ACISS編碼排序從a-z順序;

sort /etc/passwd #仔細看首字符字母順序

[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命令

作用:統計文件行數、字符數或詞數;

-l: 統計文件行數;

-m:統計字符數(換行符也會計算在內)#cat -A 可以看到文件換行符

-w:統計詞 (空白作為分隔)

統計/etc/passwd 有多少行

[root@jinkai01 /etc]#wc -l /etc/passwd

19 /etc/passwd

[root@jinkai01 /etc]#

uniq命令

作用:去重復(去重復內容只限于相鄰段),配合sort排序然后再去重復,-c 統計重復的行數,并把行數寫在前面;

實驗1:不排序去重復;

[root@jinkai01 /etc]#cat a.txt

abc

222

abc

111

111

[root@jinkai01 /etc]#uniq a.txt

abc

222

abc

111

結果:abc沒有去重復,因為不相鄰

實驗2:排序去重復;結合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 先給排序,然后把輸出結果通過管道符給后面去執行

tee命令

作用:相當于>命令,也就是輸出重定向,但是可以顯示;

參數-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:表示刪除某個字符,后面跟要刪除的字符

-s:表示刪除重復的字符

實驗:把小寫字母換成大寫字母,如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

實驗:還可以替換字符

[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命令

作用:切割命令,將一個大的文件分割成多個文件;

-b表示依據大小來分割(默認單位字節),

-l 表示依據行數來分割;

實驗1:按大小來分割文件;

[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

可以指定目標文件名

[root@jinkai01 /etc/aa]#rm -f xa*

[root@jinkai01 /etc/aa]#split -b 500 passwd 123

[root@jinkai01 /etc/aa]#ls

123aa 123ab passwd

實驗2:按行數來分割文件;

[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

總結

以上是生活随笔為你收集整理的linux局部变量特殊字符替换,变量,全局变量,环境变量,特殊符号、管道符命令:cut、sort、uniq、wc、tee、tr、sp...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。