shell介紹

shell介紹

shell是一個命令解釋器,提供用戶和機器之間的交互

  • 登錄終端,顯示的界面就是shell
  • 系統與硬件交互時是用的中間介質,它只是一個系統工具。

支持特定語法,好比邏輯判斷,循環

每一個用戶均可以有本身特定的shell

CentOS7默認shell爲bash(Bourne Agin Shell)

  • sh的加強版本。

系統裏還有其餘的shell,叫zsh,ksh等


命令歷史 history

  • 命令歷史是保存在/root/.bash_history 裏面的,能夠cat進行查看。linux

  • 默認命令歷史保存最大存1000條歷史命令。能夠echo $HISTSIZE進行查看數量。這個數量是環境變量控制的,能夠更改。shell

[root@localhost ~]# echo $HISTSIZE
1000
  • 環境變量HISTSIZE 在/etc/profile中修改,可改爲5000,改爲多少保存多少。
vi /etc/profile
找到
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000  ------------若是以爲1000條不夠能夠改爲5000-----------
if [ "$HISTCONTROL" = "ignorespace" ] ; then

更改以後必須退出一下終端從新進或者source /etc/profile 纔會更改vim

[root@localhost ~]# echo $HISTSIZE
1000
[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo $HISTSIZE
5000
  • 變量從新賦值

HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"bash

[root@localhost ~]# history 
    1  ls
    2  ls /etc/passwd
    3  cat /etc/passwd
    4  [root@localhost ~]# cat /etc/passwd
    5  root:x:0:0:root:/root:/bin/bash
    6  bin:x:1:1:bin:/bin:/sbin/nologin
    7  daemon:x:2:2:daemon:/sbin:/sbin/nologin
    8  adm:x:3:4:adm:/var/adm:/sbin/nologin
    9  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

從新賦值以後ssh

[root@localhost ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[root@localhost ~]# history 
    1  2017/08/30 19:20:18 ls
    2  2017/08/30 19:20:18 ls /etc/passwd
    3  2017/08/30 19:20:18 cat /etc/passwd
    4  2017/08/30 19:20:18 [root@localhost ~]# cat /etc/passwd
    5  2017/08/30 19:20:18 root:x:0:0:root:/root:/bin/bash
    6  2017/08/30 19:20:18 bin:x:1:1:bin:/bin:/sbin/nologin
    7  2017/08/30 19:20:18 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    8  2017/08/30 19:20:18 adm:x:3:4:adm:/var/adm:/sbin/nologin

這時候再打開一個新的終端,這個環境變量是不生效的。工具

若是想讓此環境變量全局生效,須要編輯 /etc/profile把HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "加到裏面學習

fi

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=5000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth

source /etc/profile後生效spa

  • 永久保存命令歷史

chattr +a ~/.bash_history 設置了這個權限只能追加不能刪除rest

  • 若是沒有正常退出,歷史命令保存不全

  • !!

表示運行最後一條歷史命令code

  • !n

指定運行歷史行數命令

  • !命令

表示命令歷史裏面最後一次輸入這個命令的命令


命令補全及別名

  • tab鍵,敲一下不全命令,敲兩下列出候選須要的命令

  • Centos7 支持參數補全,默認不能夠,須要安裝yum install -y bash-completion 以後重啓下系統才能生效。

  • alias別名,給命令重新起個名字

[root@localhost ~]# alias restartnet='systemctl restart network.service'
[root@localhost ~]# restartnet
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias restartnet='systemctl restart network.service'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#

alias 存在用戶家目錄下的 .bashrc文件裏。

還有一些存在 /etc/profile.d/下面

unalias 取消自定義別名


通配符

*

[root@localhost ~]# ls
111  1eer  1.txt  2.txt  anaconda-ks.cfg  erwe
[root@localhost ~]# ls *.txt
1.txt  2.txt
[root@localhost ~]# 
[root@localhost ~]# ls 1*
1eer  1.txt

111:
[root@localhost ~]# ls *1*
1eer  1.txt

111:
[root@localhost ~]#

?

問號表示任意一個字符

[root@localhost ~]# ls ?.txt
1.txt  2.txt
[root@localhost ~]# ls *.txt
1.txt  2.txt  bbcc.txt  bb.txt
[root@localhost ~]#

[]

選擇範圍

[root@localhost ~]# ls [123].txt
1.txt  2.txt
[root@localhost ~]# ls [0-9].txt
1.txt  2.txt
[root@localhost ~]# ls [1].txt
1.txt
[root@localhost ~]# ls [2].txt
2.txt
[root@localhost ~]#

{}

也是選擇範圍,跟[]差很少,可是中間有逗號

[root@localhost ~]# ls {1,2}.txt
1.txt  2.txt
[root@localhost ~]#

輸入輸出重定向

>

把>前面的內容刪除掉重定向到後面內容去。

>>

把>>前面的內容追加到後面內容去。

2>

表示把運行錯誤的信息定向到一個文件裏

[root@localhost ~]# fddd
-bash: fddd: 未找到命令
[root@localhost ~]# fddd 2> 1.txt 
[root@localhost ~]# cat 1.txt 
-bash: fddd: 未找到命令

2>>

錯誤追加劇定向

&>

錯誤和正確都有的輸出重定向

[root@localhost ~]# ls [12].txt asffsfs.txt &> 1.txt
[root@localhost ~]# cat 1.txt 
ls: 沒法訪問asffsfs.txt: 沒有那個文件或目錄
1.txt
2.txt
[root@localhost ~]#

<

輸入重定向

把<右邊的文件內容輸入到<左邊的命令裏面去

[root@localhost ~]# wc -l < 1.txt
3
[root@localhost ~]#

管道符

  • 「|」做用:把前面命令的輸出結果交給後面的命令


做業控制

  • ctrl z 暫停一個任務

[root@localhost ~]# vim 1.txt 

[1]+  已中止               vim 1.txt
[root@localhost ~]# vim 2.txt 

[2]+  已中止               vim 2.txt
[root@localhost ~]# jobs
[1]-  已中止               vim 1.txt
[2]+  已中止               vim 2.txt
[root@localhost ~]#
  • jobs命令用於顯示Linux中的任務列表及任務狀態,包括後臺運行的任務。

  • fg 恢復暫停的任務,能夠後面跟數字參數,表示恢復第幾個已暫停的任務

  • bg 後臺運行任務,不停的輸出信息,可是不耽誤運行命令


shell變量

  • PATH,HOME,PWD,LOGNAME

  • 能夠經過env 或set來查看變量,系統變量通常都是大些的英文字母

  • 變量名字的規則:字母,數字下劃線,首位不能爲數字

  • 變量有特殊符號時須要用單引號括起來

[root@localhost ~]# echo $a$bb
1
[root@localhost ~]# echo '$a$bb'
$a$bb
  • pstree命令會把linux系統中的全部進程以樹形結構顯示出來。若是沒有該命令:yum install -y psmisc

[root@localhost ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─pstree
        │                    └─2*[vim]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@localhost ~]#
  • export 全局設置變量,在同一個sshd下的子shell等知道這個變量,向下生效。

  • unset 變量名字:取消變量


環境變量配置文件

  • 系統環境變量的配置文件

    • /etc/profile : 這個文件預設了幾個重要的變量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等
    • /etc/bashrc : 這個文件主要預設umask以及PS1。這個PS1就是咱們在輸入命令時前面的字符串。
  • 用戶環境變量的配置文件

    • .bash_profile 該文件頂一個用戶的我的化路徑與環境變量的文件名稱。每一個用戶均可以使用該文件輸入專屬本身的shell信息,當用戶登陸時,該文件僅僅執行一次。
    • .bashrc 該文件包含專屬於本身的shell的bash信息,當登錄或每次打開新的shell時,該文件被讀取。
    • .bash_history 該文件用於記錄命令歷史。
    • .bash_logout 當退出shell時,會執行該文件,能夠將一些須要清理的工做放到這個文件夾中。

擴展學習

相關文章
相關標籤/搜索