第三章 使用幫助

来源:http://www.cnblogs.com/sunan/archive/2017/11/22/7881648.html
-Advertisement-
Play Games

內部命令和外部命令 內部命令:系統集成的命令,集成到bash程式中的命令,可以用enable和help查看內部命令,直接和系統一樣運行在記憶體中,執行速度快。內部命令中的:相當於TRUE,即什麼都不幹。 enable cmd啟用內部命令 enable –n cmd 禁用內部命令 enable –n 查 ...


內部命令和外部命令

內部命令:系統集成的命令,集成到bash程式中的命令,可以用enable和help查看內部命令,直接和系統一樣運行在記憶體中,執行速度快。內部命令中的:相當於TRUE,即什麼都不幹。

enable cmd啟用內部命令

                    enable –n cmd 禁用內部命令

                    enable –n 查看所有禁用的內部命令

                    enable –n enable 自殺,重新註銷即可恢復

外部命令:在文件系統路徑下有對應的可執行程式文件

查看路徑:which  -a |--skip-alias; whereis

區別指定的命令是內部或外部命令

type COMMAND

如果執行過一個外部命令,它會把這個命令的路徑記錄到記憶體中,這個就是hash緩存表

hash常見用法:

                            hash       顯示hash緩存

                            hash -l    顯示hash緩存,可作為輸入使用,更詳細。

                            hash –p  path name 將命令全路徑path起別名為name

                            hash –p /usr/bin/free f

     hash –t name 列印緩存中name的路徑

                     hash –t f

                            hash –d name 清除name緩存

                            hash –r 清除所有緩存

       which –a free 顯示所有路徑下的free

命令執行優先順序:別名>內部命令>外部命令 

問:為什麼有的命令既有內部又有外部?

       有可能有的shell中沒有這個內部命令,外部有還可以執行。

[root@centos7 ~]#alias

alias cp='cp -i'

......

顯示當前shell進程所有可用的命令別名

[root@centos7 ~]#alias date='date +%F'

定義別名date,其相當於執行命令date +%F

在命令行中定義的別名,僅對當前shell進程有效

如果想永久有效,要定義在配置文件中

       僅對當前用戶:~/.bashrc

       對所有用戶有效:/etc/bashrc  添加到最後即可

編輯配置給出的新配置不會立即生效,需要bash進程重新讀取配置文件

source  /path/to/config_file

.  /path/to/config_file

撤銷別名:unalias

unalias  [-a]  name [name …]

-a 取消所有別名

如果別名同原命令同名,要執行原命令,可使用

\COMMAND

‘COMMAND’

/PATH/COMMAND

退出某個執行的命令:

Ctrl+c:強制退出,有可能數據丟失。

Ctrl+d:正常退出。

tab鍵

[root@centos7 ~]#rpm -qa bash*

bash-completion-2.1-6.el7.noarch

需要安裝了上面這個包才能啟用Tab功能

命令補全

內部命令:直接補全

外部命令:bash根據PATH環境變數定義的路徑,自左而右在每個路徑搜尋以給定命令名命名的文件,第一次找到的命令即為要執行的命令

路徑補全

把用戶給出的字元串當做路徑開頭,併在其指定上級目錄下搜索以指定的字元串開頭的文件名

如果唯一:則直接補全

否則:再次Tab給出列表

雙擊Tab

command 2Tab 所有子命令或文件補全

string2Tab   以string開頭命令

[root@centos7 ~]#/

app/        etc/        lost+found/ proc/       srv/        usr/

bin/        home/       media/      root/       sys/        var/

boot/       lib/        mnt/        run/        testdir/   

dev/        lib64/      opt/        sbin/       tmp/

/2Tab   顯示所有根目錄下一級目錄,包括隱藏目錄

[root@centos7 ~]#./

.cache/    .dbus/     Documents/ .local/    Music/     Public/    Videos/

.config/   Desktop/   Downloads/ .mozilla/  Pictures/  Templates/

./2Tab   當前目錄下子目錄,包括隱藏目錄

[root@centos7 ~]#*

