管道符、重定向與環境變量

輸入輸出重定向

? ? 輸入重定向:將文件內容導入到命令中;輸出重定向:將命令執行后顯示到屏幕上的內容導入到文件中,不在屏幕中顯示。共分為:標準輸入重定向(文件描述符為0)、標準覆蓋輸出(1)、標準追加輸出(1)、錯誤覆蓋輸出(2)、錯誤追加輸出(2)。0,1可省略不寫,2必須要寫。 ?

? ? 標準輸入:wc -l < zsx.txt ?等效于 cat zsx.txt | wc -l ? ?也可以直接: wc -l zsx.txt? ? ?命令 << 截止符 直到輸入內容為截止符(再確認)為止,將輸入內容作為命令的輸入 ?如 wc -l << over

? ? 標準輸出: 命令 > 文件 覆蓋,即清空原文件內容 ? 命令 >> 文件 ?追加 ? 如果命令執行后顯示的是出錯信息,如 ls -l xxx(xxx為不存在的文件),則依然會在屏幕上顯示信息,不會寫入到文件中 ??

? ? 錯誤輸出: 命令 2> 文件 覆蓋 ?命令 2>> 文件 追加 ? ?標準與錯誤信息都輸出: ?命令 >> 文件 2>&1 追加 或者 ?命令 &>> 文件 追加 ? 命令 &> 文件 覆蓋

管道命令符

? ? 命令A | 命令B 前一個命令的輸出(不會在屏幕上顯示)作為后一個命令的輸入。?
? ? grep "/sbin/nologin" /etc/passwd | wc -l? ? ? ? ? ? ? ls -l /etc | more
? ? 命令A | 命令B | 命令C ······

通配符 * ? [] {} (也叫正則表達式)

? ? *匹配零個或多個字符; ?匹配單個字符; [0-9]匹配數字0至9中的單個數字;[135]匹配1、3、5中的單個數字;[a-z] ? [abc]? ? ? ? ? ? {1,3,5}匹配匹配1、3、5中的單個數字,且沒有的數據項會報錯 ? ?ls -l? /dev/sda{1,3,5} ? ls -l? /dev/sda{12,1,23,24} ?[a-z][A-Z]匹配的 是兩個字符,第一個為小寫,第二個為大寫。

轉義字符

? ? ?\(反斜杠) :將其后面的一個變量變為單純的字符串 ? ''(單引號):轉義其中的所有變量為單純的字符串 ?
? ? ``(反引號):把其中的命令執行后返回結果 ? ""(保留其中的變量屬性,不做轉義處理) ?
? ? $為變量提取符號(是一個變量) ? VALUE=5 //定義一個變量VALUE值為5 ? ? echo "the value is $VALUE" ? $ $表示顯示當前程序的進程號碼 ? echo "the value is $ $VALUE" ? ? 輸出為 the value is 3427VALUE ?echo"the value is \$ $VALUE" 輸出為 the value is $5? echo 'the value is $ $VALUE' 輸出為 the value is$$VALUE ? ? ?echo `uname -a` ?與 uname -a的效果一樣 也等價于: echo $(uname -a) ? ?即 `uname -a`與$(uname -a)是等效的 ? `命令`與$(命令)等效

環境變量

? ? ?Linux系統中的變量名都為大寫(規定),環境變量是用來定義系統運行環境的一些參數,如:用戶家目錄、存放路徑等。可用env命令查看當前用戶所有的環境變量。 ?不同用戶的環境變量值都不一定相同,Linux為每個用戶提供獨立的、合適的工作環境 ?HOME 用戶的家目錄 HISTSIZE 輸出的歷史命令條數 HISTFILESIZE保存的歷史命令條數 ? SHELL 用戶使用的SHELL解釋器名稱(/bin/bash,為一個二進制文件) ?MALL 郵件保存路徑 RANDOM生成一個隨機數字 ? ?PS1 Bash解釋器的提示符,可以自己定義(修改其值即可) ?PATH 解釋器搜索用戶執行命令的路徑。USER? 系統的當前用戶? ?

