vim 使用#
mkdir 文件夹名
創建文件夾
rm -rf 文件名
刪除文件
cp 原文件路径 目的路径
複製單個文件
cp 原文件路径 -r 目的路径
複製文件夾
mv 原文件或文件夾名 重命名后的名字
重命名文件或文件夾
查看文件:cat 文件名
將查找後的內容另存為別的文件grep 查找內容 文件名>新文件名
cat 文件名 | grep 查找內容 文件名>新文件名
添加權限
chmod +x 文件名
創建 test.sh:
date
添加 x 權限
chmod +x test.sh
運行 sh 文件
./test.sh
[test@iZuf64fh3qqfih9qs3bh1oZ tang]$ vi test.sh
[test@iZuf64fh3qqfih9qs3bh1oZ tang]$ ll
total 36
drwxrwxr-x 9 test test 4096 Sep 15 17:15 1
-rw-rw-r-- 1 test test 878 Sep 15 17:32 SentimentModel_def
-rw-rw-r-- 1 test test 14794 Sep 15 17:10 SentimentModel.py
-rw-rw-r-- 1 test test 5 Sep 15 20:22 test.sh
-rw-rw-r-- 1 test test 76 Sep 15 19:16 test.txt
drwxrwxr-x 2 test test 4096 Sep 15 19:21 xieqiang
[test@iZuf64fh3qqfih9qs3bh1oZ tang]$ chmod +x test.sh
[test@iZuf64fh3qqfih9qs3bh1oZ tang]$ ll
total 36
drwxrwxr-x 9 test test 4096 Sep 15 17:15 1
-rw-rw-r-- 1 test test 878 Sep 15 17:32 SentimentModel_def
-rw-rw-r-- 1 test test 14794 Sep 15 17:10 SentimentModel.py
-rwxrwxr-x 1 test test 5 Sep 15 20:22 test.sh
-rw-rw-r-- 1 test test 76 Sep 15 19:16 test.txt
drwxrwxr-x 2 test test 4096 Sep 15 19:21 xieqiang
[test@iZuf64fh3qqfih9qs3bh1oZ tang]$ ./test.sh
Wed Sep 15 20:23:15 CST 2021
創建空文件touch 文件名
顯示 Linux 下文本文件的換行符
cat -A filename
複製粘貼
yy
複製整行
p
粘貼
刪除行
dd
刪除光標所在行
ndd
刪除光標所在的向下 n 行
dG
刪除光標所在到最後一行的數據
刪除選中的文字
如果在命令狀態,使用v
或Ctrl+v
選中一段文字,然後按x
複製選中文字
如果在命令狀態,使用v
或Ctrl+v
選中一段文字,然後按y
複製,按p(或P)
粘貼
顯示行號
:set nu
取消行號
:set nonu
多文件編輯
:n
編輯下一個文件
:N
編輯上一個文件
:files
列出當前 vim 打開的所有文件
DOS 與 Linux 的換行符
dos2 unix [-kn] file [newfile] 轉換為 Unix
unix2 dos [-kn] file [newfile] 轉換為 dos
通配符與特殊符號
*
代表 0 個或多個字符(或數字)
?
代表 “一定有” 一個字母
#
註釋,常用在腳本中,視為說明
\
轉義字符,將 “特殊字符或通配符” 還原成一般字符
|
分隔兩個管道的命令
;
連續命令的分隔(注意,與管道命令不同)
&
將命令變成後台工作
!
邏輯意義上的 “非”(not)的意思
/
路徑分隔的符號
>
>>
輸出導向,分別是 “替換” 與 “追加”
'
不具備變量置換功能
”
具備變量置換功能
``兩個“`”中間為可以先執行的命令
()
中間為子 shell 的起始和結束
[]
中間為字符的組合
{}
中間為命令區塊的組合
管道命令(pipe)
1、cut
echo $PATH|cut -d ':' -f 3
2、去除 shell 的 \r
cat my_shell.sh|tr -d '\r' > my_shell.sh
//------------------------ 正則表達式 ----------------------------------------------------------
1、grep [-acinv]
' 搜索字符串 ' filenames
參數說明:
-a
: 在二進制文件中,以文本文件方式搜索數據
-c
: 計算找到 ' 搜索 ' 字符串的次數
-i
: 忽略大小寫的不同
-n
: 輸出行號
-v
: 反向選擇,即顯示沒有 ' 搜索字符串 ' 內容的那一行
2、利用 [] 來搜索集合字符串
grep -n 't[ae]st' filenames
[] 中不論有幾個字符,都只代表一個字符,即至搜索 'tast' 和 'test' 兩個字符串
grep -n '[^g]oo' filenames
取出 oo 前面不含 g 的字符串
grep -n '[^a-z]oo' filenames
取出 oo 前面不含小寫字母的字符串(如果要求是數字和英文,則為 [a-zA-Z0-9])
3、行首與行尾字符 ^ $
grep -n '^the' filenames 取出行首包含the的字符串(注意,^在[]之內和之外是不同的,在[]表示反向選擇,在[]之外則代表定位在行首)
grep -n '\.$' filenames 取出行尾有'.'的行
4、任意一個字符。與重複字符 *
grep -n 'g..d' filenames
取出包含 g、d 字符的行,且 g、d 字符之間一定要存在兩個字符
grep -n 'oo*' filenames
取出包含 1 個及以上 o 的行(* 代表 0 個或多個任意字符)
5、限定重複字符範圍 {}
grep -n 'o\{2,5\}' filename
取出包含 2~5 個 o 的行(注意:{} 在 shell 中有特殊含義,使用是需要轉義符 \)
6、sed 工具簡介
刪除
cat -n /etc/passwd | sed '2,2d'
刪除第 2 到第 12 行
cat -n /etc/passwd | sed '12,$d'
刪除第 12 行到最後一行增加
cat -n /etc/passwd | sed '2a hello wanlx'
在第 2 行後新增 hello wlx
cat -n /etc/passwd | sed '5i hello wanlx'
在第 5 行後新增 hello wlx 替換
cat -n /etc/passwd | sed '2,5c hello wanlx'
將 2-5 行替換為 hello wlx 打印
cat -n /etc/passwd | sed -n '5,7p'
顯示 5-7 行
7、awk
工具簡介(好東西)
按空格和 Tab 切割字符串
//-------------------- 學習 shell 腳本 -------------------------------------------------------------
1、使用判斷符號 []
1.1 在每個組件中間,都要用空格分隔,例如:[ "$HOME" == "$MAIL" ]
1.2 中括號內的變量,最好用雙引號來設置。
1.3 中括號內的常量,最好用單引號或雙引號來設置。
2、shell 腳本的追蹤與調試
sh [-nvx] filename.sh
-n
不要執行腳本,仅查詢語法問題
-v
在執行腳本前,先將腳本的內容輸出到螢幕上
-x
將使用的腳本內容顯示到螢幕上(追蹤腳本的執行)
//---------------- 循環執行的例行性命令 --------------------------------------------------
crontab [-u username] [-l|-e|-r]
參數
-u
只有root
才能執行這個任務,即幫其他用戶建立 / 刪除crontab
-e
編輯crontab
的工作內容
-l
查看crontab
的工作內容
-r
刪除crontab
的工作內容 (全部內容)
30 10 * * * /bin/sh /root/shell_script/mongodb/mongo_log_mgr.sh
編輯任務
crontab -e
*/1 * * * * cd /home/wanlx/myworkspace;date >> date.wlx
分 時 日 月 周
編輯完成後重啟crond
服務 (redhat6.4
可以不重啟)
/etc/init.d/crond restart
編譯系統發送郵件的地址
vi /etc/crontab
然後修改MAILTO
//--------------- 管理後台作業 -------------------------------------------
kill -signal %jobnumber
參數
-l
這個是 L 的小寫,列出當前 kill 能使用的信號 (signal)
signal
表示給後面的作業什麼指示(不知道幹啥的)。用 man 7 signal 可知
-1
表示重新讀取一次參數的設置文件(類似 reload)
-2
表示與由鍵盤輸入[ctrl]-c
同樣的動作
-9
立刻強制刪除一個作業
-15
以正常的程序方式終止一項作業