Desktop    Downloads  Pictures   Templates 

Documents  Music      Public     Videos

*2Tab   當前目錄下子目錄,不包括隱藏目錄

[root@centos7 ~]#~

~dbus/                ~polkitd/             ~sunan/

~ftp                  ~postfix/             ~sync/~gnome-initial-setup  ~root/                ~usbmuxd/

......

~2Tab   所有用戶列表

[root@centos7 ~]#$

$_                                   $LINENO

$BASH                                $LOGNAME
......

$2Tab   所有變數

[root@centos6 ~]#@

@::1                      @localhost4.localdomain4  @localhost.localdomain

@localhost                @localhost6              

@localhost4               @localhost6.localdomain6 

@2Tab  /etc/hosts記錄    (centos7不支持)

[root@centos6 /]#=

app/        dev/        lost+found/ opt/        srv/       

.autofsck   etc/        media/      proc/       sys/       

bin/        home/       misc/       root/       tmp/       

boot/       lib/        mnt/        sbin/       usr/       

.dbus/      lib64/      net/        selinux/    var/ 

=2Tab   相當於ls –A     (centos7不支持)

命令行歷史 

  • 保存你輸入的命令歷史。可以用它來重覆執行命令
  • 登錄shell時,會讀取命令歷史文件中記錄下的命令~/.bash_history
  • 登錄進shell後新執行的命令只會記錄在緩存中;這些命令會用戶退出時“追加”至命令歷史文件中

重覆前一個命令,有4種方法

  1. 重覆前一個命令使用上方向鍵,並回車執行
  2. !! 並回車執行
  3. 輸入!-1並回車執行
  4. 按Ctrl+p並回車執行

!:0 執行前一條命令(去除參數)

Ctrl + n 顯示當前歷史中的下一條命令,但不執行

Ctrl + j 執行當前命令

!n 執行history命令輸出對應序號n的命令

!-n 執行history歷史中倒數第n個命令

!string 重覆前一個以“string”開頭的命令

!?string 重覆前一個包含string的命令

!string:p僅列印命令歷史,而不執行

!$:p 列印輸出!$(上一條命令的最後一個參數)的內容

!*:p列印輸出!*(上一條命令的所有參數)的內容

^string刪除上一條命令中的第一個string

^string1^string2將上一條命令中的第一個string1替換為string2

!:gs/string1/string2將上一條命令中所有的string1都替換為string2

使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令

ctrl-r來在命令歷史中搜索命令

(reverse-i-search)

Ctrl+g:從歷史搜索模式退出

要重新調用前一個命令中最後一個參數:

!$ 表示

Esc, .(點擊Esc鍵後鬆開,然後點擊.鍵)

Alt+ .(按住Alt鍵的同時點擊.鍵)

調用歷史參數:

command !^ : 利用上一個命令的第一個參數做cmd的參數

command !$ : 利用上一個命令的最後一個參數做cmd的參數

command !* : 利用上一個命令的全部參數做cmd的參數

command !:n : 利用上一個命令的第n個參數做cmd的參數

command !n:^ 調用第n條命令的第一個參數

command !n:$ 調用第n條命令的最後一個參數

command !n:m 調用第n條命令的第m個參數

command !n:* 調用第n條命令的所有參數

command !string:^ 從命令歷史中搜索以string 開頭的命令,並獲取它的第一個參數

command !string:$ 從命令歷史中搜索以string 開頭的命令,並獲取它的最後一個參數

command !string:n 從命令歷史中搜索以string 開頭的命令,並獲取它的第n個參數

command !string:* 從命令歷史中搜索以string 開頭的命令,並獲取它的所有參數

命令history:

history [-c] [-d offset] [n]

history -anrw[filename]

history -psarg[arg...]

-c: 清空命令歷史

-d offset: 刪除歷史中指定的第offset個命令

n: 顯示最近的n條歷史

-a: 追加本次會話新執行的命令歷史列表至歷史文件

-r: 讀歷史文件附加到歷史列表

-w: 保存歷史列表到指定的歷史文件

-n: 讀歷史文件中未讀過的行到歷史列表

-p: 展開歷史參數成多行,但不存在歷史列表中

-s: 展開歷史參數成一行,附加在歷史列表後

[root@centos6 ~]#history -p `ls` `pwd`  ------------命令中調用命令使用反向單引號,就是鍵盤tab鍵上方的鍵

Desktop

Documents

...... ------------ls執行結果
/root ------------pwd執行結果

ls和pwd全執行了,但歷史中沒有記錄,-p選項作用。

[root@centos6 ~]#history -s reboot

歷史命令顯示的是reboot,但系統沒有重啟,可以偽造歷史

命令歷史相關環境變數:

HISTSIZE:命令歷史記錄的條數,命令的記錄的記憶體中歷史的長度,修改/etc/profile文件即可。

HISTFILE:指定歷史文件,預設為~/.bash_history,磁碟上歷史文件

HISTFILESIZE:命令歷史文件記錄歷史的條數

記憶體中記錄的歷史命令和磁碟文件記錄的歷史命令數可以不一樣,但一般相同。

HISTTIMEFORMAT=“%F %T “ 顯示時間

HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2開頭的歷史

控制命令歷史的記錄方式:

環境變數:HISTCONTROL

=ignoredups    預設,忽略重覆的命令,連續且相同為“重覆”

=ignorespace   忽略所有以空白開頭的命令

=ignoreboth    相當於ignoredups, ignorespace的組合

=erasedups     刪除重覆命令

export 變數名="

存放在/etc/profile 或~/.bash_profile

bash快捷鍵:

Ctrl + l   清屏,相當於clear命令

Ctrl + o   執行當前命令,並重新顯示本命令

Ctrl + s   阻止屏幕輸出,鎖定

Ctrl + q   允許屏幕輸出

Ctrl + c   終止命令

Ctrl + z   掛起命令

Ctrl + a   游標移到命令行首,相當於Home

Ctrl + e   游標移到命令行尾,相當於End

Ctrl + f   游標向右移動一個字元

Ctrl + b   游標向左移動一個字元

Alt + f    游標向右移動一個單詞尾

Alt + b    游標向左移動一個單詞首

Ctrl + xx  游標在命令行首和游標之間移動

Ctrl + u   從游標處刪除至命令行首

Ctrl + k   從游標處刪除至命令行尾

Alt + r    刪除當前整行

Ctrl + w  從游標處向左刪除至單詞首

Alt + d   從游標處向右刪除至單詞尾

Ctrl + d   刪除游標處的一個字元

Ctrl + h   刪除游標前的一個字元

Ctrl + y   將刪除的字元粘貼至游標後

Alt + c   從游標處開始向右更改為首字母大寫的單詞

Alt + u   從游標處開始,將右邊一個單詞更改為大寫

Alt + l   從游標處開始,將右邊一個單詞更改為小寫

Ctrl + t   交換游標處和之前的字元位置

Alt + t   交換游標處和之前的單詞位置

Alt + N  提示輸入指定字元後,重覆顯示該字元N次

註意:Alt  組合快捷鍵經常和其它軟體衝突

       在SecureCRT有時候Alt鍵會有衝突:

       解決辦法:右擊會話選擇會話選項,選擇Emacs,選中使用ALT作為元鍵,然後選中第三項。

使用幫助:

whatis command

依賴於後臺資料庫,剛剛裝上的系統,執行makewhatis(centos6)或mandb(centos7)

command –-help

直接敲help或者enable顯示所有的內部命令

man and info

本地幫助文檔/usr/share/doc/

官網線上文檔

其他網站和搜索

命令幫助:

內部命令:help COMMAND

man bash

               註意:不要用man內部命令,man內部命令其實是打開的man bash

外部命令:

(1)COMMAND –-help(有些命令不支持,使用較少)

    COMMAND  -h

示例:

date --help

Usage:date[OPTION]...[+FORMAT]or: date[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]

[]表示可選項

CAPS或<>表示變化的數據

...表示一個列表

