Tangwx

Tangwx

博客网站

vim使用

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 刪除光標所在到最後一行的數據

刪除選中的文字
如果在命令狀態,使用vCtrl+v選中一段文字,然後按x

複製選中文字
如果在命令狀態,使用vCtrl+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 以正常的程序方式終止一項作業

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。