1. 程式人生 > 其它 >static靜態程式碼塊中的引用問題

static靜態程式碼塊中的引用問題

linux常用命令

檢視檔案:

1、cat

cat 檔名 --檢視顯示檔案內容
cat 檢視檔案內容
cat -n 檔名:顯示行號

2、tac: 倒敘檢視檔案內容


3、head

head -n 數字 檔名 ——顯示檔案的前n行
或者直接head -10 檔名 ----顯示檔案的前10行
例:head -n 3 123.log 或 head -3 123.log

4、tail

tail -n 數字 檔名 ——顯示檔案的末尾n行
或者直接tail -10 檔名——顯示檔案的末尾10行

tail -f 檔名 ——動態更新顯示檔案 ctrl+c退出
tail -fn 500 檔名 --顯示末尾500行,並實時更新



顯示日誌的前100行
head -100 123.log

顯示日誌的後20行
tail -20 123.log

顯示日誌的第100行
head -100 123.log | tail -1

顯示日誌的第10行-20行
head -20 123.log | tail -11

顯示日誌的3-6行
head -6 123.log | tail -4

5、more

more 檔名 ——分頁檢視大檔案內容,直接載入整篇檔案,消耗多餘的快取
空格顯示下一頁 回車顯示下,不能向上翻頁,只有less能向上翻頁 q退出
例:more /etc/services

6、less

less 檔名 ——分頁檢視大檔案內容,閱讀到內容才載入,節約快取


空格顯示下一頁 回車顯示下一行 q退出
w後退一頁 方向鍵↑後退一行
/關鍵字 搜尋關鍵字 按n下一個
g 檔案第一行
G 檔案末尾行

7、wc:word count:統計指定檔案中的位元組數、字數、行數。


date 顯示當前連線linux伺服器系統日期時間
date -s 12/31/2021 設定日期 月/日/年
date -s 10:30:59 設定時間 小時:分鐘:秒
date -s "10:35:00 03/11/2021" 同時設定日期時間
也可以:date -s "2021-07-25 21:36:00"

cal 檢視日曆

8、vi


vi 檔名 ——新建檔案並編輯/編輯已存在檔案指令
輸入i 進入輸入模式 --insert--


按Esc鍵 退出輸入模式 進入一般模式
按q 退出recording模式

一般模式:
:q 退出 quit --未修改內容可以直接退出
:w 儲存 write
:wq 儲存並退出
:q! 強制退出 --放棄修改,直接退出

Y 複製整行
p 黏貼到游標下方
P 黏貼到游標上方
dd 刪除一行
x 刪除游標字
X 刪除游標前一個字
:set nu 顯示序號
:n 跳轉到第n行
:$ 跳轉到末行
/關鍵字 向下搜尋關鍵字 按n下一個
?關鍵字 向上搜尋 按n下一個

路徑相關命令:

路徑
1.絕對路徑 /home/fanmao/error.log 從根目錄到該檔案的地址,路徑不會變
2.相對路徑 從參照路徑到該檔案的地址,路徑會變

cd /etc 切換到/etc 絕對路徑 change directory
cd aa 下一層目錄aa 相對路徑
cd .. 上一層目錄 相對路徑
cd - 切換到上一次路徑.
cd / 切換到頂層根路徑
cd ~ 切換到~路徑 /root
/a 絕對路徑 根目錄下的a目錄
a/ 相對路徑 當前目錄下的a目錄下
pwd 顯示當前完整路徑 print work directory


ls 列出當前路徑下的內容
ls /etc 列出etc目錄下的內容
ls -lt 按檔案修改時間降序檢視
ls -lrt 按檔案修改時間升序檢視
ls -dl 只看當前目錄的資訊 如/home/user,表示只看user的資訊


cp 原始檔 目的地
cp 原始檔 目標檔案/新檔名 ,後面一定要接新的檔名,如果不想改名,也一定要加上/ ——複製檔案指令 copy
cp -r 源目錄 目標目錄/新檔名,後面一定要接新的檔名,如果不想改名,也一定要加上/ ——複製目錄

cp cc cc2 把本地的cc檔案複製到本地,新名cc2
cp -r abc abc2 把本地的abc目錄複製到本地,新名abc2
cp cc /etc/cc2 將本地的cc複製到/etc下,新名cc2
cp cc /etc/cc2/ 將本地的cc複製到/etc/cc2下,檔名不變

cp cc a1copy/cc2 把本地的cc 複製到本地a1copy目錄下 並改名
cp cc /a1copy/cc2 把本地的cc 複製到根目錄下的a1copy目錄下 並改名