x |y| z的意思是“x或y或z“,即這三個意思一樣,選一個即可

-abc的意思是-a -b –c

{ } 表示分組

(2)使用手冊(manual)

    man  COMMAND(使用較多,比較通用)

    提供命令幫助的文件

    手冊頁存放在/usr/share/man

    幾乎每個命令都有man的”章節”

    man頁面分組為不同的“章節”

    統稱為Linux手冊

       man命令的配置文件:/etc/man.config(centos6)|man_db.conf(centos7)

       MANPATH /PATH/TO/SOMEWHERE:指明man文件搜索位置

       自己手工安裝第三方軟體,需要按上面的格式,放置幫助文檔路徑,不然man這個命令搜不到文檔

    man –M /PATH/TO/SOMEWHERE  COMMAND:到指定位置下搜索

    COMMAND命令的手冊並顯示

    中文man需要安裝包man-page-zh-CN

   man 章節

    1:用戶命令

    2:系統調用

    3:C庫調用

    4:設備文件及特殊文件

    5:配置文件格式

    6:游戲

    7:雜項

    8:管理類的命令

    9:Linux內核API

[root@centos6 /]#whatis date

date                 (1)  - print or set the system date and time

date                 (1p)  - write the date and time

[root@centos6 /]#whatis passwd

passwd               (1)  - update user's authentication tokens

passwd               (5)  - password file

passwd [sslpasswd]   (1ssl)  - compute password hashes

通過whatis命令可以查看命令有那些章節,帶p的適合開發相關的。

[root@centos6 /]#man 5 passwd

Formatting page, please wait...

PASSWD(5)                  Linux Programmer's Manual                 PASSWD(5)

 

NAME

       passwd - password file

需要添加第幾章節,才是查看的是第幾章節的命令,否則按1來看

[root@centos6 /]#whereis ls

ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

前面是命令的路徑,後面是文檔的man幫助路徑

man幫助段落說明

幫助手冊中的段落說明:

        NAME 名稱及簡要說明

               SYNOPSIS 用法格式說明

               []   可選內容

              <>   必選內容

              a|b   二選一

              { }   分組

              …   同一內容出現多次

              DESCRIPTION 詳細說明

              OPTIONS  選項說明

              EXAMPLES 示例

              FILES  相關文件

              AUTHOR 作者

             COPYRIGHT 版本信息

             REPORTING BUGS bug信息

             SEE ALSO  其它幫助參考

man幫助:

查看man手冊頁

               man [章節]  keyword

               列出所有幫助

[root@centos6 /]#man -a passwd

Cannot open the message catalog "man" for locale "zh.CN"

(NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N")

Formatting page, please wait...

PASSWD(1)                       User utilities                       PASSWD(1)

man –a keyword列出所有章節的passwd幫助,按q切換到下一個

搜索man手冊

[root@centos6 /]#man -k hostname

dnsdomainname [hostname] (1)  - show the system's DNS domain name

domainname [hostname] (1)  - show or set the system's NIS/YP domain name

gethostname          (2)  - get/set hostname

gethostname          (3p)  - get name of current host

hostname             (1)  - show or set the system's host name

hostname             (7)  - hostname resolution description

hosts                (5)  - The static table lookup for hostnames

logresolve           (1)  - Resolve IP-addresses to hostnames in Apache log files

nisdomainname [hostname] (1)  - show or set system's NIS/YP domain name

man –k keyword 列出所有匹配的頁面,使用whatis資料庫

[root@centos6 /]#man -f passwd

passwd               (1)  - update user's authentication tokens

passwd               (5)  - password file

passwd [sslpasswd]   (1ssl)  - compute password hashes

[root@centos6 /]#whatis passwd

passwd               (1)  - update user's authentication tokens

passwd               (5)  - password file

passwd [sslpasswd]   (1ssl)  - compute password hashes

man –f keyword,相當於whatis

[root@centos6 /]#man -w 5 passwd

/var/cache/man/cat5/passwd.5.lzma (<-- /usr/share/man/man5/passwd.5.gz)

列印man幫助文件的路徑,man –w  [章節]  keyword

       man命令的操作方法:使用less命令實現

     space,^v,^f,^F:向文件尾翻屏

     b, ^b: 向文件首部翻屏

     d, ^d: 向文件尾部翻半屏

     u, ^u: 向文件首部翻半屏

     RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行y or ^Y or ^P or k or ^K:向文件首部翻一行

     q: 退出

      #:跳轉至第#行

     1G: 回到文件首部

      G:翻至文件尾部

man搜索:

                /KEYWORD:

以KEYWORD指定的字元串為關鍵字,從當前位置向文件尾部搜索;不區分字元大小寫;

n: 下一個

N:上一個

               ?KEYWORD:

以KEYWORD指定的字元串為關鍵字,從當前位置向文件首部搜索;不區分字元大小寫;

n: 跟搜索命令同方向,下一個

N:跟搜索命令反方向,上一個

(3)信息頁

info COMMAND

方向鍵,PgUp,PgDn 導航

Tab鍵移動到下一個鏈接

d 顯示主題目錄

Home 顯示主題首部

Enter進入選定鏈接

n/p/u/l進入下/前/上一層/最後一個鏈接

s文字文本搜索

q退出info

(4)程式自身的幫助文檔

README

INSTALL

ChangeLog

(5)程式官方文檔

[root@centos7 /]#sosreport

sosreport (version 3.4)

This command will collect diagnostic and configuration information from

this CentOS Linux system and installed applications.

向redhat官方發送系統分析包

    官方站點:Documentation

(6)發行版的官方文檔

(7)Google

        


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

-Advertisement-
Play Games
更多相關文章
  • try { //將新用戶信息插入資料庫 string strsql = "insert into httang_test.test(id,name,password,adress) values('" + this.IdTextBox.Text + "','" + this.NameTextBox. ...
  • 遇到一個認為有點奇怪的問題。 有兩個表,大概都是3億左右的數據,A表有A1欄位 B表有B1欄位,都是通過其他表來更新的。分別為A1使用C表,B1使用D表,不同的是C表很小隻有近1萬行,D表很大,也有3億。(C表後面成為小表,D表成為大表) 因為B表有3億數據,需要從D表這個3億數據來獲取更新,開始的 ...
  • 轉載請註明:http://www.cnblogs.com/dachen408/p/7878494.html 使用本機伺服器名'.'登錄,使用windows模式; 1.修改登錄模式為混合模式:右鍵伺服器名,屬性,安全性; 2.使用sa用戶登錄:安全性,登錄名,sa(雙擊),狀態;還需要配置config ...
  • 索引是建立在數據表上的,因此需要首先創建一張數據表,創建SQL 語句如下:MYSQL、MSSQLServer、DB2資料庫:CREATE TABLE T_Person (FNumber VARCHAR(20),FName VARCHAR(20),FAge INT)Oracle:CREATE TABL ...
  • 若發現sqlsrver所有帳號不小心被禁用了,這個時候怎麼辦?用重裝嗎?不用,仔細看小白是怎麼一步一步解開這個謎題的。首先需要Windows帳號設置里重新添加一個新帳號。並將其添加到管理員組裡面,然後按照以下步驟操作(註意/m是切換到單用戶的登錄模式下進行,修改完成後,建議切換到多用戶模式下):(1 ...
  • 1、一個文件的基本框架為:文件名、文件地址、文件大小、文件最大的大小、文件的增量(Filegrowth)。 2、文件有mdf、ndf、ldf 三種文件的區別。 3、文件組可以進行文件的管理 FileGroup 預設的文件組是 Primary 日誌文件無文件組的概念,存在Log文件中。 4、 alte ...
  • .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(註:tar是打包,不是壓縮!)———————————————.gz解壓1:gunzip FileName.gz解壓2:gzip -d FileName.gz壓縮:gzip File ...
  • 一、下載安裝包 (1). 下載MySQL源碼 (進入/usr/local/src目錄,使用wget下載) cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz (2). 下載 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...