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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux字符雨,linux周记

發(fā)布時(shí)間:2023/12/3 linux 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux字符雨,linux周记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

shell腳本基礎(chǔ)

格式要求:首行shebaang機(jī)制

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

shell腳本用途:

自動(dòng)化常用命令

執(zhí)行系統(tǒng)管理和故障排除

創(chuàng)建簡(jiǎn)單的應(yīng)用程序

處理文本或文件

bash中變量的種類

局部變量:生效范圍為當(dāng)前shell進(jìn)程;對(duì)當(dāng)前shell之外的其他shell進(jìn)程,包括當(dāng)前shell的子shell進(jìn)程均無(wú)效

環(huán)境變量:生效范圍為當(dāng)前shell進(jìn)程及其子進(jìn)程

本地變量:生效范圍為當(dāng)前shell進(jìn)程中某代碼片段,通常指函數(shù)

位置變量:$1,$2,$3,...來(lái)表示,用于讓腳本在腳本代碼中調(diào)用通過(guò)命令行傳遞給它的參數(shù)

特殊變量:$?,$0,$,$@,$#,$$,$!

變量賦值:? name=root ??變量疊加name="$name"hello

變量引用:? $name 或者 ${name}

弱引用:?? " " 其中的變量引用會(huì)被替換為變量值

強(qiáng)引用:?? ' ' 其中的變量引用不會(huì)被替換為變量值,而保持原字符串

set:????顯示已定義的所有變量

unset name:?刪除變量

例:編寫(xiě)腳本顯示當(dāng)前主機(jī)信息

#!/bin/bash

aa=$[RANDOM%7+31]

bb="\e[1;${aa}m"

cc="\e[0m"

ipv4=$(ifconfig|sed -n '2p'|sed -r "s/.inet //"|sed -r "s/ .//")

echo "當(dāng)前主機(jī)系統(tǒng)信息如下:"

echo -e 主機(jī)名: $bb$(hostname)$cc

echo -e ipv4地址:$bb$ipv4$cc

echo -e 操作系統(tǒng)版本: $bb$(cat /etc/redhat-release|cut -d. -f1-2)$cc

echo -e 內(nèi)核版本 $bb$(uname -r)$cc

echo -e CPU型號(hào):$bb$(lscpu |grep "Model name"|tail -n1|tr -s " "|cut -d ":" -f2)$cc

echo -e 內(nèi)存大小:$bb$(free -mh|head -n2|tail -n1|tr -s " "|cut -d " " -f2)$cc

echo -e 硬盤(pán)容量:$bb$(fdisk -l|head -n2|tail -n1|cut -d, -f1|cut -d " " -f2-4)$cc

環(huán)境變量的聲明、賦值:

export name=VALUE

顯示所有環(huán)境變量:

env、printenv、export、declare -x

刪除變量:

unset name

BASH內(nèi)建的環(huán)境變量:

PATH、SHELL、USER、UID、HOME、PWD、SHLVL、LANG、MAIL、HOSTNAME、HISTSIZE、_下劃線

只讀變量:只能聲明,但不能修改和刪除

聲明只讀變量:

readonly name 、declare -r name

查看只讀變量:

readonly -p

$1,$2,$3,..對(duì)應(yīng)第1、第2、第3的參數(shù)

$0,???代表命令本身

$,???傳遞給腳本的所有參數(shù),全部參數(shù)合為一個(gè)字符串

$@,??傳遞給腳本的所有參數(shù),每個(gè)參數(shù)為獨(dú)立字符串

$#,? ? 傳遞給腳本的參數(shù)的個(gè)數(shù)

set -- ??清空所有位置變量

$? ??? 進(jìn)程使用退出狀態(tài)來(lái)報(bào)告成功或失敗,0代表成功,1-255代表失敗

bash有內(nèi)建的隨機(jī)數(shù)生成器變量:$RANDOM(0-32767)

例:計(jì)算/etc/passwd文件中第10和第20個(gè)用戶的uid之和

##!/bin/bash

id1=$(cat /etc/passwd|head -n10|tail -n1|cut -d: -f3)

id2=$(cat /etc/passwd|head -n20|tail -n1|cut -d: -f3)

sum=$(($id1+$id2))

echo $sum

邏輯運(yùn)算

true 1 , false 0

與:

1 與 1 = 1

1 與 0 = 0

0 與 1 = 0

0 與 0 = 0

1 或 1 = 1

1 或 0 = 1

0 或 1 = 1

0 或 0 = 0

!