cp cc ../cc2 將本地的cc複製到上一層路徑
cp cc abc/cc2 將本地的cc複製到當前目錄的abc路徑下
cp /etc/cc2 cc 將etc下的cc2複製到本地,新名cc
cp ../cc2 ./cc2 將上層路徑的cc2檔案複製到本地
cp /etc/passwd ./ 將/etc/passwd 複製到本地
cp ../error.log ./log
將上一層路徑的error.log複製到本地並改名叫log


cp -r /home/abc /
將/home/abc目錄複製到根目錄下,不改名
cp -r test ../testing/
將當前目錄下的test目錄複製到上一層目錄的testing目錄內,不改名


scp 遠端複製 加密複製
//從遠端其他linux系統拷貝檔案過來
scp 遠端使用者名稱@ip地址:檔案的絕對路徑 本地儲存路徑
例: scp [email protected]:/etc/passwd /home 儲存到本地的home目錄下
scp [email protected]:/etc/passwd /home/aa/passwdsun

//從本地拷貝檔案到遠端其他linux系統
scp 本地檔案絕對路徑 遠端使用者名稱@ip地址:遠端儲存路徑
例: scp /etc/passwd [email protected]:/home 複製檔案
scp /xyj.sh [email protected]:/home/
scp -r 複製目錄


mv 源物件 目標物件 ——剪下/重新命名指令 move
mv a1 a2 重新命名物件。如果本地本來就有一個a2,那這個指令就是把a1剪下到a2裡面了,等同於mv a1 a2/a1(最後一個a1可加可不加)

mv a1 b1/a1 最後一個a1可加可不加 將本地的a1 剪下到本地的b1目錄下 檔名不變
mv a1 /b1/a2 剪下並改名
mv ../a a2 從上一層路徑剪下a到本地 新名a2

rz 從本地上傳檔案到linux系統,直接rz就可以,就是上傳到當前路徑下
sz +檔案路徑 -- 從linux系統下載檔案到本地
例:sz /home/abc.log

ln 原始檔 硬連結檔名 ——建立硬連結
ln -s 原始檔 軟連線檔名 ——建立軟連線
檔案內容 硬連結和軟連線都和原始檔相同,修改原始檔隨之更改,修改硬連結原始檔也更改。
刪除原始檔 硬連結獨立 軟連線失效

檔案解壓縮:

gzip 檔名 ——壓縮為檔名.gz
gzip 檔案1 檔案2 ——分別壓縮多個檔案
gunzip 壓縮包.gz ——解壓縮檔案
gunzip 壓縮包1.gz 壓縮包2.gz --同時解壓檔案
注意:只可以針對檔案壓縮,不可以目錄。
壓縮和解壓縮後原檔案消失


tar ——打包壓縮目錄指令 xx.tar.gz
tar -zcf 壓縮包.tar.gz 目錄 ——打包壓縮指定目錄
tar -xf 壓縮包.tar.gz ——解包解壓縮
注意:用於目錄的壓縮,壓縮解壓縮後原始檔不消失

zip 壓縮包.zip 被壓縮檔案/目錄 ——壓縮檔案或目錄
zip 壓縮包.zip 檔案1 檔案2 目錄1 ——將多個檔案或目錄壓縮到一起
unzip 壓縮包.zip ——解壓到本地
注意:可以壓縮檔案和目錄,可以壓縮多個檔案在一個壓縮包內。壓縮和解壓縮後原始檔不消失


建立、刪除、寫入、追加檔案:

mkdir 目錄名 --在本地建立一個目錄(同級下目錄不可重複)
mkdir 目錄1 目錄2 目錄3 ——同時建立多個目錄
mkdir -p 目錄1/目錄2/目錄3 ——同時建立多個遞迴目錄


touch 檔名 ——建立檔案(不存在的檔案)/更新最近修改時間(已存在檔案)
touch abc.txt
在其他路徑建立檔案:touch 路徑+檔名。如touch /root/fanmao/123,表示在根目錄下的root下的fanmao裡面建立一個名字是123的檔案


rmdir 目錄名 ——刪除空目錄 remove
rmdir 絕對路徑 ——刪除指定絕對路徑空目錄
rmdir 目錄1 目錄2 目錄3 ——同時刪除多個空目錄


rm ——只能刪除空檔案命令
rm 檔名 ——刪除檔案,提示確認“yes”是否刪除
rm -r 目錄 ——刪除目錄,提示
rm -f 檔案 ——強制刪除檔案,不提示
rm -rf 目錄或檔案 ——強制刪除目錄或檔案
rm -rf 路徑,如rm -rf shanghai/pudong/wanggang,表示刪除當前目錄下shanghai目錄下pudong目錄下的wanggang,道理同在其他路徑建立新的目錄或檔案
rm -rf * 刪除當前路徑下所有檔案和目錄


