1. 程式人生 > >Shell學習筆記1

Shell學習筆記1

檢索 學習 假設 bash ren ps1 使用 rgs 第一個

Linux中變量

$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
$$ 是腳本運行的當前進程ID號
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤

區別:@*
相同點:都是引用所有參數
不同點:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數(分別存儲在12 3)則"*" 等價於 “12 3"(傳遞了一個參數);而“@" 等價於 "1""2" "$3"(傳遞了三個參數)。

================================================華麗的分隔線=========================================


Linux CentOS 永久設置別名Alias:在/etc/bashrc裏添加alias語句。

================================================華麗的分隔線=========================================
Linux下批量Kill多個進程的方法:
ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

"ps - ef"是Red Hat 裏查看所有進程的命令。這時檢索出的進程將作為下一條命令“grep LOCAL=NO”的輸入。
"ps aux"是CentOS裏查看所有進程的命令。


"grep LOCAL=NO"的輸出結果是,所有含有關鍵字“LOCAL=NO”的進程,這是Oracle數據庫中遠程連接進程的共同特點。
"grep -v grep"是在列出的進程中去除含有關鍵字“grep”的進程。
"cut -c 9-15"是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。
"xargs kill -9"中的xargs命令是用來把前面命令的輸出結果(PID)作為“kill -9”命令的參數,並執行該令。
"kill -9"會強行殺掉指定進程,這樣就成功清除了oracle的所有遠程連接進程。其它類似的任務,只需要修改“grep LOCAL=NO”中的關鍵字部分就可以了。

================================================華麗的分隔線=========================================

>清空文件並寫入,>>追加寫入。
================================================華麗的分隔線=========================================
管道命令和xargs的區別(經典解釋):
管道是實現“將前面的標準輸出作為後面的標準輸入”
xargs是實現“將標準輸入作為命令的參數”
================================================華麗的分隔線=========================================
rename JPG jpg *.JPG
================================================華麗的分隔線=========================================
#!/bin/bash

for f in `cat 1.txt`;do touch $f;done

echo `ls ./`

for l in `ls *.jpg`
do
mv $l `echo ${l%_sb*}.jpg`
done

echo `ls ./`

for l in `ls *.jpg`
do
mv $l `echo ${l/%jpg/JPG}`
done

echo `ls ./`
================================================華麗的分隔線=========================================
計算字符數三種方法:
char=`seq -s " " 100`

方法1:echo ${#char}
方法2:echo $char | wc -m
方法3:echo $(expr length "$char")
================================================華麗的分隔線=========================================
計算字符數三種方法速度的比較:

#!/bin/bash
char=`seq -s " " 100`

echo -e ‘\e[0;32m使用echo ${#char}方式的結果:\e[0m‘
time for i in $(seq 1000);do count="echo ${#char}";done

echo -e ‘\e[0;32m使用echo $char | wc -m方式的結果:\e[0m‘
time for i in $(seq 1000);do count="echo $char | wc -m";done

echo -e ‘\e[0;32m使用echo $(expr length "$char")方式的結果:\e[0m‘
time for i in $(seq 1000);do count="echo $(expr length "$char")";done
================================================華麗的分隔線=========================================
更改提示符
export PS1=‘\e[36m[\u@\h \W\$]\e[0m‘ 寫入/etc/bashrc文件中最後一行
================================================華麗的分隔線=========================================
刪除當前目錄下30天前的數據
find ./ -type f -mtime +30 -exec rm -rf {} \;

刪除當前目錄下30天前的數據
find ./ -name "*.sql.gz" -type f -mtime +30 -exec rm -rf {} \;

Shell學習筆記1