1. 程式人生 > >Linux的部分命令

Linux的部分命令

添加 tab 生效 lock -name 因此 code which director

命令介紹
mkdir 創建目錄的命令 make directory
touch 創建文件“摸”,修改時間戳
pwd 顯示當前的路徑
-ls -l(long)d(directory)顯示目錄或者文件 全程list
ls -l /root/
tree 查看目錄結構
cd 切換目錄層次change directory
echo 打印輸出內容(printf復雜的輸出)
seq 打印數字序列, 提示: seq 10等價於echo{0..10}
cat 查看文件內容、往文件中寫入
vi/vim 文件編輯器
cp 拷貝文件、拷貝目錄
mv 移動文件、移動目錄
rm 刪除文件、目錄
-f強制刪除文件 -r遞歸刪除 刪除文件或目錄 -fr刪除文件、目錄
rmdir 刪除空目錄,基本上已經淘汰

grep   核心命令之一(三劍客的老三)過濾 -v排除
sed    核心命令之一(三劍客的老二) -n取消默認輸出 p打印 d刪除
awk    核心命令之一(三劍客的老大)

head  頭部  顯示文件頭部-n -行數  head -n 5 oldboy.txt  (默認行數:10)
tail  尾部  顯示文件尾部-n -行數  tail -n 2 oldboy.txt  (默認行數:10)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
符號介紹
; 多個命令的分隔符
/ 根或者路徑的分隔符

重定向(數據流朝著箭頭的方向流動,會覆蓋原來的文件)

> 追加重定向(在原來文件的結尾,追加內容)
.. 返回上一級目錄 cd ..、
. 當前目錄
{ } 配合echo打印序列 echo{1..40}
1
2
3
4
5
6
7
8
【案例演示】

1、創建一個目錄(文件)data
mkdir 創建目錄的命令 make directory
-ls -l(long)d(directory)顯示目錄或者文件 全程list
cd 切換目錄層次change directory
答案:
mkdir /data
cd /; mkdir /data

ls -l /root/ 查看/root/目錄下有什麽文件。

2、在/data下創建oldboy.txt文件

答案:
touch /data/oldboy.txt
cd /data; touch oldboy.txt
時間過程:
touch /data/oldboy.txt
ls -l /data/oldboy.txt <--查看創建的oldboy.txt,註意沒有上面的d參數,為什麽呢?

如果在/data中有同名的文件存在,不會提示,也不會覆蓋,會更新文件的時間戳。
【總結】touch [文件名]---“摸”一下文件,如果文件不存在,就創建文件;如果文件存在,就改變文件的訪問時間atime等時間戳信息。

windows的目錄分隔符: \
linux的目錄分隔符: /

3、vi/vim 記事本編輯器
i、a
命令模式《====》插入模式
Esc
命令模式:無INSERT關鍵字
插入模式:有INSERT關鍵字
:wq 寫入並退出
:q 直接退出

4、為/data下的oldboy.txt文件添加"oldboy"
答案:
方法一:常規編輯方法-->用vi編輯器
執行 vi oldboy.txt 進入 vi 編輯器(默認命令模式)、點擊 a 或 i 進入編輯模式,敲入內容oldboy ,然後按鍵盤上的 Esc 鍵退出編輯模式(默認命令模式),最後敲 :wq(write quit) 保存並退出。

方法二:單行插入文本,放到文件的尾部
echo "ABCD" > oldboy.txt
cat oldboy.txt

方法四:多行文本
cat>>/data/oldboy.txt

CCC
DDD

按Ctrl+C或者Ctrl+D可以退出追加
cat oldboy.txt 

方法五:多行文本:寫腳本常用,追加多行,內容都是放到文件的尾部
cat>>/data/oldboy.txt<<EOF
AAA
BBB
CCC
DDD
EOF
【註】EOF要頂格寫,EOF必須成對出現,也可以用其它成對的標識符代替
作用:把上面的四行內容追加到/data/oldboy.txt文件中

5、cp拷貝文件、拷貝目錄(-r)

(1)把oldboy.txt文件拷貝到/tmp/下
格式:cp src文件路徑下的文件 dst文件路徑
答案:
cp /data/oldboy.txt /tmp/
ls /tmp/
(2)拷貝文件或者目錄-a -p -r
總結:
cp [-aifpru] [源文件] [目標文件]
-a :相當於-pdr
-p :連同檔案的屬性也一起復制過去
-r :遞歸,用於復制目錄

6、mv 移動文件、移動目錄(不用-r)
mv /data /root/
【提示】如果希望帶目錄拷貝,盡量不要mv /data/ /root/,移動目錄時,源目錄結尾不要多余的斜線。
雖然這樣是可以的,但是我們要養成良好的習慣和規範。
【總結】
mv [-ifu] [源文件/源目錄] [目標文件/目標目錄]
-i :如果目的文件已經存在,詢問是否覆蓋
-f :強制執行,不會詢問
-u :如果目的文件已經存在,且目的文件比源文件新,才會移動
提示:如果源文件是多個,那麽目的文件在最後,且是目錄