> 重定向,寫入 (將當前文件全部覆蓋更新)
date > aa.log

>> 追加 (在原有文件基礎追加寫入,不會覆蓋原檔案)
date >> aa.log 將日期追加到該檔案

追加自定義字元到指定檔案:echo 新內容 >> 檔名

當檔案不存在時,echo “123” >> haha,相當於建立一個名為haha的檔案,內容是123,等同於echo “123” > haha

檔案許可權:

14024749 drwxr--r-- 1 root root 0 10-31 11:22 aanew
節點ID號 許可權 裡面的內容數 所屬主 所屬組 大小 最近修改時間 名

不同顏色的檔案:
普通檔案 黑色/白色 許可權首位-
目錄 藍色 許可權首位d
壓縮包 紅色
綠色 可執行檔案
淺藍色 連結檔案 許可權首位l
紅色底色 出錯的連結檔案

第一位:檔案型別 d或 l或 -
第2-4位:所屬主的許可權 u(user)
第5-7位:所屬組的許可權 g(group)
第8-10位:其他使用者的許可權 o(other)

r:read-4 檢視內容cat 檢視目錄內容ls
w:write 修改內容vi 建立刪除檔案touch rm
x:excute-1 執行sh 進入cd

u所屬主 g所屬組 o其他
chmod 修改檔案/目錄許可權 檔名 +給是與許可權 -是去除許可權
chmod ugo+w b2
chmod u-x,g-rw b2
chmod u+wx,ugo-r b
所屬主去掉x許可權 所屬組去掉wx許可權 其他使用者去掉所有許可權
chmod u-x,g-wx,o-rwx 檔名
所屬組去掉r許可權 給與w許可權 其他使用者給rx許可權
chmod g-r,g+w,o+rx 檔名

可以chmod 766 檔名,直接用8進位制數字改許可權,更方便!

chown 使用者名稱 檔案/目錄 ——修改檔案或目錄的所屬主 owner
chgrp 組名 檔案/目錄 ——修改檔案或目錄的所屬組

查詢命令:


精確查詢 完全和關鍵字等同於的查詢
模糊查詢 在關鍵字基礎上符合格式的查詢

locate 檔名 ——快速檔名查詢檔案(模糊查詢)也可以查詢目錄,也可以加路徑查詢
(基於檔案庫全盤查詢,檔案庫非實時更新)
updatedb ——locate之前先要更新檔案庫

find 查詢指令
find 路徑 -name 關鍵字 —— 通過檔名查詢檔案 區分大小寫
find 路徑 -iname 關鍵字 —— 通過檔名查詢檔案 不區分大小寫
find 路徑 -size +5M-------查詢路徑下大於5M的檔案,+號不能少


查詢本地 路徑可以不填或用./表示
萬用字元:以什麼開頭 以什麼結尾 包含什麼關鍵字
* 代表任意個字元 init*=》init,init1,init333
? 代表單個字元 ?init=》xinit ??init=》xyinit

find /etc -name init 在etc目錄下查詢名字為init的檔案

find /etc -name init* 在etc目錄下查詢名字init開頭的檔案

find /etc -name *init* 在etc目錄下查詢名字包含init的檔案
當前目錄下查詢檔案內容中包含hello欄位的所有檔名,並輸出行號:grep -rn hello -r表示遞迴查詢 -n是顯示行號

-amin 在幾分鐘內被訪問過 cat/tac/more... find -amin +5 查詢本地5分鐘前被訪問過 a代表access
-mmin 在幾分鐘內被編輯過內容 find / -mmin -3 vi/ m代表modify
-cmin 在幾分鐘內被修改過屬性 vi/chmod/chgrp/chown c代表change
find -cmin -5 查詢本地5分鐘內被修改過屬性


文字過濾:


| 管道符 在前段指令的基礎上繼續執行後半段,可結合前面的head、tail一起使用
grep
grep ,在文字中查詢有關鍵字的內容
語法:grep 搜尋字串 檔名
如一個檔案 Hello.java 中含有Lemon 關鍵字,可以使用grep 命令進行查詢:
Grep -n Lemon Hello.java
其中的-n 表示在第n行,直接輸入-n就行,執行後會自動顯示多少行

例:cat abc.log | grep error 顯示abc.log中有error字樣的行
more abc.log | grep error 顯示abc.log中有error字樣的行
less abc.log | grep error 顯示abc.log中有error字樣的行


程序相關:

ifconfig 檢視網絡卡資訊(IP 子網掩碼...)
ifconfig eth0 IP地址 ——給指定網絡卡配置IP
ping IP地址/域名(網址) ——檢視本地和指定IP地址互通性
hostname 顯示主機名
who 顯示使用者資訊
whoami 顯示當前登陸的使用者名稱
tab鍵 補全操作
鍵盤上鍵 調出之前的指令
clear 清屏


ps -ef 檢視所有程序 (程序ID 程序名)
kill -9 程序ID 結束指定程序
w 檢視登陸詳細資訊 (使用者名稱 主機IP 連線時間 空閒時間 最近執行指令)
netstat 檢視連線埠資訊

free:記憶體使用率
top:CPU使用率
檢視磁碟:du 或df

reboot 重啟
poweroff 關機


使用者管理:


useradd 使用者名稱 ——建立普通使用者
userdel 使用者名稱 ——刪除使用者 (注意:使用中的賬號不可以刪,退出重新連線)
groupadd 組名 ——建立使用者組
groupdel 組名 ——刪除指定使用者組


cat /etc/passwd ——檢視/etc/passwd檔案 passwd是專門用來儲存使用者相關資訊的檔案

passwd 使用者名稱 ——建立/重置密碼

fanmao3:x:506:507::/home/fanmao3:/bin/bash
使用者名稱:密碼:使用者ID:組ID::家目錄路徑:shell指令碼編譯器bash

su 切換使用者名稱

su zhangsan 切換到zhangsan使用者登陸
su 切換到root 等同於su root
注意:root切換到普通使用者不需要輸入密碼,普通使用者切換到超級使用者或其他普通使用者需要密碼。

cat /etc/group ——檢視使用者組資訊
gpasswd -M 使用者1,使用者2 使用者組 ——向用戶組設定使用者1,使用者2
gpasswd -d 使用者 使用者組 ——從使用者組移出使用者(每次移出一個)


執行指令碼 sh EndDayBatch.sh
1.cd 到指令碼的路徑
2.ls 檢視指令碼是否在 檢視許可權
3.su root / chmod 給許可權。檢視當前使用者,輸入w,如果有很多使用者,看最近的時間誰在使用就可以了,USER:登入的使用者名稱
TTY:登入終端
FROM:哪個IP地址登入的
LOGIN@:登入時間
IDLE:使用者閒置時間
JCPU:指的是和該終端連線的所有程序佔有的時間,這個時間裡並不包括過去的後臺作用時間,但卻包括當前正在執行的後臺作用所佔用的時間
PCPU:是指當前程序所佔用的時間
WHAT:當前正在執行的命令

shell指令碼======================
【編寫第一個指令碼】
cd / 到根目錄
touch abc.sh 建立一個指令碼檔案 abc.sh
vi abc.sh 編寫
=============
#!/bin/bash --#代表單行註釋 註釋該指令碼用什麼直譯器
echo "hello test1120!" echo(輸出) 顯示hello test1120!可自定義
=============
:wq 儲存退出
bash abc.sh 通過直譯器執行指令碼檔案 sh abc.sh也可以
chmod +x ./abc.sh 也可以通過將檔案變成可執行來執行
./abc.sh 執行abc.sh 通過這種方式執行,第一行要寫對,方便系統查詢適合的直譯器

【read】 接受使用者輸入值,如read name:執行的時候就要輸入name是什麼,如name=zhangsan,賦予name這個變數的值是zhangsan,那執行的時候直接顯示出張三,$name,呼叫這個變數值,如echo $name,就是輸出name這個值
========================
#!/bin/bash
echo "what's your name?"
read name 定義一個變數name放輸入值
echo "my name is ${name}aaa" {}定義變數的位置結尾


【分支語句】
if [表示式]
then
語句1
else
語句2
fi

-eq 兩邊相等 p19
-ne 兩邊不相等
-gt 左邊大於右邊
-lt 左邊小於右邊
-ge 左邊大等於右邊
-le 左邊小等於右邊

==================
#!/bin/bash
echo "num1:"
read num1
echo "num2:"
read num2
if [ $num1 -gt $num2 ]
then
echo "${num1}>${num2}"
elif [ $num1 -lt $num2 ]
then
echo "${num1}<${num2}"
else
echo "${num1}=${num2}"
fi
=========================


【while迴圈】 迴圈5次
==================
#!/bin/bash
i=1
while [ $i -le 5 ] //i<=5
do
echo $i
i=`expr $i + 1` //對變數的定義 不需要$i= i=i+1
done
==========================