1. 程式人生 > >Shell基礎(中)

Shell基礎(中)

unset wall ctrl+z nac rac 配置 har 取消 release

管道符、作業控制

技術分享圖片
1.管道符 | :把一個命令輸出給後面命令執行

[root@weix-01 ~]# ls
111  1.txt   2_hard.txt  2.txt.bak.bak  4.txt              apr-1.4.5
123  1.txt~  2_soft.txt  3.txt          anaconda-ks.cfg.1  apr-1.4.5.tar.gz
[root@weix-01 ~]# ls | wc -l
12

2.ctrl+z:暫停執行該命令:

[root@weix-01 ~]# vim 1.txt

[1]+  已停止               vim 1.txt

3.使用命令fg將暫停的命令繼續執行:將命令放到前臺

[root@weix-01 ~]# fg
vim 1.txt

4.jobs命令:將停止的命令列出來

[root@weix-01 ~]# jobs
[1]-  已停止               vim aa.txt
[2]+  已停止               vim 1.txt

5.bg:將命令調到後臺,繼續運行
6.sleep 時間: 暫停多久
7.命令後面加&,直接將命令放到後臺執行。

Shell變量

技術分享圖片
1.env:查看系統變量

[root@weix-01 ~]# env
XDG_SESSION_ID=1
HOSTNAME=weix-01
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.127.1 53879 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
USER=root

2.set命令可以查看系統變量以及用戶自定義變量:

[root@weix-01 ~]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION=‘4.2.46(2)-release‘
COLUMNS=80
DIRSTACK=()
EUID=0
GROUPS=()

3.變量命名規則:字母數字下劃線,首位不能是數字

[root@weix-01 ~]# a1=2
[root@weix-01 ~]# echo $a1
2
[root@weix-01 ~]# a_1=3
[root@weix-01 ~]# echo $a_1
3
[root@weix-01 ~]# _a1=4
[root@weix-01 ~]# echo $_a1
4
[root@weix-01 ~]# 1aa=5
-bash: 1aa=5: 未找到命令

4.變量值有特殊符號時,需要用單引號擴起來

[root@weix-01 ~]# a=a b c
-bash: b: 未找到命令
[root@weix-01 ~]# a=‘a b c‘

雙引號可能無法正確顯示:

[root@weix-01 ~]# a="a$bc"
[root@weix-01 ~]# echo $a
a
[root@weix-01 ~]# a=‘a$bc‘
[root@weix-01 ~]# echo $a
a$bc

5.變量疊加:多個變量疊加的時候可以用雙引號引起來

[root@weix-01 ~]# a=1
[root@weix-01 ~]# b=2
[root@weix-01 ~]# echo $a$b
12
[root@weix-01 ~]# a=‘a$bc‘
[root@weix-01 ~]# echo $a$b
a$bc2
[root@weix-01 ~]# c="a$bc"
[root@weix-01 ~]# c="a$b"c
[root@weix-01 ~]# echo $c
a2c

6.在一個終端上直接定義變量為本地變量,在其他終端上無法生效
7.定義全局變量:export,針對一個sshd下面的shell向下兼容的全局,無法向上

[root@weix-01 ~]# export weix=linux
[root@weix-01 ~]# echo $weix
linux
[root@weix-01 ~]# bash
[root@weix-01 ~]# echo $weix
linux

8.pstree:可以查看在哪一個bash下

[root@weix-01 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

9.取消賦值:unset

[root@weix-01 ~]# echo $weix
linux
[root@weix-01 ~]# unset weix
[root@weix-01 ~]# echo $weix

環境變量配置文件

技術分享圖片
1.profile:用戶登錄就自動加載
2.bashrc:執行shell腳本就自動加載,不用登錄
3.bash-logout: 定義用戶退出的時候需要執行的操作

  1. PS1:改變顯示
    
    [root@weix-01 ~]# PS1=‘[\u@\h \w]\$‘
    [root@weix-01 ~]#ls
    111    1.txt~      2.txt.bak.bak  aa.txt             apr-1.4.5.tar.gz
    123    2_hard.txt  3.txt          anaconda-ks.cfg.1
    1.txt  2_soft.txt  4.txt          apr-1.4.5
    [root@weix-01 ~]#cd /etc/
    Display all 186 possibilities? (y or n)
    [root@weix-01 ~]#cd /etc/                    
    [root@weix-01 /etc]#cd /root/123
    [root@weix-01 ~/123]#PS1=‘[\u@\h \W]\$‘            #大寫W,顯示相對路徑
    [root@weix-01 123]#cd                            #小寫w顯示絕對路徑

Shell基礎(中)