? ? ? 在Linux系統中一切都是文件,命令也是文件,服務也是一種文件,而對服務程序進行配置自然也就是編輯程序的配置文件,即在配置一個服務時就是在修改這個服務的配置文件。系統中的硬件都會以硬件-文件的形式進行映射,形成設備文件存放在/dev中。命令在Linux系統中執行時會發生4個步驟:判斷用戶是以絕對路徑(/bin/ls)還是相對路徑(ls)的方式輸入命令,如果是絕對路徑,則直接可以得到命令文件,進行執行,否則需要到PATH中去找(當然內部命令不需要);判斷用戶輸入的命令是否為別名命令;判斷命令是內部命令還是外部命令,內部命令(解釋器內部的命令)直接執行,外部命令則需要查找該命令的命令文件(PATH);Bash解釋器在會在環境變量PATH中的多個路徑中依次查找對應的命令文件(若有多個相同名字的這個文件,則第一個找到就不再找了,因此黑客可能會創建一個跟其同名的木馬文件)。PATH中的路徑的增加和刪除都會影響到Bash解釋器對命令的查找,因為有了PATH,/bin/ls 與 ls才會有相同的效果。 修改PATH: PATH=$PATH:/root/bin 即增加一個路徑。Linux有4種命令:路徑命令(占所有命令的1%);alias別名(2%);內部命令(1%);外部命令(96%)。
? ? 變量由變量名和變量值兩部分組成,可以輕松創建: ?WORKDIR=/root/work ?cd $WORKDIR ?但是這樣創建的變量為局部變量,即不能被其它用戶使用,可以使用export命令將其提升為全局變量。export WORKDIRsu命令和su - 命令最大的本質區別就是:前者只是切換了身份,但Shell環境仍然是原來用戶的Shell(環境不變);而后者連用戶和Shell環境一起切換成新用戶身份了。只有切換了Shell環境才不會出現PATH環境變量錯誤。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385474.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385474.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385474.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++ Primer | 0 】字符串函數實現

1. memcpy函數原型&#xff1a; void* memcpy(void* dst, const void* src, size_t size); void* memmove(void* dst, const void* src, size_t size); 分析&#xff1a; source和destin所指的內存區域可能重疊&#xff0c;但是如果source和destin所指的內存區域重疊,那么這個…

編寫Shell腳本(批處理,一次執行多條命令)

Bash終端的優勢&#xff1a;1.上下鍵重復執行命令&#xff1b;2.tab鍵自動補齊&#xff1b;3.提供有用的環境變量&#xff1b;4.批處理。 shell腳本文件建議以.sh為后綴。 其實vim創建文本文件時&#xff0c;對名字無要求&#xff0c;但最好規定格式。 echo $SHELL&#xff08…

判斷用戶的參數(條件測試語句)

說明$?: $&#xff1f;為上一次命令的執行返回值&#xff0c;若上一次命令正常執行&#xff0c;則返回0&#xff1b;若執行出錯&#xff0c;則返回一個非0的隨機數。比如創建一個已經存在的目錄&#xff0c;則返回一個非0數。 另外&#xff0c;測試語句成立返回0&#xff0c…

流程控制語句(bash)

1.if控制語句 if then fi if then else fi if then elif then elif then else fi if 條件表達式 then 命令序列&#xff08;滿足條件才執行&#xff09; #注意&#xff0c;如果if與then&#xff08;elif與then&#xff09;寫在同一行&#xff0c;要用;隔開&#xff…

用戶身份與文件的權限(普通權限、特殊權限、隱藏權限和文件控制列表ACL)

用戶身份 root用戶是存在于所有類UNIX操作系統中的超級用戶&#xff0c;它擁有最高的系統所有權。root用戶的用戶身份號碼UID為0&#xff0c;UID相當于用戶的身份證號碼一樣&#xff0c;具有唯一性。管理員用戶&#xff08;超級用戶&#xff09;UID為0&#xff1b;系統用戶UID為…

存儲結構與磁盤劃分

文件系統層次化標準&#xff08;FHS&#xff0c;file system hierarchy standard&#xff09; 在windows操作系統中&#xff0c;要找到一個文件需要先進入該文件所在的磁盤分區&#xff08;如C:\等 C:\ZSX\zsx.txt&#xff09;&#xff0c;然后在進入該分區下的一個具…

Linux中常用文件的含義

在Linux中配置了服務文件后&#xff0c;需要重啟該服務&#xff0c;配置信息才會生效。 /etc/passwd 保存了系統中所有用戶的信息&#xff0c;一旦用戶的登陸終端設置為/sbin/nologin&#xff0c;則不再允許登錄到系統 /etc/shadow與/etc/passwd均為用戶信息文件 /…

64. 最小路徑和

給定一個包含非負整數的 m x n 網格&#xff0c;請找出一條從左上角到右下角的路徑&#xff0c;使得路徑上的數字總和為最小。 說明&#xff1a;每次只能向下或者向右移動一步。 示例: 輸入: [[1,3,1],[1,5,1],[4,2,1] ] 輸出: 7 解釋: 因為路徑 1→3→1→1→1 的總和最小。…

Linux本地yum源配置以及使用yum源安裝各種應用程序

