Linux基礎入門 第二章 Linux終端和shell

来源:https://www.cnblogs.com/ram-zhou/archive/2019/04/07/10666737.html
-Advertisement-
Play Games

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功能

 

  1. 命令行編輯
  2. 內部命令和外部命令
  3. 命令補全 路徑補全
  4. 命令歷史
  5. 文件名通配符
  6. 命令別名
  7. 命令替換
  8. 命令行展開{} 多項式
  9. 管道和重定向

 

 

 

命令行編輯

 

  游標快速移動

 

  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

 

謝謝韓立輝老師 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文章的目的是實現一個用於身份證號碼判斷是否有效的功能 首先,創建一個身份證基類: 身份證有分15位,和18位兩種。 下麵先實現15位身份證的子類: 然後再寫一個18位身份證的判斷類: 最後,編寫一個管理類,用於統一給外部方法調用 ,當然,你也可以不用這麼做,直接實例化15位或者18位的身份證判斷類 ...
  • Docker 的網路 運行 ifconfig 找到 docker0 : 虛擬網卡預設網卡名稱為docker0 查看docker 的網橋: 我這裡預設們沒有進行安裝 網橋管理設備:進行安裝一下; yum install bridge-utils 命令:查看網橋crctl show: 註意上圖中的int ...
  • 原文鏈接:http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.aspx Key特性應用於實體的一個屬性上面,使之成為鍵屬性,然後生成資料庫的時候,數據表中相應的列就 ...
  • 打開「終端」,輸入以下內容,然後「Return」鍵,這樣就把隱藏的文件和文件夾顯示了; 隱藏原本的隱藏文件和文件夾,將上述命令替換成: 註:該命令適用於 OS X Mavericks 和 OS X Yosemite 系統。對於還在使用 OS X Mountain Lion 或是更早版本的系統的 Ma ...
  • 本章節對Exchange 各個主要發行版進行簡單彙總,分別列出每個服務包 (SP) 的內部版本號、累積更新 (CU) 或特定 Exchange 版本的更新彙總 (RU)。彙總內容適用於Exchange Server 2019、Exchange Server 2016、Exchange Server ... ...
  • 目錄 1、樹狀目錄結構圖 2、/目錄 3、/etc/目錄 4、/usr/目錄 5、/var/目錄 6、/proc/目錄 7、/dev/目錄 該文章主要來自於網路進行整理。 目錄結構參考地址: http://www.hudong.com/wiki/linux%E7%9B%AE%E5%BD%95%E7% ...
  • 這個pxe-e55" 錯誤表示 pxe 客戶端已向埠4011上的代理 dhcp 伺服器發送請求, 但未收到答覆。似乎只有在dhcp 伺服器上設置了 dhcp 類標識符選項 #60, 但同一臺電腦上沒有在埠4011上運行的代理 dhcp 服務時,才會出現此問題。 如果在不同的電腦上操作 dhc ...
  • DNS分離解析技術 yum install bind-chroot systemctl restart named systemctl enable named vim /etc/named.conf vim /etc/named.rfc1912.zones 配置網卡 cd /var/named/ ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...