Day23 shell介紹

shell介紹

介紹(摘自百度百科):linux

Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。它接收用戶輸入的命令並把它送入內核去執行 。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令而且把它們送到內核。不只如此,Shell有本身的編程語言用於對命令的編輯,它容許用戶編寫由shell命令組成的程序。Shell編程語言具備普通編程語言的不少特色,好比它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其餘應用程序具備一樣的效果。
Linux提供了像MicrosoftWindows那樣的可視的命令輸入界面--X Window的圖形用戶界面(GUI)。它提供了不少桌面環境系統,其操做就像Windows同樣,有窗口、圖標和菜單,全部的管理都是經過鼠標控制。GNOME。
每一個Linux系統的用戶能夠擁有他本身的用戶界面或Shell,用以知足他們本身專門的Shell須要。
同Linux自己同樣,Shell也有多種不一樣的版本
主要有下列版本的Shell: Bourne Shell:是貝爾實驗室開發的。 BASH:是GNU的Bourne Again Shell,是GNU操做系統上默認的shell。 Korn Shell:是對Bourne SHell的發展,在大部份內容上與Bourne Shell兼容。 C Shell:是SUN公司Shell的BSD版本。 Z Shell:The last shell you’ll ever need! Z是最後一個字母,也就是終極Shell。它集成了bash、ksh的重要特性,同時又增長了本身獨有的特性。shell

歷史命令

  • 介紹 咱們執行過的命令Linux都會記錄,預設能夠記錄1000條歷史命令。這些命令保存在用戶的家目錄的.bash_history文件中。但須要注意的是,只有當用戶正常退出當前shell時,在當前shell中運行的命令纔會保存至.bash_history文件中。
  • 命令選項

history:顯示使用過的全部命令;
history -c:清空當前內存中的歷史命令,沒法清空配置文件;
!!:執行上一條命令;
!n:執行命令歷史中的第n條;
!字符串:執行最近一次使用這個字符串開頭的命令編程

  • 環境變量HISTSIZE

系統內置的環境變量,它決定了你所能保存的命令歷史的條數vim

[root@centos001 ~]# echo $HISTSIZE
1000
  • 修改變量HISTSIZE

在/etc/profile中修改;
用/HISTSIZE找到並修改;
source /etc/profile重啓生效。centos

[root@centos001 ~]# vi /etc/profile
[root@centos001 ~]# source /etc/profile
[root@centos001 ~]# echo $HISTSIZE
5000
  • 讓使用history命令時,顯示命令使用的時間(臨時
[root@centos001 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
[root@centos001 ~]# history
    1  2017/11/15 23:35:22dhclient
    2  2017/11/15 23:35:22ip addr
    3  2017/11/15 23:35:22vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    4  2017/11/15 23:35:22systemctl restart network.service
  • 讓使用history命令時,顯示命令使用的時間(永久

需更改配置文件;
打開配置文件/etc/profile; 找到HISTSIZE變量的位置並在下面添加HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
保存退出後並重啓服務bash

[root@centos001 ~]# vim /etc/profile
[root@centos001 ~]# source !$
source /etc/profile
  • 永久保存命令歷史

chattr +a ~/.bash_history追加權限(沒法刪除);
在沒有正常退出的狀況下,history保存的命令歷史是不完整的。編程語言

命令、文件名補全和別名

  • 補全介紹

以前屢次使用的 TAB鍵,能夠幫咱們補全一個指令、路徑或文件名。連續按兩次,則會吧全部的相關文件名或指令列出來。注:centos7默認不支持補全命令須安裝一個包bash-completion,且 重啓後生效。centos7

  • 別名alias

語法:**alias【別名】=‘命令’ **, 當命令過長時咱們能夠給它設置別名,方便咱們使用;
存放位置:第一個是存放在用戶家目錄下的 .bashrc 文件中,第二個是存放在 /etc/profile.d 目錄下的 colorls.sh 和 colorgrep.sh 腳本中定義的。操作系統

通配符

  • 介紹

在bash下,可使用***來匹配零個或多個字符。用?**來匹配一個字符rest

[root@centos001 ~]# ls
111     234        3.txt  aminglinux         dir3           ls2
123     2.txt      aling  anaconda-ks.cfg.1  dir3.tar       test
22.txt  2.txt.zip  aming  d6z                linux計劃.txt  yum.log
[root@centos001 ~]# ls *.txt
22.txt  2.txt  3.txt  linux計劃.txt
[root@centos001 ~]# ls *txt
22.txt  2.txt  3.txt  linux計劃.txt
[root@centos001 ~]# ls *txt*
22.txt  2.txt  2.txt.zip  3.txt  linux計劃.txt
[root@centos001 ~]# ls 1*
111:
aming3
123:
[root@centos001 ~]# ls ?.txt
2.txt  3.txt
[root@centos001 ~]# ls [0-3].txt //可一用括號加數字顯示範圍
2.txt  3.txt
[root@centos001 ~]# ls {1,2}.txt // 花括號也能夠 可是裏面用逗號 ,表或者的意思
ls: 沒法訪問1.txt: 沒有那個文件或目錄
2.txt

輸入、輸出重定向

  • 介紹

輸入定向用於改變命令的輸入,輸出定向用與改變命令的輸出。輸出定向更經常使用,用於將命令的結果輸入文件中,而不是屏幕上
輸入是**<,且輸入重定向,左邊必須是命令,不支持文件輸入重定向到文件中的;
輸出
>** ;
錯誤重定向命令:2>:它會把命令產生的錯誤信息指定輸入到一個文件中去;
追加劇定向命令:**>>**在原來基礎上增長。

  • 示例
[root@centos001 ~]# lsaaa
-bash: lsaaa: 未找到命令
[root@centos001 ~]# lsaaa 2> 2.txt
-bash: 2.txt: 權限不夠
[root@centos001 ~]# lsaaa 2> 1.txt
[root@centos001 ~]# cat 1.txt 
-bash: lsaaa: 未找到命令
[root@centos001 ~]# lsaaa 2>> 1.txt
[root@centos001 ~]# cat 1.txt 
-bash: lsaaa: 未找到命令
-bash: lsaaa: 未找到命令
[root@centos001 ~]# ls [12].txt aaa.txt & > a.txt  //1.把正確錯誤一塊兒輸出到一個文件
[2] 27725
[root@centos001 ~]# ls: 沒法訪問aaa.txt: 沒有那個文件或目錄
1.txt  2.txt
^C
[2]-  退出 2                ls --color=auto [12].txt aaa.txt
[root@centos001 ~]# ls [12].txt aaa.txt > 1.txt 2>a.txt       //第二種寫法
[root@centos001 ~]# cat 1.txt 
1.txt
2.txt
[root@centos001 ~]# cat a.txt 
ls: 沒法訪問aaa.txt: 沒有那個文件或目錄
 [root@centos001 ~]# cat a.txt 
ls: 沒法訪問aaa.txt: 沒有那個文件或目錄
[root@centos001 ~]# wc -l <1.txt         //輸入重定向
2
[root@centos001 ~]# 2.txt < 1.txt        //語法錯誤
-bash: 2.txt: 未找到命令
相關文章
相關標籤/搜索