測(cè)試命令: test EXPRESSION、[ EXPRESSION ] 、[[ EXPRESSION ]]

bash的數(shù)值測(cè)試

-v VAR 變量VAR是否設(shè)置

-gt 是否大于

-ge 是否大于等于

-eq 是否等于

-ne 是否不等于

-lt 是否小于

-le 是否小于等于

bash的字符串測(cè)試

= 是否等于

> ascii碼是否大于ascii碼

< 是否小于

!= 是否不等于

=~ 左側(cè)字符串是否能夠被右側(cè)的PATTERN,此表達(dá)式一般用于[[]]中;擴(kuò)展的正則表達(dá)式。

-z 字符串是否為空,空為真

-n 字符串是否不為空,不空為真 (用于字符串比較時(shí)用到的操作都應(yīng)該使用引號(hào))

bash的文件測(cè)試

-e 判斷文件是否存在,存在為真

-b 判斷是否為塊設(shè)備文件

-c 判斷是否為字符設(shè)備文件

-d 判斷是否為目錄文件

-f 判斷是否為普通文件

-L或-h判斷是否為符號(hào)連接文件

-p 判斷是否為管道文件

-S 判斷是否為套接字文件

bash的文件權(quán)限測(cè)試

-r 判斷是否可讀

-w 判斷是否可寫(xiě)

-x 判斷是否可執(zhí)行

-u 判斷是否擁有suid權(quán)限

-g 判斷是否擁有sgid權(quán)限

-k 判斷是否擁有sticky權(quán)限

bash的文件屬性測(cè)試

-s 是否存在并且非空

-t 文件描述符是否在某終端已經(jīng)打開(kāi)

-N 文件自從上一次被讀取之后是否被修改過(guò)

-O 當(dāng)前有效用戶是否為文件屬主

-G 當(dāng)前有效用戶是否為文件屬組

file1 -ef file2 ??file1是否是file2的硬鏈接

file1 -nt file2 ??file1是否比f(wàn)ile2新

file1 -ot file2 ??file1是否比f(wàn)ile2舊

bash的組合測(cè)試條件

EXPRESSION1 -a EXPRESSION2 ?并且

EXPRESSION1 -o EXPRESSION2 ?或者

COMMAND1 && COMMAND2 ?并且,短路與

COMMAND1 || COMMAND2 ?或者,短路或

!COMMAND 非

如 :[ -f "$FILE" ]&&[[ "$FILE" =~ .*.sh$ ]]

read輸入命令

-p 指定要顯示的提示

-s 靜默輸入,一般用于密碼

-n 指定輸入的字符長(zhǎng)度

-d ‘字符’ 輸入結(jié)束符

-t 等待輸入的時(shí)間

echo abc | { read x y z;echo $x$y$z;} ?使用管道 read會(huì)開(kāi)啟子shell

條件選擇if語(yǔ)句

單分支

if 判斷條件;then

條件為真的分支代碼

fi

例:

#!/bin/bash

sda5=$(df -h|grep /dev/sda5|awk '{print$5}'|tr -d "%")

if [ $sda5 -ge 80 ]

then

echo "warning! /dev/sda5 is full"

fi

雙分支

if 判斷條件;then

條件為真的分支代碼

else

條件為假的分支代碼

fi

例:

#!/bin/bash

date=$(date "+%y%m%d")

size=$(du -sh /etc)

if [ -d /tmp/back ]

then

echo "date:$date">/tmp/back/info.log

echo "size:$size">>/tmp/back/info.log

cd /tmp/back

tar -zcvf etc-$date.tar.bz2 /etc info.log &>/dev/null

rm -rf /tmp/back/info.log

else

mkdir /tmp/back

echo "date:$date">/tmp/back/info.log

echo "size:$size">>/tmp/back/info.log

cd /tmp/back

tar -zcvf etc-$date.tar.bz2 /etc info.log &>/dev/null

rm -rf /tmp/back/info.log

fi

多分支

if 判斷條件1;then

條件為真的分支代碼

elif 判斷條件2;then

條件2為真的分支代碼

elif 判斷條件3;then

條件3為真的分支代碼

else

以上條件都為假的分支代碼

fi

條件判斷;case語(yǔ)句

case $變量 in

"選項(xiàng)1")

命令1

;;

"選項(xiàng)2")

命令2

;;

*)

命令3

;;

esac

bash的配置文件

全局配置:

/etc/profile

/etc/profile.d/.sh

/etc/bashrc

個(gè)人配置:

~/.bash_profile

~/.bashrc

shell 登錄兩種方式

交互式登錄:

執(zhí)行順序:/etc/profile --> /etc/profile.d/.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登錄:

執(zhí)行順序:/etc/profile.d/*.sh --> /etc/bashrc --> ~/.bashrc

profile類:為交互式登錄的shell提供配置

bashrc類:為非交互式和交互式登錄的shell提供配置

local命令

-i 不區(qū)分大小寫(xiě)的搜索

-n N 只列舉前N個(gè)匹配項(xiàng)目

-r 使用基本正則表達(dá)式

find 路徑 條件 動(dòng)作

-maxdepth 最大搜索深度

-mindepth 最小搜索深度

-depth 先處理目錄里文件,再處理目錄

-regex 正則表達(dá)式

-path 不搜索目錄里文件

-perm 600 精準(zhǔn)權(quán)限查找

-perm -444 u g o 三者都有讀權(quán)限

-perm + centos7改為/

-perm /222 u g o 三者有一個(gè)有寫(xiě)權(quán)限就可以

-ok-exec {} \; 對(duì)查找的結(jié)果進(jìn)行處理

-empty 空

參數(shù)替換 xargs

echo {1..100}|xargs -n1

echo user{1..10}|xargs -n1 useradd

壓縮、解壓縮

compress

-d 解壓縮

-c 結(jié)果輸出至標(biāo)準(zhǔn)輸出,不刪除源文件

-v 顯示詳情

zcat file.z? zcat file.gz ?bzcat file.bz2 ?xzcat file.xz ?不顯示解壓縮的前提下查看文本文件內(nèi)容

cat m | gzip > m.gz

lscpu | gzip > cpu.gz

bzip2 -k 保留原文件

tar -zcvf ??.tar.gz

tar -jcvf ??.tar.bz2

tar -Jcvf ??.tar.xz

split 分割一個(gè)文件為多個(gè)文件

rpm2cpio 包路徑 | cpio -idv ./路徑

-t預(yù)覽

ldd 查看依賴的庫(kù)

文本處理工具sed

選項(xiàng):

-n 不輸出模式空間內(nèi)容到屏幕,即不自動(dòng)打印

-e 多點(diǎn)編輯

-r 支持使用擴(kuò)展正則表達(dá)式

-i 原文編輯

-i.bak 備份文件并原處編輯

編輯命令:

d 刪除模式空間匹配的行,并立即啟用下一輪循環(huán)

p 打印當(dāng)前模式空間內(nèi)容,追加到默認(rèn)輸出之后

a\ 在指定行后面追加文本,

i\ 在前面插入文本

c\ 替換行為單行或多行文本

w 保存至指定文件

s/// 替換查找 ?g 行內(nèi)全局替換 ?p顯示替換成功的行 ? w將替換成功的行保存至文件中

rpm包管理

rpm -ivh 安裝并顯示詳細(xì)信息

rpm -qa 顯示所有包

rpm -qf 查詢指定文件在哪個(gè)包里

rpm -ql 查詢安裝位置

rpm -qR 查詢依賴

rpm -e 卸載

rpm -V 包校驗(yàn)

yum 管理rpm包

yum源支持文件服務(wù)器 http、https、ftp、file

yum配置文件 /etc/yum.repos.d/.repo

yum -y install 包名 ?安裝軟件

yum search 包名 ? 查詢軟件

yum -y reinstall 重新安裝

yum repolist 顯示倉(cāng)庫(kù)列表

yum remove 卸載程序包

yum update 升級(jí)程序包

yum info 查看程序包

yum clean all 清除緩存

ym history 查看安裝歷史

yum history info

yum history undo 撤銷

yum history redo 重裝

createrrepo 生成repodate

curl IP 查看網(wǎng)頁(yè)內(nèi)容

yum groupinstall......

dnf 新一代rpm軟件包管理器

安裝所需軟件包

dnf-conf-0.6.4-2.sdl7.noarch.rpm

dnf-0.6.4-2.sdl7.noarch.rpm

python-dnf-0.6.4-2.sdl7.noarch.rpm

配置文件:/etc/dnf/dnf.conf

倉(cāng)庫(kù)文件:/etc/yum.repos.d/.repo

日志:/var/log/dnf.rpm.log

編譯安裝

C語(yǔ)言源代碼編譯安裝三步驟:

1、./configure

2、make 根據(jù)Makefile文件,構(gòu)建應(yīng)用程序

3、make install 復(fù)制文件到相應(yīng)路徑

開(kāi)發(fā)工具:

autoconf: 生成configure腳本

automake:生成Makefile.in

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的linux字符雨,linux周记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。