將軟件包傳送到Linux中后&#xff0c;掛載&#xff0c;然后配置yum軟件倉庫&#xff0c;最后就可以使用yum來安裝相應的應用程序了。假設掛載目錄為/tmp/ruanjianbao&#xff0c;則下面說明配置本地yum倉庫的過程&#xff1a; &#xff08;1&#xff09;cd /etc/yum.repos.d/…

gcc與g++編譯器

首先在Linux(RHEL7.0)上安裝gcc&#xff1a;yum install gcc gcc-c -y 其中gcc-c是為了能夠編譯c源代碼&#xff0c;即g。 gcc為Linux C/C下重要的編譯環境&#xff0c;是GUN項目中符合ANSIC標準的編譯系統&#xff0c; gcc可以編譯C、C、Objective-C、Java、Fortran、Pascal…

【Leetcode | 49】230. 二叉搜索樹中第K小的元素

給定一個二叉搜索樹&#xff0c;編寫一個函數 kthSmallest 來查找其中第 k 個最小的元素。 說明&#xff1a; 你可以假設 k 總是有效的&#xff0c;1 ≤ k ≤ 二叉搜索樹元素個數。 示例 1: 輸入: root [3,1,4,null,2], k 1 3 / \ 1 4 \ 2 輸出: 1 示例 2: 輸入…

gcc編譯器的整個工作過程

gcc hello.c ./a.out 或者 gcc hello.c -o hello ./hello ./表示執行當前目錄下的可執行程序或腳本程序。 首先gcc需要調用預處理程序cpp&#xff0c;由它負責展開在源文件中定義的宏&#xff0c;并向其中插入“#include”語句所包含的內容&#xff1b;接著gcc會調用…

宏定義對調試代碼的作用

以如下代碼為例&#xff1a; //head.h #ifndef __HEAD_H__ #define __HEAD_H__#define NUM1 10 #define NUM2 20 #endif//sum.c #include <stdio.h> //直接在標準庫中查找 #include "head.h" //先在工作目錄中查找&#xff…

【第15章】多重繼承

1. 虛基類介紹 多繼承時很容易產生命名沖突&#xff0c;即使我們很小心地將所有類中的成員變量和成員函數都命名為不同的名字&#xff0c;命名沖突依然有可能發生&#xff0c;比如非常經典的菱形繼承層次。如下圖所示&#xff1a; 類A派生出類B和類C&#xff0c;類D繼承自類B和…

gcc編譯器與g++編譯器的區別

gcc與g編譯器的程序文件分別為&#xff1a;/usr/bin/g和/usr/bin/gcc。 gcc 和 GCC 是兩個不同的東西&#xff0c;GCC:GNU Compiler Collection(GUN 編譯器集合)&#xff0c;它可以編譯C、C、JAV、Fortran、Pascal、Object-C、Ada等語言。gcc是GCC中的GUN C Compiler&#xff0…

1. 排序算法

一、概述 假定在待排序的記錄序列中&#xff0c;存在多個具有相同的關鍵字的記錄&#xff0c;若經過排序&#xff0c;這些記錄的相對次序保持不變&#xff0c;即在原序列中&#xff0c;r[i]r[j]&#xff0c;且r[i]在r[j]之前&#xff0c;而在排序后的序列中&#xff0c;r[i]仍…

1036. 跟奧巴馬一起編程(15)

美國總統奧巴馬不僅呼吁所有人都學習編程&#xff0c;甚至以身作則編寫代碼&#xff0c;成為美國歷史上首位編寫計算機代碼的總統。2014年底&#xff0c;為慶祝“計算機科學教育周”正式啟動&#xff0c;奧巴馬編寫了很簡單的計算機代碼&#xff1a;在屏幕上畫一個正方形。現在…

庫文件與頭文件

首先說明庫文件與頭文件在gcc中的具體使用方法&#xff0c;然后說明兩者的區別與聯系。 庫文件即庫函數&#xff0c;如printf和scanf函數。以libgtdf.so庫文件為例&#xff08;庫文件在命名時都以lib開頭&#xff0c;因此使用-l選項去鏈接指定的庫文件時可以省略lib三個字母&am…

gcc的常用參數

-c 編譯成目標文件.o&#xff08;只編譯不鏈接&#xff09; gcc -c hello.s -o hello.o -o 指出輸出文件名&#xff0c;輸出文件名跟在-o后面。如果不使用這一選項&#xff0c;則缺省的輸出文件名為a.out。gcc hello.c -o hello.exe&#xff08;在Linux中該項后綴名無要求&a…

1027. 打印沙漏(20)

本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”&#xff0c;要求按下列格式打印 ************ *****所謂“沙漏形狀”&#xff0c;是指每行輸出奇數個符號&#xff1b;各行符號中心對齊&#xff1b;相鄰兩行符號數差2&#xff1b;符號數先從大到小順序遞減…