7、rm(remove)刪除文件、刪除目錄(-r)
(1)刪除文件:rm 文件名
進入root目錄下的data目錄,刪除oldboy.txt
答案:
cd /root/data/
rm oldboy.txt

y:是
[說明]
rm -f 文件名 //強制刪除,不提示,不推薦使用
(2)刪除目錄: rm -r 目錄名

rmdir data
rm -fr 目錄    //強制刪除目錄

8、grep (以行為單位)進行過濾操作
題目1:假設oldboy.txt中有三行aaa,bbbb,ccc,abcd那麽想只打印出來aaa,bbbb,ccc應該怎麽打印?
答案:
法一:
grep -v abcd oldboy.txt //除去 oldboy.txt中的abcd,再打印出來
法二:
head -3 oldboy.txt //打印出oldboy.txt文件中的前三行
法三:
sed /^abcd/d oldboy.txt //把以abcd開頭的刪除後再打印:其中^表示以開頭;如果不加^,表示包含
[擴展]
sed -n/a/p oldboy.txt //-n表示不用默認方式打印,包含a的打印
sed -n/^a/p oldboy.txt //-n表示不用默認方式打印,以a開頭的打印

題目2:把oldboy.txt中包含a的行打印出來?
答案:
grep a oldboy.txt
sed -n /a/p oldboy.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
=================================================================================================
快捷鍵Tab:命令、目錄補全鍵
man + 命令 :查找命令的定義

命令介紹:
取消默認
alias 別名
alias|grep cp
unalias 取消別名
/bin/cp
\cp

which 查看命令的路徑whereis,locate,find / -type f -name "cp"
mkdir -p /data/oldboy  其中:必須加-p,才可以遞歸創建多個目錄

[find命令]
find 查找路徑
find / -type f -mtime 按照修改時間 -name "oldboy.txt"在根目錄下查找文件名為"oldboy.txt"的類型為“文件”的路徑
find 與 xargs用的更加頻繁(用管道|相連)

sed -i s###g
akw

xargs 用於把find/ls的輸出交給後面處理
man  查看命令以及配置文件等幫助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
符號介紹:
| 管道:通過管道把前一個命令的輸出交給後一個命令繼續處理
s###g
1
2
3
4
1、請用一條命令完成創建目錄/oldboy/test,即創建/oldboy目錄以及/oldboy/test目錄
答案:
mkdir -p /oldboy/test //-p遞歸創建目錄,一般第一級目錄不存在時用-p,否則報錯
tree /oldboy/ //查看目錄樹結果
【問題】如何安裝tree?

2、已知/tmp目錄下已經存在text.txt文件,如何執行命令才能把/tmp/test.txt拷貝到/mnt下覆蓋掉/mnt/text.txt,而讓linux系統不提示是否覆蓋(root權限下)。
答案:
法一:
\cp /tmp/text.txt /mnt/
法二:
/bin/cp /tmp/text.txt /mnt/ 其中which cp得到/bin
法三:alias
alias 查看別名
默認情況下,cp的別名是cp -i 用查看cp的別名:alias|grep cp

因此可以先用unalias去除cp的別名
unalias cp //不即cp使用別名
cp /tmp/text.txt /mnt/
提示:命令行處理別名僅在當時生效,重啟系統後就失效了
【註】系統默認的別名的作用:
通過給危險命令加一些保護參數,防止人的誤操作
把很多復雜的字符串簡單化

2、man + 命令
作用:查找命令的作用

3、which 命令
作用:查找命令的路徑

4、find + 目錄 + -type 類型 + -name 名稱 查找路徑
find + 目錄 + -type 類型 + -name 名稱 + -exec + 命令 參數類型 + {} \;
案例:
c
find / -type f -name "oldboy.txt" -exec rm -f {} \;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
這裏寫圖片描述
刪除所有的“oldboy.txt”文件還可以用下面的方法
find / -type f -name “oldboy.txt” | xargs rm -f

【解釋】其中 | 的含義是“管道”,下面是管道的解釋:
這裏寫圖片描述
find / -type f -name -mtime +15 “oldboy.txt” | xargs rm -f 按照時間
find / -type f -name -mtime +5 “oldboy” | xargs rm -rf
這裏寫圖片描述
其中:-mtime示意圖
這裏寫圖片描述

5、題目:只查看oldboy.txt文件(100行)第20-30行的內容
答案:
方法一;
head -n 30 oldboy.txt | tail -n -10
方法二:sed擅長輸出“行”
sed -n 20,30p lodboy.txt
方法二:awk擅長輸出“列”,此處也可以處理行,只不過復雜一點。
awk ‘{if(NR>19&&NR<31) print $0}‘ oldboy.txt //$0表示處理“行”

6、題目: /data目錄以及其子目錄下所有以擴展名.sh結尾的文件中包含aaaa的字符串全部替換為AAAA。
答案:
find /data -type f name "sh" | xargs sed -i s#aaaa#AAAA#g
其中:s###g : s#被替換的字符串#替換成的字符串#g
-i表示替換後寫入文件
批量查看:xargs是對前面find到的文件,按照行進行cat處理
find /data -type f name "
sh" | xargs cat

Linux的部分命令