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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...