[root@localhost ~]# ls 111 123 1.txt 234 2.txt 2.txt.bak 3.txt anaconda-ks.cfg [root@localhost ~]# ls | wc -l 8
[root@localhost ~]# find ./ -type f ./.bash_logout ./.bash_profile ./.bashrc ./.cshrc ./.tcshrc ./anaconda-ks.cfg ./.bash_history ./.viminfo ./1.txt ./2.txt ./3.txt ./2.txt.bak [root@localhost ~]# find ./ -type f |wc -l 計算當前目錄下,有多少個文件 12
[root@localhost ~]# vim 1.txt [1]+ 已中止 vim 1.txt [root@localhost ~]# fg vim 1.txt [1]+ 已中止 vim 1.txt [root@localhost ~]# jobs [1]+ 已中止 vim 1.txt [root@localhost ~]# vim 2.txt [2]+ 已中止 vim 2.txt [root@localhost ~]# jobs [1]- 已中止 vim 1.txt [2]+ 已中止 vim 2.txt [root@localhost ~]#
[root@localhost ~]# fg 1
[root@localhost ~]# bg 1 [1]+ vim 1.txt &
運行一條命令,能夠將它丟到後臺(前臺)去運行 在結束任務的時候,必須是在前臺才能結束——>(不然在後臺是沒法結束任務的)html
[root@localhost ~]# sleep 1000 ^Z [1]+ 已中止 sleep 1000 [root@localhost ~]# jobs [1]+ 已中止 sleep 1000 [root@localhost ~]# sleep 200 ^Z [2]+ 已中止 sleep 200 [root@localhost ~]# jobs [1]- 已中止 sleep 1000 [2]+ 已中止 sleep 200 [root@localhost ~]# fg sleep 200 ^Z [2]+ 已中止 sleep 200
在調到先後臺運行的時候,不指定id號,就是默認最後一條執行命令
[root@localhost ~]# sleep 100 & [3] 2239 [root@localhost ~]# jobs [1] 運行中 sleep 100 & [root@localhost ~]#
在打開另外一終端,jobs命令,是查看不到執行當前終端的任務mysql
可是在另外一個終端,能夠查看到進程ps aux |grep sleeplinux
``` [root@localhost ~]# ps aux |grep sleep root 2235 0.0 0.0 107892 624 pts/0 T 23:20 0:00 sleep 1000 root 2236 0.0 0.0 107892 620 pts/0 T 23:20 0:00 sleep 200 root 2264 0.0 0.0 112656 984 pts/1 R+ 23:31 0:00 grep --color=auto slee [root@localhost ~]# ```
[root@localhost ~]# a=111 [root@localhost ~]# echo $a 111 [root@localhost ~]# set |grep 111 _=111 a=111 [root@localhost ~]#
[root@localhost ~]# [root@localhost ~]# a1=3 [root@localhost ~]# echo $a1 3 [root@localhost ~]# a_1=2 [root@localhost ~]# echo $a_1 2 [root@localhost ~]# _a1=4 [root@localhost ~]# echo $_a1 4 [root@localhost ~]# 1aa=2 變量名首位不能爲數字 -bash: 1aa=2: 未找到命令 [root@localhost ~]#
[root@localhost ~]# a='a b c' [root@localhost ~]# echo $a a b c [root@localhost ~]# a="a b c" [root@localhost ~]# echo $a a b c
這裏可使用 單引號'' 或 雙引號"",但使用 單引號 更加好用——>方便脫義
[root@hf-01 ~]# a="a$bc" //會發現使用雙引號,賦值變量得不到想要的結果 [root@hf-01 ~]# echo $a a [root@hf-01 ~]# a='a$bc' //使用單引號會發現正常賦值 [root@hf-01 ~]# echo $a a$bc
[root@hf-01 ~]# a=1 [root@hf-01 ~]# b=2 [root@hf-01 ~]# echo $a$b //變量$a=1,變量$b=2 12 [root@hf-01 ~]# a='a$bc' [root@hf-01 ~]# echo $a$b //變量$a=a$bc,變量$b=2 a$bc2 [root@hf-01 ~]# c="a$bc" [root@hf-01 ~]# echo $c //變量$bc爲賦值,因此爲空,最後輸出的值爲a a [root@hf-01 ~]# c="a$b"c [root@hf-01 ~]# echo $c //變量$b=2,,因此輸出爲a2c a2c
如下例子中,$bc爲總體,而我又沒有給它賦值,因此爲空
當變量或表達式較爲複雜的時候,變量疊加的時候,可使用雙引號將它們標記起來sql
[root@hf-01 ~]# w 05:34:28 up 4:05, 3 users, load average: 0.00, 0.01, 0.05 USER TTY LOGIN@ IDLE JCPU PCPU WHAT root tty1 01:29 4:04m 0.03s 0.03s -bash root pts/0 01:30 4.00s 0.07s 0.03s w root pts/1 05:34 5.00s 0.02s 0.02s -bash
[root@hf-01 ~]# echo $SSH_TTY //當前是在/dev/pts/0下 /dev/pts/0
- 在終端2下執行命令 echo $SSH_TTY
[root@hf-01 ~]# echo $SSH_TTY /dev/pts/1
[root@hf-01 ~]# hanfeng=linux [root@hf-01 ~]# echo $hanfeng linux
[root@hf-01 ~]# echo $hanfeng //會發現變量爲 空 [root@hf-01 ~]#
[root@hf-01 ~]# bash [root@hf-01 ~]#
[root@hf-01 ~]# pstree systemd─┬─NetworkManager───3*[{NetworkManager}] ├─auditd───{auditd} ├─avahi-daemon───avahi-daemon ├─crond ├─dbus-daemon───{dbus-daemon} ├─firewalld───{firewalld} ├─iprdump ├─iprinit ├─iprupdate ├─login───bash ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─mysqld_safe───mysqld───20*[{mysqld}] ├─polkitd───5*[{polkitd}] ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd─┬─bash───bash───pstree │ └─bash ├─systemd-journal ├─systemd-logind ├─systemd-udevd └─tuned───4*[{tuned}] [root@hf-01 ~]#
[root@hf-01 ~]# echo $hanfeng [root@hf-01 ~]#
這是由於這個變量僅僅在上一個shell中
[root@hf-01 ~]# exit exit [root@hf-01 ~]# pstree systemd─┬─NetworkManager───3*[{NetworkManager}] ├─auditd───{auditd} ├─avahi-daemon───avahi-daemon ├─crond ├─dbus-daemon───{dbus-daemon} ├─firewalld───{firewalld} ├─iprdump ├─iprinit ├─iprupdate ├─login───bash ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─mysqld_safe───mysqld───20*[{mysqld}] ├─polkitd───5*[{polkitd}] ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd─┬─bash───pstree │ └─bash ├─systemd-journal ├─systemd-logind ├─systemd-udevd └─tuned───4*[{tuned}] [root@hf-01 ~]#
這時會看到缺乏了一個bash,由於剛exit退出了一個bash
[root@hf-01 ~]# echo $hanfeng linux
這種定義一個變量叫作非全局,或者叫作本地的變量(僅僅在你終端下生效)shell
[root@hf-01 ~]# export hanfeng=linux [root@hf-01 ~]# echo $hanfeng linux [root@hf-01 ~]# bash [root@hf-01 ~]# echo $hanfeng linux [root@hf-01 ~]#
全局環境變量,在終端1下,在打開shell以後,只要執行export 命令 ,在這下面全部的子shell 都會變量值,但在終端2下,變量依舊是不會生效 全局變量是向下的,在這個shell的基礎上生成子shell,子子shell,子子子shell,而不會向上生效
[root@hf-01 ~]# hanfeng=linux [root@hf-01 ~]# echo $hanfeng linux [root@hf-01 ~]# unset hanfeng [root@hf-01 ~]# echo $hanfeng [root@hf-01 ~]#
兩個緯度,一個是系統層次,一個是用戶層次vim
兩種類型,把 bashrc 做爲一種類型,把profile做爲一種類型centos
~/.bash_logout 文件,用來定義用戶退出的時候須要作的一些操做bash
PS1是在/etc/bashrc中定義的ssh
[root@hf-01 ~]# echo $PS1 [\u@\h \W]\$
[root@hf-01 ~]# cd /etc/sysconfig/network-scripts/ [root@hf-01 network-scripts]# PS1='[\u@\h \w]\$' [root@hf-01 /etc/sysconfig/network-scripts]# [root@hf-01 ~]# cd 123/ [root@hf-01 ~/123]# cd /tmp/ [root@hf-01 /tmp]#
這是一個全局路徑
[root@hf-01 /tmp]# PS1='\u@\h \w\$' root@hf-01 /tmp#
root@hf-01 /tmp# PS1='<\u@\h \w> \$' <root@hf-01 /tmp> #
普通用戶是 $號,root用戶是# 號
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '