我和linux的第二十二天

  這幾天學校的事情比較多,空閒時間也有,但沒有利用起來。前些天聽國學課,發覺本身心性仍是不很成熟,之前自覺遇到君子應用君子的方法相處,遇到小人用小人的方法對待,老師一句話,疏清了本身。當咱們用小人的方法對待小人時,有一天,你和小人打了一架,不少時候,咱們就不能再去以君子之心來對待君子了。什麼事都是同樣的,本身應該主宰本身,不該因外界的改變去改變本身。繼續吧,堅持下去。linux

 

命令別名alias、unalias:shell

新創一個新命令,能夠直接執行該命令。例如:alias lm=’ls -l | more’。alias查看設置別名,unalias取消命令別名。vim

歷史命令history:bash

history [參數],n數字,要列出最近的n條命令行的意思、-c將目前的shell中全部history內容所有清除。網絡

!number:執行第n條命令;!command由最近的命令向前搜尋命令串開頭爲command的那個命令,並執行;!!執行上一個命令。app

命令運行的順序:ui

1.以相對/絕對路徑執行文件;操作系統

2.由alias找到該命令來執行;.net

3.由bash內置的(builtin)命令來執行;命令行

4.經過$PATH這個變量的順序找到的第一個命令來執行。

bash的登陸和歡迎信息:/etc/issue,/etc/motd

登陸界面信息寫在/etc/issue中,issue內的變量代碼意義:\d本地端的日期、\t本地端的時間、\l顯示第幾個終端機接口、\m顯示硬件等級(i686,x84_64...)、\s顯示操做系統名稱、\r顯示系統版本、\n顯示主機網絡名稱。

/etc/issue.net這個是提供給telnet遠程登陸程序用的,當咱們使用telnet鏈接到主機時,主機的登陸界面就會顯示/etc/issue.net而不是/etc/issue。

/etc/motd這個是讓普通用戶登陸後取得的信息。

bash的環境配置文件:

login shell:取得bash時須要完整的登陸流程的,稱爲login shell。例如:由tty1~tty6登陸,須要輸入用戶帳號與密碼,此時的bash就稱爲login shell。

non-login shell:取得bash接口的方法不要重複登陸的舉動,例如:你以X window登陸後,再以X的圖形界面啓動終端機,此時那個終端接口沒有須要再次輸入帳號和密碼,此時bash環境稱爲non-login shell。

login shell讀取兩個配置文件:

/etc/profile:系統總體的設置,最好不要修改這個文件;

~/.bash_profile或~/.bash_login或~/.profile:屬於用戶我的設置,可修改本身的數據。其實bash的login shell設置只會讀取上面三個文件中的一個,而讀取的順序是依照上面的順序。

non-login shell讀取配置文件:

~/.bashrc:幫咱們定義三方面數據,1.依據不一樣的UID規定umask的值;2.依據不一樣的UID規定提示符(PS1變量);3.調用/etc/profile.d/*.sh的設置。

source:讀入環境配置文件命令

source(.) 配置文件名,將新設置的內容讀進目前的環境中。

其它配置文件:

/etc/man.config:規定了使用man的時候man page的路徑到哪裏尋找。

~/.bash_history:歷史命令的記錄文件。

~/.bash_logout:記錄了當我註銷bash後系統再幫我作完什麼操做後才離開。

終端機環境設置:stty,set

ctrl+c停止目前命令、ctrl+d輸入結束(EOF)、ctrl+m就是Enter、ctrl+s暫停屏幕的輸出、ctrl+q恢復屏幕的輸出、ctrl+u在提示符下,將正行命令刪除、ctrl+z暫停目前命令。

bash環境中的通配符:

wKioL1SFwSjjGNd9AAD3qC1M9iQ632.jpg

特殊符號:文件名進來不要使用到下述字符

wKioL1SFwU-yEHDBAAJq6z28Au0918.jpg

數據流重定向(redirect):

standard output與standard error output,標準輸出指的是命令執行所回傳的正確的信息,而標準錯誤輸出可理解爲命令執行失敗後,所回傳的錯誤信息。

傳送所用的特殊字符分別以下:

標準輸入(stdin):代碼爲0,使用<或<<;

標準輸出(stdout):代碼爲1,使用>或>>;

標準錯誤輸出(stderr):代碼爲2,使用2>或2>>。

1>:以覆蓋的方法將正確的數據輸出到指定的文件或設備上;

1>>:以累加的方法將正確的數據輸出到指定的文件或設備上;

2>:以覆蓋的方法將錯誤的數據輸出到指定的文件或設備上;

2>>:以累加的方法將錯誤的數據輸出到指定的文件或設備上。

<:將本來須要由鍵盤輸入的數據改成文件內容來代替;

<<:能夠終止一次輸入。

/dev/null垃圾桶黑洞設備

標準輸出和標準錯誤輸出一同輸出在一個文件夾使用2>&1或&>,例如:find /home -name .bashrc 2>&1 test,正確輸出和錯誤輸出一同寫入test中。

如下狀況下使用數據流重定向:

屏幕輸出的信息很重要,咱們須要將它保存下來;

後臺執行中的程序,不但願我它干擾屏幕正常的輸出結果時;

一些系統例行命令(如卸載/etc/crontab中的文件)的執行結果,但願它能夠保存下來時;

一些執行命令可能已知錯誤信息時,想以「2>/dec/null」將它丟棄時;

錯誤信息與正確信息須要分別輸出時。

命令執行的判斷依據,一次輸入多重命令:

cmd;cmd,不考慮命令相關性的連續命令執行;

$?命令回傳碼,若前一個命令執行結果正確,在linux下面會回傳一個$?=0的值。

wKiom1SFwNyibRtAAAEETOPwKIQ482.jpg

command1 && command2 || command3:cmd1正確執行,則執行cmd2,cmd2正確執行不執行cmd3;cmd2錯誤執行開始執行cmd3;cmd1錯誤執行不執行cmd2,執行cmd3。

管道命令pipe(|):command1 | command2 | command3,管道命令「|」僅能處理經由前面一個命令傳來的正確信息,也就是standard output的信息,對於standard error並無直接處理的能力。

選取命令:cut,grep

cut:提取某一段信息,以「行」爲單位。-d接分隔符與-f使用、-f依據-d的分隔字符將一段信息切割成爲數段,接數字、-c以字符(characters)的單位取出固定字符區間。

grep:分析一行信息,grep [參數] ‘查找字符串’ filename,-a將二進制(binary)文件以text文件的方式查找數據、-c計算找到‘查找字符串’的次數、-i(ignore)忽略大小寫的不一樣、-n輸出行號、-v反向選擇,即顯示出沒有‘查找字符串’的一行。

排序命令:sort,wc,uniq

sort:sort [參數] file or stdin,-f忽略大小寫、-b忽略最前面的空格符部分、-t分隔符,默認以[Tab]鍵來分隔、-k以哪一個區間來進行排序。

uniq:將重複的行刪除掉只顯示一行,uniq [參數],-i忽略大小寫,-c進行計數。

wc:計算輸出數據的總體數據。

雙向重定向:tee

能夠將數據流送與文件和屏幕(screen);而輸出到屏幕的,其實就是stdout,可讓下個命令繼續處理。tee [參數] file,-a以累加(append)的方式,將數據加入file中。

字符轉換命令:tr,col,join,paste,expand

tr:用來刪除一段信息當中的文字,或者進行文字信息的替換。tr [參數] set1...,-d刪除信息當中set1這個字符串、-s替換掉重複字符串。

col:col [參數],-x將tab鍵轉換成對等的空格鍵。 

join:處理兩個文件之間的數據,主要是將兩個文件當中有相同數據的那一行加在一塊兒。

paste:對比兩行相關性,直接將兩行粘在一塊兒,中間以tab鍵隔開。

expand:將tab鍵轉換成空格鍵。-t接數字,一個tab鍵表明多少個字符。

切割命令:split

將大文件切割成小文件。split [參數] file prefix,-b接欲切割文件大小,單位b,k,m等、prefix表明前導符,可做爲切割文件的前導文字。

參數代換:xargs

產生某個命令的參數,不少命令其實不支持管道命令,所以咱們能夠經過xargs來提供該命令引用standard input之用。

 

1.在linux上能夠找到哪些shell(舉出三個)?哪一個文件記錄可用的shell是什麼?而linux默認的shell是什麼?

A.cat /etc/shells查看可用的shell,有/bin/sh、/bin/bash、/sbin/nologin;linux默認shell是bash。

2.在shell環境下,有個提示符(prompt),他能夠修改嗎?要改什麼?默認的提示符內容什麼?

A.不能夠,\$提示符若是是root時提示符爲#,不然就是$。默認提示符內容PS1=[\u@\h\W]\$即[帳戶名稱@主機名,用戶所在文件夾]提示符。

3.如何顯示HOME這個環境變量?

A.echo $HOME。

4.如何得知目前的全部變量與環境變量的設定值?

A.env或export查看環境變量,set查看全部變量(包括環境和自定義變量)。

5.我是否能夠設定一個變量名稱3myhome?

A.不能夠,變量的首字符必須爲字母。

6.在這樣的練習中:「A=B」且「B=C」,若我執行「unset $A」,則取消的變量是A仍是B?

A.取消的是B。unset $A至關於unset B。

7.如何取消變量與命令別名的內容?

A.unset $available;unalias filename。

8.如何設定一個變量名稱爲name內容爲It's my name?

A.name=「It’s my name」。或name=It\’s\ my\ name。

9.bash環境配置文件主要分爲哪兩種類型的讀取?分別讀取哪些重要文件?

A.一類登陸login shell的讀取,分別讀取/etc/profile系統總體設置文件,~/.bash_profile或~/.bash_login或~/.profile我的用戶設置文件。第二類非登陸non-login shell的讀取,僅讀取~/.bashrc。

10.CentOS 5.x的man page的配置文件是什麼?

A./etc/man.config。

11.試說明', ", 與`這些符號在變量定義中的用途?

A.單引號改變字符屬性,僅爲通常字符的現實類型,雙引號內仍可保持變量內容。反單引號,做爲外部輸入信息。

12.轉義符號\有什麼用途?

A.定義內容中含有特殊字符時可用/進行轉義,成爲通常字符。

13.連續命令中,;, &&, ||有何不一樣?

A.;不考慮命令的相關性,&&執行完A正確繼續執行,錯誤再也不執行,||執行完A正確再也不執行,錯誤繼續執行。

14.如何將last的結果中,獨立出賬號,而且印出曾經登陸過的賬號?

A.last | cut -d ‘ ‘ -f 1。 

15.請問foo1 && foo2 | foo3 > foo4,這個命令串當中,foo1/foo2/foo3/foo4是命令仍是文件?整串命令的意義是什麼?

A.foo一、foo二、foo3是命令,foo4爲文件。foo1 && foo2的標準輸出結果做爲foo3標準輸入經過foo3命令寫入文件foo4中。

16.如何列出在/bin目錄下任何以a開頭的文件文件名的詳細數據?

A.ls -l /bin/a*。

17.如何列出/bin目錄下,文件名爲四個字符的文件?

A.ls -l /bin/????。

18.如何列出/bin目錄下,文件名開頭不是ad的文件?

A.ls -l /bin/[^a-d]*。

19.我想要讓終端機接口的登陸提示符修改爲我本身喜愛的模樣,應該要改哪裏? (filename)

A.vim /etc/issus;vim /etc/motd。

20.承上題,若是我是想要讓使用者登入後,才顯示歡迎信息,又應該要改哪裏?

A.vim /etc/motd。

相關文章
相關標籤/搜索