Linux 基礎入門
=====================================================================
概述:
=====================================================================
Linux入門基礎
1.遠程連接
★ssh協議:secure shell
~]# ss -tnl 查看系統是否監聽在tcp協議的22號接口;
~]# ip addr list 或者 ifconfig 查看ip地址
確保防火牆處於關閉狀態:~] # iptables -L -n
關閉防火牆:
CentOS 7
~]# systemctl disable firewalld.service
~]# systemctl stop firewalld.service
CentOS 6
~]# service iptables stop
~]# chkconfig iptables off
2.用戶登錄
★root用戶
一個有特殊的管理賬戶,也稱爲超級用戶,root已經接近完整的系統控制,對系統損害幾乎有無限的能力,除非必要,不然不要登錄root
★普通(非特權)用戶
權限有限,對系統造成損害的能力比較有限;
建議使用非管理員賬號登錄,執行管理操作臨時切換至管理員,操作完成即退回;
注意:
Linux系統中默認的管理員用戶爲root,但這只是一個名字而已,是可以切換的。系統判斷是管理員還是普通用戶,是看用戶的UID(User ID 用戶ID編號),管理員的UID是0,普通用戶的不是;
顯示命令:~]# id -u (顯示自己的id) ~]# id -u tao (顯示tao的id)
在CentOS 6 中默認是從500開始編號的,CentOS 7中默認是從1000開始編號的
3.命令提示符
★[root@localhost ~]#
我們稱之爲PS1,靠環境變量定義,其組成部分可以使用echo命令來顯示:echo $PS1
格式:[\u@\h \ W]\$
# 表示命令提示符,提示符有兩種:
① # :表示管理員賬號,爲root;擁有最高權限,能執行所有操作;
② $ :表示普通用戶,非root用戶,不具有管理權限,不能執行系統管理類操作
因此可以通過命令提示符來判斷管理員登錄還是普通用戶登錄!
★輸入命令,然後回車,提請shell程序找到鍵入的命令所對應的可執行程序的代碼,並由其分析後提交給內核分配資源將其運行起來,表現爲一個或多個進程。
附圖:
分層結構圖
演示:
[root@centos7 ~]# cat .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi PS1="\[\e[36;40m\][\[\e[32;40m\]\u\[\e[0m\]@\[\e[33;40m\]\h \[\e[36;40m\]\W\[\e[36;40m\]]\[\e[0m\]\\$ " [root@centos7 ~]# echo $PS1 \[\e[36;40m\][\[\e[32;40m\]\u\[\e[0m\]@\[\e[33;40m\]\h \[\e[36;40m\]\W\[\e[36;40m\]]\[\e[0m\]\$
4.在shell中的可執行命令:
★shell程序是獨特的程序,負責解析用戶提供的命令
環境變量:PATH :從哪些路徑中查找用戶鍵入的命令字符串所對應的命令文件
~]# echo $PATH
★內建命令(bulitin)
由shell自帶的,而且通過某命令形式提供;
~]# enable COMMAND 啓用內建命令
~]# enable -n COMMAND 禁用內建命令
★外部命令
在當前系統的某文件路徑下有對應的可執行程序文件,文件名即命令名;
可通過which、whereis 命令來查找到期可執行的程序文件
外部命令的路徑:# echo $PATH (PATH是一個變量,定義了若干個目錄,放了程序的文件夾)
※如何查看一個命令是內建命令還是外部命令?
通過type命令,格式:type COMMAND (注意linux嚴格區分大小寫)如:~]# type cd
★hash命令
記錄或顯示程序的位置(可執行程序的位置)
搜尋到的外部命令路徑結果緩存至kv(key-value )存儲中。key:搜索鍵 ;valure:值
~]# hash :列出命令的緩存
~]# hash -d :表示清空指定命令的緩存,如:hash -d ls
~]# hash –r :表示清空所有命令的緩存, hash -r
★alias 定義別名
# alias 定義別名 ;# unalias 取消別名(是臨時生效的)
別名的優先順序是大於原始命令。
想要執行原始命令方法:直接輸入路徑、使用 \ (反斜線) 或 ` `(單引號)
★命令執行的順序:別名>內建>hash>$PATH
演示:
1.內建命令
[root@CentOS6 ~]# type cd cd is a shell builtin # 內建命令 [root@CentOS6 ~]# enable -n cd [root@CentOS6 ~]# cd /etc -bash: cd: command not found [root@CentOS6 ~]# enable cd [root@CentOS6 ~]# cd / [root@CentOS6 /]# ls bin boot dev etc home lib lib64 lost+found media misc mnt net nfs opt
2.外部命令
[root@CentOS6 ~]# type date date is /bin/date # 外部命令顯示的是路徑 # 查看外部命令對應的路徑 [root@CentOS6 ~]# which date /bin/date [root@CentOS6 ~]# whereis date date: /bin/date /usr/share/man/man1/date.1.gz /usr/share/man/man1p/date.1p.gz # 所有的外部命令都在PATH變量中,執行順序從左到右 [root@CentOS6 ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
3.hash命令
# 緩存的外部命令 [root@centos7 ~]# hash 命中 命令 2 /usr/sbin/iptables 1 /usr/sbin/ifconfig 1 /usr/bin/cat 1 /usr/bin/locale 1 /usr/bin/yum 3 /usr/bin/ping 3 /usr/bin/ls 1 /usr/sbin/ip # 清空指定的緩存命令 [root@centos7 ~]# hash -d iptables [root@centos7 ~]# hash 命中 命令 1 /usr/sbin/ifconfig 1 /usr/bin/cat 1 /usr/bin/locale 1 /usr/bin/yum 3 /usr/bin/ping 3 /usr/bin/ls 1 /usr/sbin/ip # 清空命令緩存 [root@centos7 ~]# hash -r [root@centos7 ~]# hash hash: 哈希表爲空
4.alish 命令別名
[root@CentOS6 ~]# 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'
5.運行命令:
★命令格式:
COMMAND [OPTIONS] [ARGUMENTS]
命令 選項 參數
☉選項:用於啓用或關閉命令的某個或某些功能(指定程序的運行特性);如:ls的-l -h選項
短選項:-c, 例如:ls的 -l, -h
長選項:--word,例如:--all, --human-readable
☉參數:
命令的作用對象(就是向命令提供數據的),比如文件名,用戶名等;
命令的參數可以有多個;
注意:
多選項,以及多參數和命令之間使用空白字符分隔
取消和結束命令執行:Ctrl+c
多個命令可以用 ;符號分開;
一個命令可以用 \ 分成多行;
=========================================================================
★發起一命令:請求內核將某個二進制程序運行爲一個進程
程序 ---> 進程
靜態 ---> 動態(有生命週期)
★命令本身是一個可執行的程序文件,二進制格式的文件,有可能會調用共享庫文件
☉多數系統程序文件都存放在:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
普通命令:/bin,/usr/bin,/usr/local/bin
管理命令:/sbin,/usr/sbin,/usr/local/sbin
共享庫:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
32bits庫:/lib,/usr/lib,/usr/local/lib
64bits庫:/lib64,/usr/lib64,/usr/local/lib64
★命令必須遵循特定格式規範:
exe,msi,ELF(Linux)
演示:
[root@centos7 ~]# file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
6.CentOS 7設置程序環境
★localectl
status:顯示當前狀態
list-locales :列出支持的所有的程序環境
set-locale LOCALE... 設定程序環境
演示:
# 當前程序環境 [root@CentOS7 ~]# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= [root@centos7 ~]# localectl set-locale LANG=zh_CN.utf8 # 設置爲中文的語言環境 [root@centos7 ~]# localectl status System Locale: LANG=zh_CN.utf8 VC Keymap: cn X11 Layout: cn # 重啓之後就可以獲得中文的語言環境了 [root@centos7 ~]# locale LANG=zh_CN.utf8 LC_CTYPE="zh_CN.utf8" LC_NUMERIC="zh_CN.utf8" LC_TIME="zh_CN.utf8" LC_COLLATE="zh_CN.utf8" LC_MONETARY="zh_CN.utf8" LC_MESSAGES="zh_CN.utf8" LC_PAPER="zh_CN.utf8" LC_NAME="zh_CN.utf8" LC_ADDRESS="zh_CN.utf8" LC_TELEPHONE="zh_CN.utf8" LC_MEASUREMENT="zh_CN.utf8" LC_IDENTIFICATION="zh_CN.utf8" LC_ALL=