1. 程式人生 > 其它 >shell的基本知識

shell的基本知識

shell
1、什麼叫shell
在linux核心與使用者之間的直譯器程式
通常指/bin/bash
負責向核心翻譯及傳達使用者、程式指令
相當於作業系統的“外殼”、
2、shell的使用方式
互動式-------命令列
非互動式-----指令碼


硬體----系統軟體【核心】----應用軟體----人
shell, bash, sh, ksh

shell[命令直譯器]
[root@vh01 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[root@vh01 ~]# echo $SHELL
/bin/bash
[root@vh01 ~]# yum -y install ksh
[root@vh01 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/ksh

命令和路徑
選項

/etc/profile 環境變數和啟動程式
/etc/bashrc 函式和別名
/root/.bash_profile
/root/.bashrc

vim /etc/profile
HISTSIZE=1000 命令歷史的條目

#!/bin/bash
for i in {1..10}
do
useradd user$i 2>> uerror.log >/dev/null
echo "123"|passwd --stdin user$i 2>>perror.log >/dev/null
done

標準輸出(1),錯誤輸出(2)
[root@vh01 ~]# ls install.log > log
[root@vh01 ~]# ls tabasfd > log
ls: 無法訪問tabasfd: 沒有那個檔案或目錄
[root@vh01 ~]# ls install.log abc >log1 2>log2
[root@vh01 ~]# ls install.log abc &>logs
[root@vh01 ~]# ls install.log abc >mylog 2>&1
[root@vh01 ~]# ls install.log 2>> logs
install.log
[root@vh01 ~]# ls install.log > /dev/null
[root@vh01 ~]# mail -s "test" root </etc/passwd



常見的指令碼語言
Bash Shell
Python/Perl/Ruby
JSP/PHP/ASP/CGI
JavaScript

指令碼語言
寫程式碼,找直譯器執行程式碼,輸入結果

C語言 [系統,應用軟體]
寫程式碼,編譯程式碼,執行程式碼
原始碼-----二進位制. exe


指令碼三步走
1、新建檔案
2、新增可執行的指令碼語句(命令列)
3、新增x執行許可權

vim a.sh
#!/bin/bash
echo "Hello World"

一、需要許可權

[root@vh01 ~]# chmod +x a.sh
[root@vh01 ~]# ./a.sh
[root@vh01 ~]# /var/tmp/a.sh
[root@vh01 ~]# /root/a.sh

二、不需要許可權
開子程序
[root@vh01 ~]# bash a.sh
[root@vh01 ~]# sh a.sh
不開子程序
[root@vh01 ~]#source a.sh
[root@vh01 ~]#. a.sh
[root@vh01 ~]#

vim yum.sh
#!/bin/bash
echo '[rhel-packages]
name=Redhat Enterprise Linux6
baseurl=ftp://192.168.4.254/rhel6/Server
enable=1
gpgcheck=0'> /etc/yum.repos.d/yum.repo