Shell 簡介:
Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。他接收了用戶輸入的命令並把它送入內核去執行。實際上Sheel是一個命令解釋器。它解釋由用戶輸入的命令並把它們送到內核。不僅如何,Shell有自己的編程語言用於對命令進行編輯,用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點。,比如他也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有相同的效果。
Shell用途
我們可以使用Shell實現對Linux系統的大部分管理,如:
- 文件管理
- 用戶干栗
- 權限管理
- 磁盤管理
- 軟件管理
- 網絡管理
如何使用Shell
- 輸入命令 效率低
- Shell Script 效率高
linux 命令
- ping ip/網址
測試是否連接 - date
當前時間 - useradd 用戶名
添加用戶 - gedit 名稱.sh
gedit useradd.sh
打開一個uesradd.sh 腳本文件
for i in {1..20}
do
uesradd tianyun$1
echo "tianyun$i is created!"
done
執行
bash useradd.sh
- ls
ls
展示當前目錄和文件,不包含隱藏
Desktop Downloads Pictures Templates Videos
Documents Music Public useradd.sh
ls -a
列出文件包含隱藏文件
[root@linux lilihai]# ls -a
. .bash_profile .dbus .esd_auth Music useradd.sh
.. .bashrc Desktop .ICEauthority Pictures Videos
.bash_history .cache Documents .local Public
.bash_logout .config Downloads .mozilla Templates
[root@linux lilihai]#
ls -l
列出文件詳細信息
[root@linux lilihai]# ls -l
total 4
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Desktop
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Documents
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Downloads
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Music
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Pictures
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Public
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Templates
-rw-rw-r--. 1 lilihai lilihai 99 Dec 13 17:36 useradd.sh
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Videos
ls -a -l
累出所有文件,包含隱藏文件並展示詳細信息。
[root@linux lilihai]# ls -a -l
total 40
drwx------. 15 lilihai lilihai 4096 Dec 13 17:52 .
drwxr-xr-x. 4 root root 33 Dec 13 17:56 ..
-rw-------. 1 lilihai lilihai 443 Dec 13 18:04 .bash_history
-rw-r--r--. 1 lilihai lilihai 18 Oct 31 01:07 .bash_logout
-rw-r--r--. 1 lilihai lilihai 193 Oct 31 01:07 .bash_profile
-rw-r--r--. 1 lilihai lilihai 231 Oct 31 01:07 .bashrc
drwx------. 14 lilihai lilihai 4096 Dec 13 17:11 .cache
drwxr-xr-x. 16 lilihai lilihai 4096 Dec 13 18:12 .config
drwx------. 3 lilihai lilihai 25 Dec 13 17:07 .dbus
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Desktop
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Documents
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Downloads
-rw-------. 1 lilihai lilihai 16 Dec 13 17:07 .esd_auth
-rw-------. 1 lilihai lilihai 310 Dec 13 17:07 .ICEauthority
drwx------. 3 lilihai lilihai 19 Dec 13 17:07 .local
drwxr-xr-x. 4 lilihai lilihai 39 Dec 13 16:48 .mozilla
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Music
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Pictures
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Public
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Templates
-rw-rw-r--. 1 lilihai lilihai 99 Dec 13 17:36 useradd.sh
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Videos
[root@linux lilihai]#
ls -a /
ls -a /目錄
列出指定目錄、跟目錄下所有目錄
[root@linux lilihai]# ls -a /
. bin dev home lib64 mnt proc run srv tmp var
.. boot etc lib media opt root sbin sys usr
[root@linux lilihai]# ls -a /home
. .. jack lilihai
[root@linux lilihai]#
ls常見選項
-a all,查看目錄下所有文件,包含隱藏文件
-l 長列表像是
-h human 以人性化方式顯示
-t 按修改時間排序
-S 按文件的Size排序
-r 逆序排列
-i 顯示文件的incode號(索引號)
ip
ip a
獲取IP
192.168.190.130
: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:79:26:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.190.130/24 brd 192.168.190.255 scope global noprefixroute dynamic ens33
valid_lft 1660sec preferred_lft 1660sec
inet6 fe80::ad9a:bde8:6300:117c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:65:1a:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:65:1a:58 brd ff:ff:ff:ff:ff:ff
- su
切換用戶:
[lilihai@linux ~]$ su
Password:
[root@linux lilihai]#
- whoami
顯示當前用戶
[root@linux lilihai]# whoami
root
- passwd
設置密碼:
passwd 賬號
快捷鍵
CTRL+C 終止前台運行程序
CTRL+D 退出等價於exit
CTRL+L 清屏
CTRL+A 光標移動到命令行最前端
CTRL+E 光標移動命令行后端
CTRL+U 刪除光標前所有字符
CTRL+K 刪除貫標后所有字符
CTRL+R 搜索歷史命令,利用關鍵字
ALT+. 引用上一個命令和最后一個參數,等價於!$
ESC. 引用上一個命令的最后一個參數,等價於!$
歷史命令
- history
光標上下鍵 上一條命令嚇一跳命令
CTRL+R 搜索歷史命令(輸入某個命令的關鍵字)
!行號 執行多少行號的歷史命令
!字符集 搜索歷史最近一個已xxx字符集開頭的命令
!$ 醫用上一個命令的最后一個參數。
別名
- 別名優先級最高
alias 變量名='路徑/命令'
[lilihai@linux ~]$ alias dt='date'
[lilihai@linux ~]$ date
Thu Dec 13 19:39:58 CST 2018
永久別名:
[root@linux ~]# gedit /etc/bashrc
alias yang='date'
關閉重啟打開 terminal
BASH Shell 對文件進行管理
創建、復制、刪除、移動、查看、編輯、壓縮、查找
-
目錄結構
-
bin 普通用戶使用的命令 /bin/ls./bin/date
*sbin 管理員使用的命令 /skin/service -
dev 設備文件 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1
-
root root 用戶的HOME
-
proc 虛擬的文件系統,反映出來的內核,進程信息或者實時狀態
-
User 系統文件,相當於c:\Windows\user\local 軟件安裝目錄,相當於c:\Program
/user/bin 普通用戶使用的應用程序
/user/sbin 管理員使用的應用程序
/user/lib 庫文件Glibc 32bit
/user/lib64 庫文件Glibc 64bit -
boot 存放的系統啟動相關的文件。
-
etc 配置文件
系統相關如網絡/etc/sysconfig/network
應用相關的配置文件/etc/ssh/sshd_config -
tmp 臨時文件
-
var 存放的一些變化文件,比如數據庫,日志,郵件....
創建文件
thuch 路徑+文件
創建文件
touch file1.txt 沒有則創建,有則修改時間
[root@linux linux]# touch file.txt
[root@linux linux]# ll -l
total 0
-rw-r--r--. 1 root root 0 Dec 14 15:43 file.txt
[root@linux linux]# touch file.txt
[root@linux linux]# ll -l
total 0
-rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
同時在一個目錄下創建兩個文件
touch file3 file4
[root@linux linux]# touch file3 file4
[root@linux linux]# ll -l
total 0
-rw-r--r--. 1 root root 0 Dec 14 15:46 file3
-rw-r--r--. 1 root root 0 Dec 14 15:46 file4
-rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
創建一個txt文件
touch /home/file10.txt
oot@linux ~]# ll /home -a
total 4
drwxr-xr-x. 7 root root 190 Dec 14 14:57 .
dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
-rw-r--r--. 1 root root 0 Dec 14 14:55 file1
-rw-r--r--. 1 root root 0 Dec 14 15:51 file10.txt
在指定目錄下一次性創建兩個文件
touch /linux/{zhuzhu,guoguo}
root@linux linux]# touch /linux/{zhuzhu,guouog}
[root@linux linux]# ll -a
total 0
drwxr-xr-x. 3 root root 101 Dec 14 15:53 .
dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
-rw-r--r--. 1 root root 0 Dec 14 15:49 file
drwxr-xr-x. 2 root root 6 Dec 14 15:48 .file
-rw-r--r--. 1 root root 0 Dec 14 15:46 file3
-rw-r--r--. 1 root root 0 Dec 14 15:46 file4
-rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
-rw-r--r--. 1 root root 0 Dec 14 15:53 guouog
-rw-r--r--. 1 root root 0 Dec 14 15:53 zhuzhu
一次性創建以file開頭1到20的文件
touch file{1..20}
[root@linux linux]# touch file{1..20}
[root@linux linux]# ll -a
total 4
-rw-r--r--. 1 root root 0 Dec 14 15:49 file
-rw-r--r--. 1 root root 0 Dec 14 15:56 file1
-rw-r--r--. 1 root root 0 Dec 14 15:56 file10
-rw-r--r--. 1 root root 0 Dec 14 15:56 file11
-rw-r--r--. 1 root root 0 Dec 14 15:56 file12
-rw-r--r--. 1 root root 0 Dec 14 15:56 file13
-rw-r--r--. 1 root root 0 Dec 14 15:56 file14
-rw-r--r--. 1 root root 0 Dec 14 15:56 file15
-rw-r--r--. 1 root root 0 Dec 14 15:56 file16
-rw-r--r--. 1 root root 0 Dec 14 15:56 file17
-rw-r--r--. 1 root root 0 Dec 14 15:56 file18
-rw-r--r--. 1 root root 0 Dec 14 15:56 file19
-rw-r--r--. 1 root root 0 Dec 14 15:56 file2
-rw-r--r--. 1 root root 0 Dec 14 15:56 file20
-rw-r--r--. 1 root root 0 Dec 14 15:56 file3
-rw-r--r--. 1 root root 0 Dec 14 15:56 file4
-rw-r--r--. 1 root root 0 Dec 14 15:56 file5
-rw-r--r--. 1 root root 0 Dec 14 15:56 file6
-rw-r--r--. 1 root root 0 Dec 14 15:56 file7
-rw-r--r--. 1 root root 0 Dec 14 15:56 file8
一次性創建file開頭 filea fileb filec 三個文件
touch file{a..c} 等價於
touch file{a,b,c}
[root@linux linux]# touch file{a..c}
[root@linux linux]# ll -a
total 0
drwxr-xr-x. 3 root root 115 Dec 14 16:00 .
dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
drwxr-xr-x. 2 root root 6 Dec 14 15:48 .file
-rw-r--r--. 1 root root 0 Dec 14 16:00 filea
-rw-r--r--. 1 root root 0 Dec 14 16:00 fileb
-rw-r--r--. 1 root root 0 Dec 14 16:00 filec
-rw-r--r--. 1 root root 0 Dec 14 15:54 gg.txt
-rw-r--r--. 1 root root 0 Dec 14 15:53 guouog
-rw-r--r--. 1 root root 0 Dec 14 15:54 zhu.txt
-rw-r--r--. 1 root root 0 Dec 14 15:53 zhuzhu
目錄 mkdir
創建一個目錄
mkdir dir1
[root@linux linux]# mkdir dir1
[root@linux linux]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 14 16:06 dir1
同時在文件夾下面一次性創建兩個目錄
mkdir /linux/{dir2,dir3}
[root@linux ~]# mkdir /linux/{dir2,dir3}
[root@linux ~]# ll /linux
total 0
drwxr-xr-x. 2 root root 6 Dec 14 16:06 dir1
drwxr-xr-x. 2 root root 6 Dec 14 16:08 dir2
drwxr-xr-x. 2 root root 6 Dec 14 16:08 dir3
一次性創建多級目錄,
mkdir -pv /linux/dir22/xiaohai
[root@linux dir3]# mkdir -pv /linux/dir22/xiaohai
mkdir: created directory ‘/linux/dir22’
mkdir: created directory ‘/linux/dir22/xiaohai’
復制 cp
復制一個文件到指定目錄
cp -v anaconda-ks.cfg /linux/dir2/
anaconda-ks.cfg 文件拷貝到dir2 目錄下
-v 展示詳細信息
[root@linux dir1]# cp -v anaconda-ks.cfg /linux/dir2/
‘anaconda-ks.cfg’ -> ‘/linux/dir2/anaconda-ks.cfg’
復制一個文件到指定目錄並且重命名
cp -v anaconda-ks.cfg /linux/dir2/anaconda.txt
[root@linux dir2]# cp -v anaconda-ks.cfg /linux/dir2/anaconda1.txt
‘anaconda-ks.cfg’ -> ‘/linux/dir2/anaconda1.txt’
復制一個文件如果已存在覆蓋
cp -rv anaconda1.txt /.
-r
[root@linux dir2]# cp -rv anaconda1.txt /.
cp: overwrite ‘/./anaconda1.txt’?
移動 mv
將file2移動到/home/dir3下
mv file2 /home/dir3
將fiel2移動到home/dir3下,並改名為file20
mv file2 /home/dir3/file20
重命名
當前位置移動就是重命名
mv file4 file5
刪除 rm
rm /目錄 刪除
rm -rf /目錄 遞歸並強制刪除
-r 遞歸
-f force 強制
-v 詳細過程
查看
cat
cat 文件地址
-n 顯示行號
-A 顯示控制字符(換行符/制表符)
linux 換行$
Windows 換行^M$
head 默認查看前世行
默認該文件的前10行 也可以指定行數
head -2 /文件
tail 默認查看后十行
tail -20 /w文件
從后查看 指定多少行
tail -f /文件
滾動展示文件內容
less 分頁顯示文件內容
less 文件/
grep 搜索文件中帶有指定內容的行,可使用正則
grep '關鍵字' /文件地址
grep '^a' /文件地址 以a開頭的
編輯器
gedit
圖形化編輯器
vi
- vi 工作模式
當使用 vi a.txt 進入到command model(命令模式)
輸入i 進入到編輯模式
按v/V/^v 進入到可視化模式
按:進入到擴展命令模式(extended command model)
進入到擴展命令模式 按wq退出
命令模式(在命令模式下操作)
光標移動
hjkl
l右移動
h 左移動
j下移動
k 上移動
0 按0 回到行首
$ 按$回到行尾
gg 回到第一行行首
G 回到行尾
5G 回到第五行行首
查找
/ 輸入關鍵詞查找 按n/N 下一個 小n往后找 大N往前找
/^d 以d開頭的
/st$以st結尾的
復制
- y 命令(以行為單位)
yy 復制一行
ygg 從光標開始一直復制到第一行
3yy 復制三行
yG 從行首復制到行為
刪除
- d 命令(以行為單位)
D 從光標刪除到尾行
dd 刪除u當前行
3dd 刪除下面三行
dgg 從當前行開始刪除到行首
dG 從當前行刪除到行尾
粘貼
- p 粘貼
- x 刪除光標所在字符
- u 撤銷
- ^r 重做
- r 用來修改一個字符
進入到其他模式
- a 進入到編輯模式(光標在當前位置的下個字符)
- A 進入到編輯模式 (光標到行尾)
- i 進入到編輯模式 (光標到行前一個字符)
- o 進入到編輯模式(光標換行)
- :進入模式模式
- v 進入可視模式
- ^v 進入可視塊模式
- V 進入可是模式
- R 進入替換模式
可是塊模式
- 塊插入(在制定塊前插入字符) ctrl+v 選擇塊 ->shift+i 輸入字符-->按Esc 退出
- 塊替換 ctrl+v 選擇塊,r 輸入替換字符
- 塊刪除 ctrl+v ,d|x 刪除
- 塊復制 ctrl+v 選擇塊 ,y
擴展命令模式 按:進入
:10 進入10行
:w 保存
:q 退出
:wq 保存並退出
:w! 強制保存並退出
:q! 不保存 強制退出
:wq! 強制保存並退出
:x 保存並退出
:X 給文件加入密碼
查找替換 按:進入
/ 替換標識符 也可以改成 @#¥%% 隨意字符
:1,5 /s/small/big/
把1~5行的每行第一個small替換成big
:1,5 /s/small/big/g
把1~5行的每行所有small替換成big
:1,$ /s/small/big/
把1~最后一行的每行第一個small替換成big
:1,$ /s/small/big/g
把1~最后一行的每行所有small替換成big
:4,9 s/^#// 將4-9行以#開頭的替換空
讀入文件/寫文件(另存為)
:w 保存到當前位置
:w /linux/test.txt 保存到linux/test.txt
:1,3 w /linux/33.txt 把1到3行去保存到33.txt
:r /etc/hosts 讀入文件到當前行后
:5 r /ect/hosts 讀入文件到第五行后
設置環境
- 關閉窗口失效
: set number 設置行號
: set Ic 不缺分大小寫
: set ai 自動縮進
:set list 顯示控制字符
:set nolist 取消顯示控制字符
:set nonu 取消顯示行號
:set noic 取消忽略大小寫 - 永久有效
vim ~/.vimrc
set Ic
set nu
一次性打開兩個文件
vim -O /etc/hostname /ect/hosts
小o 水平分割
大O 垂直分割
按ctrl+ww 切換