Linux終端 進入編輯IP地址命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0 按鍵“i”:進行編輯 按鍵“ESC”:退出編輯 按鍵“:”:輸入wq,退出 重啟網路服務命令:/etc/init.d/network restart 虛擬終端 minget ...
Linux終端
進入編輯IP地址命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0
按鍵“i”:進行編輯
按鍵“ESC”:退出編輯
按鍵“:”:輸入wq,退出
重啟網路服務命令:/etc/init.d/network restart
虛擬終端 mingetty 程式產生
切換終端 ctrl+alt+FN N=1~6
輸入tty顯示當前的那個終端
模擬終端 使用ssh通過網路連接到Linux
/dev/pts/0
Secure shell SSH TCP22埠連接到Linux
Linux的shell
GUI
Gnome C語言開發
KDE C++開發
Xface 輕量級圖形界面
CLI
Bsh Unix提供的shell 功能弱
sh 安全穩定
csh Bill joy 研發Csh語法接近C語言 功能比sh強
ksh 商業版的ksh改進了csh GNU組織開發了免費的ksh 比商業版的ksh功能少
bash GNU組織融合了Ksh Csh 和sh特性重新開發 能夠操縱Liunx和Unix
zsh
tcsh
查看當前使用的shell
[root@WebServer ~]# echo $0
-bash
查看Linux可用的shell
[root@WebServer ~]# cat /etc/shells
/bin/sh
/bin/bash
bash功能
- 命令行編輯
- 內部命令和外部命令
- 命令補全 路徑補全
- 命令歷史
- 文件名通配符
- 命令別名
- 命令替換
- 命令行展開{} 多項式
- 管道和重定向
命令行編輯
游標快速移動
CTRL+a 快速跳轉到行首
CTRL+e 快讀跳轉到行尾
刪除命令行中的內容
CTRL+w 刪除游標前一個單詞
CTRL+u 刪除游標到行首的字元
CTRL+k 刪除游標到行尾的字元
清屏
CTRL+l Windows命令提示符 cls
取消不執行的命令
CTRL+c
內部命令和外部命令
內部命令 shell程式自帶的命令
外部命令 在系統的某個路徑下的可執行程式
外部命令查找 依賴於PATH變數
查看外部命令搜索路徑 查看PATH變數
echo $PATH
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
type pwd 查看是否是內部命令還是外部命令
[root@localhost ~]# type pwd
pwd is a shell builtin
命令補全和路徑補全
命令補全 按tab鍵補全命令 連按tab鍵 列出所有可能的命令
hash表緩存命令所在位置
hash –d wc 刪除wc命令緩存
hash –r 清空hash緩存表
路徑補全 按tab鍵補全路徑 連按tab鍵 列出所有可能的命令
命令歷史
查看命令歷史:history
緩存中的命令覆蓋歷史文件中:history –w
將緩存的新命令 追加到歷史文件中:history –a
查看緩存大小命令:echo $HISTSIZE
[root@localhost ~]# echo $HISTSIZE
1000
查看歷史文件大小命令:echo $HISTFILESIZE
[root@localhost ~]# echo $HISTFILESIZE
1000
查看歷史文件命令:echo $HISTFILE
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
查看$HISTCONTROL變數的值
echo $HISTCONTROL=ignoreups
[root@localhost ~]# echo $HISTCONTROL
Ignoredups 不記錄後面重覆的命令,只記錄第一個
export HISTCONTROL=ignorespace
[root@localhost ~]# export HISTCONTROL=ignorespace
[root@localhost ~]# echo $HISTCONTROL
Ignorespace 不記錄以空格開始的命令
export HISTCONTROL=ignoreboth
[root@localhost ~]# export HISTCONTROL=ignoreboth
[root@localhost ~]# echo $HISTCONTROL
Ignoreboth 不記錄以空格開始的命令,也不記錄後面重覆的命令
執行之前的命令
History 查看命令歷史
!10 可以執行命令歷史中第10行命令
!-1 可以執行命令歷史中倒數第1行命令
上下鍵可以翻命令歷史
Ctrl+p 向上翻
Ctrl+n 向下翻
當前命令 調用上一條命令的最後一個參數
第一種方法:
ESC鬆開 再按“.”
第二種方法:
輸入“!$”
清空命令歷史:history -c
[root@localhost ~]# history -c
[root@localhost ~]# history
1 history
History 命令參數
-c 清空命令歷史
-w 保存命令歷史到歷史文件
-a 附加命令歷史到歷史文件
-d 4 刪除命令歷史的第4條命令
文件名通配符
通配符 特殊的字元 不表示字元的錶面意思 而是能夠匹配符合指定特征的字元
“*” 代表任意長度的字元
“?” 代表任意單個字元
“[]”
“[^]”
“[‘ ‘]”
查看當前目錄下所有的文件名字
[root@WebServer tmp]# ls
a1c a5b a b acb bac bca cab yum.log
a3d a7c abc b9c bba caa lost+found
通配符“*”
[root@WebServer tmp]# ls a*
a1c a3d a5b a7c a b abc acb
通配符“?”
[root@WebServer tmp]# ls a?b
a5b a b acb
通配符“[字母區間]”
[root@WebServer tmp]# ls a[a-z]b
Acb
通配符“[數字區間]”
[root@WebServer tmp]# ls a[1-9]c
a1c a7c
通配符“[‘ ‘]” 查找文件名中間有空格的文件
[root@WebServer tmp]# ls a[' ']b
a b
[:digit:] 代表數字 [0-9]
[root@WebServer tmp]# ls a[[:digit:]]c
a1c a7c
[:space:] 代表空格
[root@WebServer tmp]# ls a[[:space:]]b
a b
[:lower:] 代表[a-z]
[:upper:] 代表[A-Z]
[:alpha:] 代表[a-Z]
通配符“[^ ]”排除所選範圍內的文件
[root@WebServer tmp]# ls a[^1-5]c
a7c abc
命令別名
alias cmdalias=’command [option][argument]’
查看alias命令為shell內部命令
[root@WebServer ~]# type alias
alias is a shell builtin
查看定義的別名
[root@WebServer ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
定義命令別名
[root@WebServer ~]# alias if1='ifconfig eth0'
調用定義命令
[root@WebServer ~]# if1
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9F:95
inet addr:192.168.80.222 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5b:9f95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1413 errors:0 dropped:0 overruns:0 frame:0
TX packets:552 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:108205 (105.6 KiB) TX bytes:60165 (58.7 KiB)
調用命令本身
[root@WebServer ~]# \ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9F:95
inet addr:192.168.80.222 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5b:9f95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1648 errors:0 dropped:0 overruns:0 frame:0
TX packets:667 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:127043 (124.0 KiB) TX bytes:74955 (73.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:490 (490.0 b) TX bytes:490 (490.0 b)
查看當前目錄下所有隱藏文件
[root@WebServer ~]# ls –a
將命令別名添加到用戶環境配置文件
[root@WebServer ~]# vi .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
編輯/etc/bashrc 添加命令別名對所有用戶生效
[root@WebServer ~]# vi /etc/bashrc
刪除別名unalias cmdalias
命令替換
使用命令執行的結果替換該命令
使用“反引號”命令替換`命令`
[root@WebServer tmp]# touch file-`date +%Y-%m-%d-%H-%M-%S`
使用$(命令)替換命令
[root@WebServer tmp]# echo "The current directory is $(pwd)"
The current directory is /tmp
[root@WebServer ~]# date --help
[root@WebServer tmp]# touch file-$(date +%Y-%m-%d-%H-%M-%S)
在bash中反引號` `弱引用 能夠實現命令替換,單引號‘ ‘強引用不能夠實現命令替換
路徑展開
mkdir /tmp/zz/a/b /tmp/yy/a/b等於mkdir /tmp/{zz,yy}/a/b
[root@WebServer ~]# mkdir /tmp/{a,b}{c,d} -v
mkdir: 已創建目錄 "/tmp/ac"
mkdir: 已創建目錄 "/tmp/ad"
mkdir: 已創建目錄 "/tmp/bc"
mkdir: 已創建目錄 "/tmp/bd"
[root@WebServer ~]# mkdir /tmp/{zz,yy}/a/b -pv
mkdir: 已創建目錄 "/tmp/zz"
mkdir: 已創建目錄 "/tmp/zz/a"
mkdir: 已創建目錄 "/tmp/zz/a/b"
mkdir: 已創建目錄 "/tmp/yy"
mkdir: 已創建目錄 "/tmp/yy/a"
mkdir: 已創建目錄 "/tmp/yy/a/b
mkdir /tmp/{etc/{init.d,sysconfig},usr/{lib,bin,include},var/{spool,run},proc,sys,bin,lib}
輸入輸出重定向
標準輸入(stdin)
標準輸出(stdout)
標準錯誤輸出(stderr)
查看標準輸入輸出設備
ls –l /dev/std*
查看文件內容
tail –f /etc/passwd
ctrl+z 將進程轉到後臺
ps 查看運行的進程
ls –l /proc/進程號/fd 查看進程下的文件描述符
[root@WebServer ~]# ps
PID TTY TIME CMD
1235 pts/0 00:00:00 bash
1253 pts/0 00:00:00 tail
1274 pts/0 00:00:00 ps
[root@WebServer ~]# ls -l /proc/1253/fd
總用量 0
lrwx------. 1 root root 64 3月 11 04:47 0 -> /dev/pts/0
lrwx------. 1 root root 64 3月 11 04:47 1 -> /dev/pts/0
lrwx------. 1 root root 64 3月 11 04:47 2 -> /dev/pts/0
lr-x------. 1 root root 64 3月 11 04:47 3 -> /etc/passwd
lr-x------. 1 root root 64 3月 11 04:47 4 -> inotify
重定向:改變標準輸入、標準輸出的方向叫做重定向
重定向標準輸出
操作符“>”將命令的執行結果輸出到指定的文件中,而不是直接顯示在屏幕上
將標準輸出和標準錯誤輸出重定向到同一個文件
[zzy@WebServer ~]$ find /etc/ -name "*.conf" &>ab
[zzy@WebServer ~]$ cat ab
將標準輸出和標準錯誤輸出重定向到不同文件
[zzy@WebServer ~]$ find /etc/ -name "*.conf" 1>a 2>b
[zzy@WebServer ~]$ cat a
操作符“>>”將命令執行的結果追加輸出到指定文件
[zzy@WebServer ~]$ echo "12345">hn
[zzy@WebServer ~]$ cat hn
12345
[zzy@WebServer ~]$ echo "abcde">>hn
[zzy@WebServer ~]$ cat hn
12345
abcde
重定向標準輸入
操作符“<”將命令中接受輸入的途徑由預設的鍵盤更改為指定的文件
Here document
操作符“<<”指定輸入結束符
重定向 標準輸出
Ifconfig eth0 1>123
[root@WebServer ~]# ifconfig eth0 1>123
[root@WebServer ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9F:95
inet addr:192.168.80.222 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5b:9f95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:775 errors:0 dropped:0 overruns:0 frame:0
TX packets:309 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:59300 (57.9 KiB) TX bytes:37335 (36.4 KiB)
重定向 標準錯誤輸出
Ifconfig eth1 2>234
[root@WebServer ~]# ifconfig eth1 2>234
[root@WebServer ~]# cat 234
eth1: error fetching interface information: Device not found
[zzy@WebServer ~]$ find /etc/ -name "*.conf"
/etc/security/group.conf
find: “/etc/audit”: 許可權不夠
管道技術
1、 在管道後面的命令,都不應該再加文件名
2、 再管道中只有標準輸出才能傳遞給下一個命令 標準錯誤輸出直接輸出到終端
可以把標準錯誤輸出給重定向
[worker@WebServer ~]$ find /etc –name “*.conf” 2>/dev/null | grep rc
3、 有些命令不支持管道技術
xargs 讓ls支持管道技術
[root@WebServer ~]# which cat | xargs ls –l
謝謝韓立輝老師