1. 程式人生 > >linux(ubuntu)中一些特殊符號

linux(ubuntu)中一些特殊符號

匹配一個字元

*

匹配任意字串

()

開一個子程序,見程式碼

sorrow@ubuntu:~$ (ccc=1000)
sorrow@ubuntu:~$ (echo $ccc)

sorrow@ubuntu:~$ echo $ccc

sorrow@ubuntu:~$ 

以上都不能輸出ccc的值,因為小括號內是一個程序,新的小括號是另一個程序。

sorrow@ubuntu:~$ (echo $PATH)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
sorrow@ubuntu
:~$

環境變數可以被繼承,要想變數可以被繼承,用export:

sorrow@ubuntu:~$ ccc=199
sorrow@ubuntu:~$ echo $ccc
199
sorrow@ubuntu:~$ (echo $ccc)  #這裡可以繼承
199
sorrow@ubuntu:~$ bash         #開一個子程序
sorrow@ubuntu:~$ echo $ccc    #未繼承

sorrow@ubuntu:~$ exit
sorrow@ubuntu:~$ (echo $ccc)
199
sorrow@ubuntu:~$ export $ccc
bash: export:
`199': not a valid identifier [email protected]:~$ export ccc [email protected]:~$ bash [email protected]:~$ echo $ccc #子程序已繼承ccc 199

unset:刪除變數

sorrow@ubuntu:~$ echo $ccc
199
sorrow@ubuntu:~$ unset ccc
sorrow@ubuntu:~$ echo $ccc

sorrow@ubuntu:~$ 

cd -

回到上一層目錄

[]

用法1:括號內為可替換字母,以下命令檢視/目錄下以r或者v開頭的資料夾

[email protected]:~$ ls /[rv]*
/vmlinuz

ls: cannot open directory /root: Permission denied
/run:
acpid.socket  fsck            mlocate.daily.lock  sendsigs.omit.d  user
apache2       initctl         mount               shm              utmp
avahi-daemon  initramfs       network             systemd          uuidd
cgmanager     kerneloops.pid  NetworkManager      tmpfiles.d       vmblock-fuse
crond.pid     lightdm         pppconfig           tpvmlpd.pid      vmtoolsd.pid
crond.reboot  lightdm.pid     resolvconf          tpvmlpd.stat
cups          lock            rsyslogd.pid        udev
dbus          log             samba               udisks2

/var:
backups  crash  local  log   metrics  run    tmp
cache    lib    lock   mail  opt      spool  www
[email protected]:~$ 

同理,下面命令檢視以rstuvw開頭的檔案

sorrow@ubuntu:~$ ls /bin/[r-w]*
/bin/rbash                 /bin/systemd-escape
/bin/readlink              /bin/systemd-hwdb
/bin/red                   /bin/systemd-inhibit
/bin/rm                    /bin/systemd-machine-id-setup
/bin/rmdir                 /bin/systemd-notify
/bin/rnano                 /bin/systemd-tmpfiles
/bin/running-in-container  /bin/systemd-tty-ask-password-agent
/bin/run-parts             /bin/tailf
/bin/sed                   /bin/tar
/bin/setfacl               /bin/tempfile
/bin/setfont               /bin/touch
/bin/setupcon              /bin/true
/bin/sh                    /bin/udevadm
/bin/sh.distrib            /bin/ulockmgr_server
/bin/sleep                 /bin/umount
/bin/ss                    /bin/uname
/bin/static-sh             /bin/uncompress
/bin/stty                  /bin/unicode_start
/bin/su                    /bin/vdir
/bin/sync                  /bin/vmmouse_detect
/bin/systemctl             /bin/wdctl
/bin/systemd               /bin/which
/bin/systemd-ask-password  /bin/whiptail
sorrow@ubuntu:~$ 

中括號內可以是大小寫字母、數字
用法2:不解釋,看程式碼

sorrow@ubuntu:~/test$ a=123
sorrow@ubuntu:~/test$ b=456
sorrow@ubuntu:~/test$ echo [123+456]
[123+456]
sorrow@ubuntu:~/test$ echo $[123+456]
579

{}

用法1:代表列舉
sorrow@ubuntu:~$ touch {a,b}{1,2}.txt
sorrow@ubuntu:~$ ls
a1.txt  b2.txt     Downloads  myfirstshell.sh   Public      tmp.txt
a2.txt  Desktop    dreamingc  myfirstshell.sh~  pythonCode  Videos
b1.txt  Documents  Music      Pictures          Templates
sorrow@ubuntu:~$ rm {a,b}{1,2}.txt
sorrow@ubuntu:~$ ls
Desktop    dreamingc        myfirstshell.sh~  pythonCode  Videos
Documents  Music            Pictures          Templates
Downloads  myfirstshell.sh  Public            tmp.txt
sorrow@ubuntu:~$ 

建立了4個組合檔案,又刪除
用法2:如果想輸出如果存在了aaa這個變數,又想輸出aaa00怎麼辦?

sorrow@ubuntu:~/test$ aaa=199
sorrow@ubuntu:~/test$ echo $aaa00

sorrow@ubuntu:~/test$ echo ${aaa}00
19900
sorrow@ubuntu:~/test$ 

& (外加jobs, kill, fg 的用法)

後臺執行,命令“見碼知義”

sorrow@ubuntu:~/test$ sleep 300 &
[1] 43926
sorrow@ubuntu:~/test$ jobs
[1]+  Running                 sleep 300 &
sorrow@ubuntu:~/test$ fg %1
sleep 300
^C
sorrow@ubuntu:~/test$ jobs
sorrow@ubuntu:~/test$ sleep 300 &
[1] 43929
sorrow@ubuntu:~/test$ jobs
[1]+  Running                 sleep 300 &
sorrow@ubuntu:~/test$ kill %1
sorrow@ubuntu:~/test$ jobs
[1]+  Terminated              sleep 300
sorrow@ubuntu:~/test$ 

$?

表示上一條命令的返回值

sorrow@ubuntu:~$ test -d /etc
sorrow@ubuntu:~$ echo $?
0
sorrow@ubuntu:~$ test -d /etc/passwd
sorrow@ubuntu:~$ echo $?
1
sorrow@ubuntu:~$ 

表示返回值為0,/etc是一個目錄,返回值為1,表示/etc/passwd不是一個目錄

||和&&

||表示或者,前一個命令執行成功則不執行後面的命令。(||表示或者,&&表示和,跟c語言一樣。)

sorrow@ubuntu:~$ ls /bin/ || echo ok
bash           lesskey                  rmdir
bunzip2        lesspipe                 rnano
busybox        ln                       running-in-container
bzcat          loadkeys                 run-parts
#。。。。。。。輸出太多了為了不佔用字數刪了,然後執行:
sorrow@ubuntu:~$ ls /bin/1234 || echo ok        #沒有這個目錄
ls: cannot access /bin/1234: No such file or directory
ok
sorrow@ubuntu:~$ 

同理,&&的作用就不用多說了

; #這是分號

相當於回車,多用於shell程式設計時。下面看起來好像&&

sorrow@ubuntu:~$ ls ; echo asdf
Desktop    dreamingc        myfirstshell.sh~  pythonCode  Videos
Documents  Music            Pictures          Templates
Downloads  myfirstshell.sh  Public            tmp.txt
asdf
sorrow@ubuntu:~$ 

’ ‘和”“

轉義

sorrow@ubuntu:~$ touch "a b c"
sorrow@ubuntu:~$ ls
a b c    Documents  dreamingc  myfirstshell.sh   Pictures  pythonCode  tmp.txt
Desktop  Downloads  Music      myfirstshell.sh~  Public    Templates   Videos
sorrow@ubuntu:~$ touch 'a b c d '
sorrow@ubuntu:~$ ls
a b c     Documents  Music             Pictures    Templates
a b c d   Downloads  myfirstshell.sh   Public      tmp.txt
Desktop   dreamingc  myfirstshell.sh~  pythonCode  Videos
sorrow@ubuntu:~$ rm a\ b\ c
sorrow@ubuntu:~$ rm a\ b\ c\ d\  
sorrow@ubuntu:~$ ls
Desktop    dreamingc        myfirstshell.sh~  pythonCode  Videos
Documents  Music            Pictures          Templates
Downloads  myfirstshell.sh  Public            tmp.txt
sorrow@ubuntu:~$ 

<和>和>>

輸入、輸出重定向、追加在檔案末尾
不解釋。。。。

sorrow@ubuntu:~/test$ ls -l /1234 > a.txt
ls: cannot access /1234: No such file or directory
sorrow@ubuntu:~/test$ ls -l /1234 2> a.txt
sorrow@ubuntu:~/test$ vim a.txt 

錯誤輸出用2表示,>只能重定向標準輸出,要輸出標準錯誤用2>
腦洞:2> 可用於過濾

sorrow@ubuntu:~/test$ find / -name passwd 2> /dev/null
/etc/passwd
/etc/cron.daily/passwd
/etc/pam.d/passwd
/usr/bin/passwd
^C
sorrow@ubuntu:~/test$ 

上面將錯誤輸入“黑洞(/dev/null)”,正確的資訊顯示(可以試試都標準輸出會怎樣)

&>

標準輸出和標準錯誤都輸出

<<

開啟緩衝區寫入

sorrow@ubuntu:~/test$ cat << EOF >a.txt
> asgfag
> agaer
> awrgtqg
> EOF
sorrow@ubuntu:~/test$ ls
a.txt
sorrow@ubuntu:~/test$ vim a.txt

將緩衝區寫入寫進a.txt中,只要輸入EOF三個字元就會結束輸入(vim檢視a.txt內容只有三行)

內容很少,也不夠詳細,歡迎補充^_^

相關推薦

linuxubuntu一些特殊符號

? 匹配一個字元 * 匹配任意字串 () 開一個子程序,見程式碼 sorrow@ubuntu:~$ (ccc=1000) sorrow@ubuntu:~$ (echo $ccc) sorrow@ubuntu:~$ echo $ccc

LinuxUbuntu使用終端編譯並執行.c和.cpp檔案

首先要保證系統中安裝了C語言和C++對應的編譯器:gcc -> C  ,g++ -> C++1、.c檔案的編譯與執行(1).c檔案hello.c程式碼如下:#include<stdio.h> int main() { printf("H

在Windows 10 自帶的LinuxUbuntu安裝redis 步驟Mark

安裝步驟參考:https://blog.csdn.net/xiangwanpeng/article/details/54586087問題一:安裝完gcc後執行make命令的時候出現 'make' can be found in the following packages:於

LinuxUbuntu改變敲入sudo之後記住密碼的時間

在使用Ubuntu時可能會遇到當敲入sudo XXX XXX….$: 之後系統會記錄密碼一段時間,如果想要改變這個記錄的時間(系統預設是5分鐘),方法如下: 輸入sudo visudo 找到”Defaults env_reset”行(如果沒有找到,就直接加入

linuxubuntu系統已經安裝好輸入法必需的框架和輸入法,如何切換輸入法?

我們知道在linux系統右上角設定->裝置->鍵盤中可以設定切換輸入法的快捷鍵,預設是super+空格,也就是windows鍵+空格。但是我在裝了一個預設漢語字母輸入法,谷歌輸入法和搜狗拼音輸入法後卻不能在他們之間來回切換。 後來終於發現只有同一個框架下的輸入法才可以自由使用快捷

LinuxUbuntu下的OpenGl的環境安裝, 在qt程式使用opengl庫

OpenGl的環境安裝 以下參考自: https://blog.csdn.net/wasaiheihei/article/details/52085397 1. 建立基本編譯環境 首先不可或缺的,就是編譯器與基本的函式庫,如果系統沒有安裝的話,請依照下面的方式安裝: $ sudo a

老牛知點所以然-LinuxUbuntu配置安卓開發環境及過程常見問題解決

[TOC] 題記: 這篇部落格基本上是半年多實踐過程中積累到筆記中的。在第二次配置完開發環境後,我就有意識的把大概的配置過程形成了一個筆記,這半年多將近一年的時間裡,陸續發現了一些不足和謬誤,還有以前踩過的坑沒有及時記下來,最近又踩過的,逐漸補充了過來,算是

決策樹算法——處理一些特殊的分類

字典 如果 span items 分類 lis 函數 可能 一個 在之前的決策樹算法中我們已經講解了從數據集構造決策樹算法的功能模塊。 首先是創建數據集,然後計算香農熵,然後基於最好的屬性值劃分數據集,由於特征值可能多於兩個,因此可能存在大於兩個分支的數據集劃分。第一次劃

linuxubuntu 創建桌面圖標

mys devel navicat intellij evel log 執行權 avi mina 1 創建desktop後綴文件 2 添加內容 [Desktop Entry]Name=navicat// 應用名字Exec=/opt/navicat112_mysql_cs_

Linuxubuntu安裝redis集群,redis集群搭建

sof 安裝redis redis wget fig 開啟 ++ gem OS 今天學習一下redis集群的搭建。redis在現在是很常用的數據庫,在nosql數據庫中也是非常好用的,接下來我們搭建一下redis的集群。 一、準備

LinuxUbuntu常用命令

需要 ip地址 useradd 賬號 his word color -a change 查看時間    cal :顯示當前日期。    cal 2018 :顯示全年日歷。/ cal -y 顯示當年日歷。    date :顯示當前時間。   這幾個一般不會用到了解即可。 查

Linuxubuntu下安裝pycharm出錯Unsupported major.minor version 52.0

version -i sim one line height 檢測 cin 變量 已安裝python 已安裝jdk 在pycharm文件夾中bin中執行sh ./pycharm.sh 時出錯:Unsupported major.minor version 52.0 這個錯誤

阿里雲 LinuxCentOSRedis配置注意事項

1,執行的Redis伺服器提示找不到該命令: 執行ln -s /root/redis-2.8.17/src/redis-server / usr / bin / redis-server,為redis-server建立軟連線,其中/root/redis-2.8.17/src/為我redis安裝目

阿里雲 LinuxCentOSMySQL5.7安裝配置以及遠端連線配置最新完整版

1, mysql57-community-release-el7-11.noarch.rpm 點選下載並上傳到阿里雲。 2,切換資料夾,然後一步步輸入下面三條命令,即安裝好的MySQL的 (1),rpm -ivh mysql57-community-release-el7-1

Vmware虛擬機器完整建立一個linuxUbuntu系統全過程

上一篇中,我們已經完整的講完了虛擬機器的安裝和虛擬機器工具的安裝,使我們的Ubuntu實現的互動共享的功能,這一篇,我們要講的是用ssh和Xshell實現伺服器的功能。 第一步:獲取軟體(包含註冊碼) 提取碼:q2j1 第二步: 安裝過程截圖 第三步:

Vmware虛擬機器完整建立一個linuxUbuntu系統全過程

在上一篇中,我們已經成功的將我們的虛擬機器安裝了系統,完成了對系統的設定,那麼,我們如何能將本機檔案和虛擬機器檔案進行互動和共享呢?還有,解析度上我們怎麼得到我們想要的解析度呢? 第一步: 開啟我們的虛擬機器,然後單擊VMware選單欄虛擬機器選項,在彈出的選項中選擇安裝VMware T

Vmware虛擬機器完整建立一個linuxUbuntu系統全過程

上一篇,我們講到了VMware的安裝和建立一個新的虛擬機器的框架,這篇我們就講一下如何將我們的下載的linux系統匯入到我們的虛擬機器框架中。 第一步: 開啟VMware,點選編輯虛擬機器設定,選擇CD/DVD(SATA)將右邊的連線改成使用ISO映像檔案,瀏覽找到你的Ubuntu壓縮包

Vmware虛擬機器完整建立一個linuxUbuntu系統全過程

所需軟體下載: Vmware10虛擬機器+ubuntu16.04.3+啟用金鑰獲取  提取密碼: 8bzm   當軟體下載完畢後 我們就做好了一個完整虛擬機器所需要的所有初步軟體,所以接下來我們先進行第一步Vmware虛擬機器的安裝。  第

ubuntu設定root密碼及 Xftp連線linuxubuntu時提示ssh伺服器拒絕了密碼,請再試一次

原文: ubuntu設定root密碼及 Xftp連線linux(ubuntu)時提示ssh伺服器拒絕了密碼,請再試一次 alt+f2,在彈出的執行視窗中輸入:gnome-terminal sudo passwd root,回車後按提示輸入兩次root的密碼

VMware Workstation的安裝以及LinuxUbuntu系統的安裝

最近開始學習Linux作業系統,對於我們初學者,怎麼安裝虛擬機器和Ubuntu確實很頭疼,下面是自己的一些成果,僅供參考。 一、VMware Workstation的安裝 VMware是最常用的虛擬機器,他面向企業和個人開發了多個版本,其中有一些需要使用者購買許可證,如VMware Work