初識Linux
本章內容
初安裝Linus的網絡配置
防火墻的關閉
用戶
終端
shell
命令紀要
安裝linux之后,linux默認網卡開機不是自動激活,并且防火墻開啟的,這對初期我們學習linux會產生一定的阻礙,所以我們先要設置一下參數讓我們的linux能對我們更友好一下。
一、網卡設置
若網卡要設置成靜態IP地址
命令如下:首先登錄管理員賬戶(配置系統只有管理員由此權限哦),用vim文本編輯器編輯eno16777736,進入界面按字母a鍵,編輯參數-Esc退出編輯模式按住Shift+:,輸入wq保存并退出
動態IP只需要改ONBOOT=yes,激活網卡就行,BOOTPROTO=dhcp保持不動
二、關閉防火墻
centos6.8默認防火墻為iptabls,而centos7.2為firewalld,所以由于防火墻的不同,操作也不同
首先可以查看一下firewall防火墻的狀態,running正在運行
停止firewall,然后禁止自啟動firewall,然后狀態就會變為not running了
啟動則是:systemcl start firewalld.service
6.8命令如下
查看防火墻狀態—-service iptables status
1 關閉防火墻—–service iptables stop 臨時的
2 啟動防火墻—–service iptables start
3 重啟防火墻—–service iptables restart
4 查看防火墻狀態–service iptables status
5 永久關閉防火墻–chkconfig iptables off
6 永久關閉后啟用–chkconfig iptables on
這樣我們就可以在初期用到網絡連接時,一般就不會出現連接不上被防火墻屏蔽的情況了。
三、用戶類別
Linux用戶簡單的分為管理員和普通用戶,普通用戶又分為系統內建用戶和自定義用戶??梢圆榭?etc/passwd來查看。如下圖所示:
1、系統管理員:即root帳戶,UID號為0,擁有所有系統權限,它類似于Windows系統中的administrator帳戶,是整個系統的所有者。
root用戶:
一個特殊的管理帳戶,也被稱為超級用戶
root已接近完整的系統控制,因此對系統損害幾乎有無限的能力,基本什么都可以操作,甚至作死命令 rm -rf /(千萬別想不開)
除非必要,不要登錄為 root,我們一般不用,用也是臨時切換,或者臨時提升普通用戶權限來完成操作
2、普通( 非特權 )用戶,UID號1-65535,沒有對系統管理權限,權限有限,造成損害的能力比較有限
系統用戶:linux為滿足自身系統管理所內建的賬號,通常在安裝過程中自動創建,不能用于登錄操作系統。centOS6以前版本UID在1-499之間,centos7在1-999之間。如上圖中的的halt、mail等等用戶即是此類用戶。它類似于Windows中的system帳戶,當然權限遠沒有system帳戶高。
自定義用戶:由root管理員創建供用戶登錄系統進行操作使用的賬號,centOS6以前版本UID在500-60000之間,centos7在1000-60000之間。它類似于Windows系統中users用戶組中的帳戶 。
四、終端
服務器主機非必要部件,沒有終端服務器一樣能夠運行;可以理解為鼠標、鍵盤、顯示器等可供用戶與主機交互必然用到的I/O設備
物理終端:直接接入本機的顯示器和鍵盤設備/dev/console又叫控制臺,是系統開機時能夠進入的單用戶模式,而且網絡是被禁用的
虛擬終端:附加在物理終端之上的以軟件方式虛擬實現的終端,設備文件路徑:/dev/tty#,CentOS 6 默認啟動6 個虛擬終端 Ctrl+Alt+F#: [1,6]
圖形終端:屬于虛擬終端,附加在物理終端之上的以軟件方式虛擬實現的終端,但額外會提供桌面環境; Ctrl+Alt+F7
centos7:在哪個虛擬終端啟動的圖形界面,即位于那個虛擬終端;而剩下的則為字符界面;默認Ctrl+Alt+F1圖形界面,[2-6]是字符界面
串行終端(ttyS)
模擬終端:圖形界面打開 的 命令行以及基于ssh 協議或telnet 協議等遠程打開的界面, 設備文件:/dev/pts/# [0, ∞ )
比如我們使用的SecureCRT、我們在圖形界面也是模擬終端
查看當前的終端設備:#tty
五、shell
shell (計算機殼層)
在計算機科學中,Shell俗稱殼(用來區別于核),是指“提供使用者使用界面”的軟件(命令解析器)。在Linux系統中shell是用戶界面提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行。它類似于DOS下的command和后來的cmd.exe。它接收用戶命令,然后調用相應的應用程序。同時它又是一種程序設計語言。作為命令語言,它交互式解釋和執行用戶輸入的命令或者自動地解釋和執行預先設定好的一連串的命令;作為程序設計語言,它定義了各種變量和參數,并提供了許多在高級語言中才具有的控制結構,包括循環和分支。
基本上shell分兩大類:
一:圖形界面shell(Graphical User Interface shell 即 GUI shell)
例如:應用最為廣泛的 Windows Explorer (微軟的windows系列操作系統),還有也包括廣為人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更強大的Desktop、CDE、GNOME(C, 圖形庫gtk)、KDE(C++, 圖形庫qt)、 XFCE( 輕量級桌面)。
二:命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh(Unix/linux 系統)
(MS-DOS系統)
cmd.exe/ 命令提示字符(Windows NT 系統)
Windows PowerShell(支援 .NET Framework 技術的 Windows NT 系統)
傳統意義上的shell指的是命令行式的shell,以后如果不特別注明,shell是指命令行式的shell。
文字操作系統與外部最主要的接口就叫做shell。shell是操作系統最外面的一層。shell管理你與操作系統之間的交互:等待你輸入,向操作系統解釋你的輸入,并且處理各種各樣的操作系統的輸出結果。
shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸入,并且可以立即得到響應),或者以shell script(非交互)方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被重復使用。本質上,shell script是命令行命令簡單的組合到一個文件里面。
Shell基本上是一個命令解釋器,類似于DOS下的command。它接收用戶命令(如ls等),然后調用相應的應用程序。較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的輸入,并且執行你提交的命令。這種模式被稱作交互式是因為shell與用戶進行交互。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當你簽退后,shell也終止了。
shell也可以運行在另外一種模式:非交互式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,并且執行它們。當它讀到文件的結尾,shell也就終止了。
shell的類型
在UNIX中主要有:
Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
GNU Bourne-Again Shell(bash) 是GNU計劃中重要的工具軟件之一,目前也是 Linux 標準的shell與sh 兼容。
CentOS 默認使用bash
顯示當前使用的shell:
#echo ${SHELL} 花括號可以省略
顯示當前系統使用的所有shell:
#cat /etc/shells
切換當前shell類型:
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# chsh
Changing shell for root.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# su –
上一次登錄:三 7月 27 10:58:49 CST 2016pts/0 上
[root@localhost ~]# echo $SHELL
/bin/tcsh
bash 的快捷鍵
Ctrl+l 清屏,相當于clear 命令
Ctrl+c 取消命令的執行
Ctrl-a 會移動到命令行的最前面
Ctrl-e 會移動到命令行的最后面
Ctrl-u 會刪除到行首
Ctrl-k 會刪除到行尾
arrow ctrl-b ctrl-f 會向左或向右移動一個字符
Esc-b 左移一個單詞
Esc-f 右移一個單詞
六、命令紀要
1、命令提示符
命令提示符:prompt
默認格式[root@localhost ~]#
顯示提示符格式:
[root@localhost ~] :echo $PS1
臨時修改:#PS1=*****
prompt:
管理員:#
普通用戶:$
2、命令的執行
輸入命令,回車:提請shell程序找到鍵入命令所對應的可執行程序或代碼,并由其分析后提交給內核分配資源將其運行起來;而找尋命令對應關系的過程是先查找命令別名,沒有則進入shell自帶的內部命令中查找,沒有則進入hash緩存中查找對應外部命令的記錄,沒有則按照$PATH的目錄依次查找外部命令,第一次找到并執行對應的可執行程序或代碼。
查找優先級:命令別名>內部命令>hash緩存的執行過的對應外部命令>按照$PATH查找 如果在$PATH中找到第一個對應的外部命令便執行并且保存帶內存中hash中就會存在這個命令的信息,下次執行時就會默認執行hash中對應的命令,而不會再次查找
3、命令別名:
獲取所有可用的別名的定義: ~]# alias
定義別名:~]# alias NAME=’COMMAND’(注意名字最好是小寫字母,COMMAND如果當中沒用空格可以不加’’,僅對當前shell進程有效,其它用戶或再次登入無效)
撤銷別名:~]# unalias NAME
注意用alias定義的別名只對當前shell有效,從硬件角度說就是數據保存在內存中而非硬盤中,所以重新登陸重啟都會失效,如果想要永久有效則需要編輯.bashrc文件,將定義的別名寫入到文件中,相當于保存在硬盤中才可以
如果只想定義的別名自己使用,不影響別人則編輯用戶家目錄下的.bashrc文件
~]#vim .bashrc
如果想對所有用戶有效則編輯全局/etc/.bashrc
而上圖中source 雖然成功執行,但是并沒有成功改變設置,而重登賬戶才生效。
注意有的發型版本修改的是profile文件來實現的,這里我簡單說一下我查閱的相關信息
/etc/profile:此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.并從/etc/profile.d目錄的配置文件中搜集shell的設置.
也就是說這個文件里的配置針對所有用戶和shell類型
/etc/bashrc:為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.
這個只針對所有使用shell類型為bash的用戶有效
~/.bash_profile:每個用戶都可使用該文件輸入專用于自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件.
~/.bashrc:該文件包含專用于你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取.類似的文件還有.cshrc、.tcshrc等
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件.
這些文件針對當前用戶的shell類型為bash有效
另外,/etc/profile中設定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關系.
~/.bash_profile 是交互式、login 方式進入 bash 運行的
~/.bashrc 是交互式 non-login 方式進入 bash 運行的
通常二者設置大致相同,所以通常前者會調用后者。
以上部分涉及變量問題,我們以后再深入探討,在這里我們還沒有知識,所以不好理解,只是要有個概念
4、內部命令和外部命令
在shell 中可執行的命令有兩類:內部命令:由shell自帶的,而且通過某命令形式提供,這些命令都是內嵌在shell內部的
enable命令可以啟用或禁用內部命令:
enable -n COMMAND 禁用內部命令
enable CMOMMAND 啟用內部命令
外部命令:在當前系統的某文件系統路徑下有對應的可執行程序文件;which ,whereis;注意shell本身也是外部命令,因為shell本身也存在所對應的可執行程序文件例如: /bin/sh、/bin/bash、/sbin/nologin、/bin/tcsh、/bin/csh、/usr/bin/sh、/usr/bin/bash等
which:查看外部命令路徑在$PATH變量里面搜索
whereis:查看程序及其幫助文檔的路徑
區別當前使用的命令是內部或外部命令:
#type COMMAND
內部:顯示builtin
外部:顯示為命令文件路徑,但不是絕對的,因為有些文件有別名,別名我們上文說過
5、hash 命令:搜尋到的外部命令路徑結果緩存至 至kv(key-value) 存儲,
hash 顯示hash緩存
hash -d COMMAND 刪除制定命令的hash緩存
hash –r 清除緩存
七、命令格式
COMMAND [OPTIONS…] [ARGUMENTS…]
選項:用于啟用或關閉命令的某個或某些功能;
短選項:-c, 例如:-l, -h
長選項:–word ,例如:–all, –human-readable
第一種:參數用一橫的說明后面的參數是字符形式。
第二種:參數用兩橫的說明后面的參數是單詞形式。
第三種:參數前有橫的是 System V風格。
第四種:參數前沒有橫的是 BSD風格。
有關System V和BSD的其他區別:
系統啟動過程中 kernel 最后一步調用的是 init 程序,init 程序的執行有兩種風格,即 System V 和 BSD。
System V 風格中 init 調用 /etc/inittab,BSD 風格調用 /etc/rc,它們的目的相同,都是根據 runlevel 執行一系列的程序。
參數:命令的作用對象,比如文件名,用戶名等
注意:
1 、多選項,以及多參數和命令之間使用空白字符分隔
eg:cp -r /usr/games /tmp
2 、取消和結束命令執行:Ctrl+c ,Ctrl+d
在執行過程中可以Ctrl+c,中斷執行
3 、多個命令可以用; 符號分開
# cd /tmp;ll -a /tmp;cp -r /usr/games /tmp
4 、一個命令可以用\分成多行
eg:#pwd 查看當前工作目錄
5 、短選項可以合在一起使用,但有些命令的短選項是遵循一定順序的;
eg:ls -l -h 可以為 ls -lh 或 ls -hl
而gcc -o hello.c hello 和 gcc hello.c -o hello
如果只做編譯,不做鏈接(-c 選項,只生成.o文件,不生成執行文件),參數順序沒有要求。
不同類的選項沒有順序要求(如多個 -I 屬于同一類)。
gcc在鏈接時,對參數中的庫的順序有要求,參數右側的庫會先于左側的庫加載;不同庫中有相同的符號定義時,鏈接順序不同會產生不同結果。
6、長選項不能合并,有些選項可以帶參數:稱為選項參數
這個我還沒有接觸到,所以就不給大家例子啦,如果以后知道或者有知道的大神,請留言,我會及時更新,并表示感謝
八、命令行擴展、被括起來的集合
命令行擴展:$( ) 或 “
把一個命令的輸出打印給另一個命令的參數
$ echo "This system's name is $(hostname ) "
This system's name is server1.example.com 主機名 所以小伙伴們的和我的例子應該不會一樣
$echo "i am `whoami ` " whoami 用戶正在使用的賬號
i am root
括號擴展:{ }
打印重復字符串的簡化形式
$ echo file{1,3,5}
file1 file3 file5
希望各位小伙伴們多多留言指教,學習就是要多交流,才能更快的積累學識,所以多多探討問題,很讓我們不知不覺間將理論變為理解,從練習到實踐應用。
原創文章,作者:NameLess,如若轉載,請注明出處:http://www.www58058.com/28091