手冊

来源:https://www.cnblogs.com/nmoo/archive/2019/12/30/12119570.html
-Advertisement-
Play Games

Linux初級指令 ls ——List ls 介紹 這是我學Linux的第一個命令,相信也是很多人學習Linux的第一個命令。ls全稱list. List information about the FILEs (the current directory by default). Sort ent ...


Linux初級指令

ls ——List

ls 介紹

 這是我學Linux的第一個命令,相信也是很多人學習Linux的第一個命令。ls全稱list.

List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

列出有關文件的信息(預設為當前目錄)。如果沒有指定-cftuvSUX或——Sort,則按字母順序排序。

 官方的說的很清楚,預設列出當前目錄,所以可以列出其他目錄或者路徑下的文件信息或者目錄信息。

eg:

$ls /etc/hosts
/etc/hosts

 ls還可以列出指定目錄下的文件列表。

image-20191221161638964image-20191221161638964

ls 參數格式

ls [OPTION]... [FILE]...

ls命令參數

-a 列出指定目錄下的所有文件,包括隱藏文件

-c 使用最後一次更改文件狀態以進行排序(-t)或長時間列印(-l)的時間

-h 與-l選項一起使用時,請使用單位尾碼:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2為基數的大小將數字減少到3或更少

-l 長格式列表。(見下文)。如果輸出到終端,則所有文件大小的總和將輸出到長清單前面的一行中

-n 以數字形式顯示用戶和組id,而不是在長(-l)輸出中轉換為用戶或組名。這個選項預設打開-l選項

-o 以長格式列出,但省略組id

-s 顯示每個文件實際使用的文件系統塊的數量,以512位元組為單位,其中部分單元四捨五入為下一個整數值

-t 在按照字典順序對操作數排序之前,先按修改的時間排序(最近修改的是first)

-u 使用最後一次訪問的時間,而不是最後一次修改文件進行排序

ls 用法示例:

$ ls
test  tmp
$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  test  tmp
#可以看到通過ls -a 可以查看當前目錄影藏的文件,Linux下(.)開頭的文件是隱藏文件。
$ ls -l
total 4
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -lh
total 4.0K
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp
$ ls -ll
total 4
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -alh
total 28K
drwx------   3 test hero 4.0K Dec 21 19:54 .
drwxr-xr-x. 19 root  root 4.0K Aug  1 10:41 ..
-rw-------   1 test hero  226 Dec 21 19:54 .bash_history
-rw-r--r--   1 test hero   18 Aug  3  2016 .bash_logout
-rw-r--r--   1 test hero  193 Aug  3  2016 .bash_profile
-rw-r--r--   1 test hero  231 Aug  3  2016 .bashrc
-rw-r--r--   1 test hero    0 Dec 21 19:54 test
drwxr-xr-x   2 test hero 4.0K Dec 21 19:54 tmp
$ ls -o
total 4
-rw-r--r-- 1 test    0 Dec 21 19:54 test
drwxr-xr-x 2 test 4096 Dec 21 19:54 tmp
$ ls -oh
total 4.0K
-rw-r--r-- 1 test    0 Dec 21 19:54 test
drwxr-xr-x 2 test 4.0K Dec 21 19:54 tmp

pwd —— Print Working Directory

pwd介紹

 列印當前工作目錄的完整路徑名。(print name of current/working directory)

參數格式

pwd [OPTION]...

pwd 用法展示

[test@Mfate171193 /home/test] 20:06
pwd
/home/test

touch (change file timestamps)

touch介紹

Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h is supplied.

 將每個文件的訪問和修改時間更新為當前時間。除非提供-c或-h,否則將不存在的FILE參數創建為空。

touch參數格式

touch [OPTION]... FILE...

touch命令參數

-a 或--time=atime或--time=access或--time=use 只更改存取時間。

-c 或--no-create 不建立任何文檔。

-d 使用指定的日期時間,而非現在的時間。

-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的相容性問題。

-m 或--time=mtime或--time=modify 只更改變動時間。

-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。

-t 使用指定的日期時間,而非現在的時間。

用法示例

#創建三個文件
$ touch test1 test2 test3
#不創建文檔
$ touch -c test5  
$ ls
test1  test2  test3
#可以看到只創建了test1、test2、test3 , -c不建立任何文件
$ touch -t 201911110000 test1
stat test*
#stat命令可以查看文件的詳細變更時間,可以test1文件的最後修改時間為201911110000,說明touch -t可以修改文件最後訪問時間。這個參數還是很有用的,你可以把你最近訪問的時間修改為一個很早的時間。可以做一些有趣的事情,哈哈。
  File: ‘test1’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 360736      Links: 1
Access: (0644/-rw-r--r--)  Uid: (14060/   localhost)   Gid: ( 1001/    hero)
Access: 2019-11-11 00:00:00.000000000 +0800
Modify: 2019-11-11 00:00:00.000000000 +0800
Change: 2019-12-21 20:58:11.290761038 +0800
 Birth: -
  File: ‘test2’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 360738      Links: 1
Access: (0644/-rw-r--r--)  Uid: (14060/   localhost)   Gid: ( 1001/    hero)
Access: 2019-12-21 20:56:34.523761038 +0800
Modify: 2019-12-21 20:56:34.523761038 +0800
Change: 2019-12-21 20:56:34.523761038 +0800
 Birth: -
  File: ‘test3’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 360740      Links: 1
Access: (0644/-rw-r--r--)  Uid: (14060/   localhost)   Gid: ( 1001/    hero)
Access: 2019-12-21 20:56:34.523761038 +0800
Modify: 2019-12-21 20:56:34.523761038 +0800
Change: 2019-12-21 20:56:34.523761038 +0800
 Birth: -

cat&tac (Concatenate FILE(s), or standard input, to standard output.)

cat介紹

Concatenate FILE(s), or standard input, to standard output.

將FILE或標準輸入連接到標準輸出。

cat 參數格式

cat [OPTION]... [FILE]...

cat命令參數

-A, --show-all 等價於 -vET

-b, --number-nonblank 對非空輸出行編號

-e 等價於 -vE

-E, --show-ends 在每行結束處顯示

-n, --number 對輸出的所有行編號,由1開始對所有輸出的行數編號

-s, --squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行

-t 與 -vT 等價

-T, --show-tabs 將跳格字元顯示為 ^I

-u (被忽略)

-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

cat常用參數示例

$ cat test  #展示文件內容
-A, --show-all      等價於 -vET
-b, --number-nonblank  對非空輸出行編號
-e            等價於 -vE

$ cat -n test  #展示文件內容並且展示行號
     1    -A, --show-all      等價於 -vET
     2    -b, --number-nonblank  對非空輸出行編號
     3    -e            等價於 -vE

tac命令與cat命令展示內容相反,不能帶行號輸出。

$ tac test
-e            等價於 -vE
-b, --number-nonblank  對非空輸出行編號
-A, --show-all      等價於 -vET

mkdir —— Make Directory

mkdir介紹

Create the DIRECTORY(ies), if they do not already exist.

如果目錄不存在,則創建目錄。

mkdir參數格式

mkdir [OPTION]... DIRECTORY...

mkdir命令參數

-m, --mode=模式,設定許可權<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask

-p, --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;

-v, --verbose 每次創建新目錄都顯示信息

--help 顯示此幫助信息並退出

--version 輸出版本信息並退出

mkdir常用參數示例

#創建目錄文件test
$ mkdir test
#連續創建
$ mkdir -p test1/tmp
$ ls
test  test1
#創建時置頂目錄許可權
#tmp目錄擁有可執行許可權,Linux文件許可權問題後期文章會詳細講到,記得關註我
$ mkdir -pm 777 test2/tmp
$ ls -lh
total 12K
drwxr-xr-x 2 localhost hero 4.0K Dec 21 21:39 test
drwxr-xr-x 3 localhost hero 4.0K Dec 21 21:40 test1
drwxr-xr-x 3 localhost hero 4.0K Dec 21 21:40 test2
$ ls
test  test1  test2
#-v 參數可確定文件是否已經存在,如果不存在則會創建,並顯示如下信息
$ mkdir -v test
mkdir: cannot create directory ‘test’: File exists

$ mkdir -v test7
mkdir: created directory ‘test7’

cd —— Change Directory

cd介紹

 切換當前目錄至指定目錄

常用參數示例

#列印當前目錄到標準輸出
pwd
/Users/localhost
#切換到目錄/
$cd /

 cd命令沒什麼參數就是切換目錄到指定路徑下,較為簡單,但是使用評率極高。

rm&rmdir —— Remove Directory

rm介紹

The rm utility attempts to remove the non-directory type files specified on the command line. If the permissions of the file do not permit writing, and the standard input device is a terminal, the user is prompted (on the standard error output) for confirmation.

rm實用程式嘗試刪除命令行上指定的非目錄類型文件。 如果文件的許可權不允許寫入,並且標準輸入設備是終端,則會提示用戶(在標準錯誤輸出上)進行確認。

 rm命令使用時還是需要註意的,他的刪除恢複比較麻煩,有些系統會自帶-i參數,輸入命令之後還有一個確認步驟,有些是直接刪掉了,是真刪掉,從記憶體抹掉那種(其實底層是讓該文件指針不指向該文件的記憶體塊,記憶體上的內容原則上是存在的,但是恢復會比較複雜,需要掃描整塊記憶體塊才能拿到內容)。不要輕易刪掉你寫的重要代碼,hh。

rm參數格式

rm [-dfiPRrvW] file ...

rm命令參數

-f, --force 忽略不存在的文件,從不給出提示。

-i, --interactive 進行互動式刪除

-r, -R, --recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。

-d, --dir 刪除空目錄

rm常用參數示例

# 創建三個文件
$ touch tmp.cc tmp.java tmp.py tmp.go
#創建目錄文件
$ mkdir -p linux/test
#查看文件是否創建成功
$ ls
linux    tmp.cc   tmp.go   tmp.java tmp.py
#刪除文件,併進行提示
$ rm -i tmp.cc
remove tmp.cc? y
#強制刪除
$ rm  -f tmp.go
#刪除目錄
$ rm -f linux  #刪除目錄失敗
rm: linux: is a directory
#迴圈刪除目錄下所有文件
$ rm -rf linux  #刪除目錄成功,
$ ls
tmp.java tmp.py  

 rmdir==rm -d 刪除空目錄

mv —— Move

mv介紹

In its first form, the mv utility renames the file named by the source operand to the destination path named by the target operand. This form is assumed when the last operand does not name an already existing directory.

In its second form, mv moves each file named by a source operand to a destination file in the existing directory named by the directory operand. The destination path for each operand is the pathname produced by the concatenation of the last operand, a slash, and the final pathname component of the named file.

總結下,就是移動目錄或者文件到置頂目錄下,同時具有重命名的功能。

mv參數格式

mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory

mv命令參數

-b :若需覆蓋文件,則覆蓋前先行備份。

-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋

-n:不要覆蓋現有文件。 (-n選項將覆蓋以前的任何-f或-i選項。)

-u :若目標文件已經存在,且 source 比較新,才會更新(update)

mv常用參數示例

##修改文件名
$ touch tmp.cc

$ ls
tmp.cc

$ mv tmp.cc tmp.java

$ ls
tmp.java
#移動文件或者目錄
pwd
/Users/localhost/test
#移動文件並重命名
$ mv /Users/localhost/logs/tmp.txt ./tmp.log 

$ ls /Users/localhost/logs/
discover-client metabase        tesla

$ ls ./
tmp.java tmp.log
#移動目錄並重命名
$ mv /Users/localhost/logs/tesla  ./tesla.ba 

$ ls
tesla.ba tmp.java tmp.log

 這個命令在寫makefile文件的時候用起來很舒服,可以把編譯的結果移到指定目錄並重命名。

cp —— Copy

cp介紹

In the first synopsis form, the cp utility copies the contents of the source_file to the target_file. In the second synopsis form, the contents of each named source_file is copied to the destination target_directory. The names of the files themselves are not changed. If cp detects an attempt to copy a file to itself, the copy will fail.

cp實用程式將source_file的內容複製到target_file。 在第二個大綱格式中,每個命名的source_file的內容都複製到目標target_directory。 文件本身的名稱不會更改。 如果cp檢測到嘗試將文件複製到自身的嘗試,則複製將失敗。

cp參數格式

cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory

命令參數

-a, --archive 等於-dR --preserve=all

--backup[=CONTROL 為每個已存在的目標文件創建備份

-b 類似--backup 但不接受參數

--copy-contents 在遞歸處理是複製特殊文件內容

-d 等於--no-dereference --preserve=links

-f, --force 如果目標文件無法打開則將其移除並重試(當 -n 選項

​ 存在時則不需再選此項)

-i, --interactive 覆蓋前詢問(使前面的 -n 選項失效)

-H 跟隨源文件中的命令行符號鏈接

-l, --link 鏈接文件而不複製

-L, --dereference 總是跟隨符號鏈接

-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)

-P, --no-dereference 不跟隨源文件中的符號鏈接

-p 等於--preserve=模式,所有權,時間戳

--preserve[=屬性列表 保持指定的屬性(預設:模式,所有權,時間戳),如果

​ 可能保持附加屬性:環境、鏈接、xattr 等

-R, -r, --recursive 複製目錄及目錄內的所有項目

常用參數示例

$ cat tmp.cc
change world

#拷貝文件內容
$ cp tmp.cc tmp.java

$ cat tmp.java
change world

echo

echo介紹

The echo utility writes any specified operands, separated by single blank (') characters and followed by a newline (\n') character, to the standard output.

echo實用程式將任何指定的操作數寫入標準輸出,這些操作數由單個空格()字元分隔,後跟換行符(\ n')字元。

這條命令較為簡單,常用來列印變數、文本內容到,例如:

echo "change world"
change world

#s輸出PWD環境變數的值
echo $PWD
/Users/localhost/test

$PWD 是取當前路徑,然後echo到標準輸出,一般echo $name 用來查看某個環境變數的值

head&tail

head介紹

This filter displays the first count lines or bytes of each of the specified files, or of the standard input if no files are specified. If count is omitted it defaults to 10.

此過濾器顯示每個指定文件或標準輸入(如果未指定文件)的前幾行或位元組。

If more than a single file is specified, each file is preceded by a header consisting of the string ==> XXX <=='' whereXXX'' is the name of the file.

如果省略count,則預設為10.如果指定了多個文件,則每個文件的頭均由字元串==> XXX <==''組成,其中XXX''為文件名 文件。

head參數格式

head [-n count | -c bytes] [file ...]

head常用參數示例

-n 展示前n行

-c 展示前n個字元

head常用參數示例

$ cat -n test.txt #這就用上前面的cat命令的-n參數,要學會學以致用哦。
     1    用
     2    心
     3    分
     4    享,
     5    共
     6    同
     7    成
     8    長.
     9
    10    沒
    11    有
    12    什
    13    麽
    14    比
    15    你
    16    每
    17    天
    18    進
    19    步
    20    一
    21    點
    22    更
    23    實
    24    在
    25    了
    26    .

$ head test.txt  #預設展示10行



享,



長.



$ head -n15 test.txt #展示15行



享,



長.








$ head -c23 test.txt #展示前23個字元,中文一個漢字並非一個字元的(utf-8編碼中文字元長度是可變的)



享,

tail命令完全和他相反,是從尾部開始展示文本,但是他的參數用法更多。

-f 迴圈讀取

-q 不顯示處理信息

-v 顯示詳細的處理信息

-c<數目> 顯示的位元組數

-n<行數> 顯示行數

--pid=PID 與-f合用,表示在進程ID,PID死掉之後結束.

-q, --quiet, --silent 從不輸出給出文件名的首部

-s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒

tail和head命令經常用來查看日誌,像我現在基本每天都會用,我的日誌文件沒辦法用vim或者cat這樣去看(因為我負責的業務日誌量每天都是幾十個G),要麼用tail,要麼用more&less(下麵會講)。

more&less

more介紹

Less is a program similar to more (1), but which allows backward movement in the file as well as forward movement. Also, less does not have to read the entire input file before starting, so with large input files it starts up faster than text editors like vi (1). Less uses termcap (or terminfo on some systems), so it can run on a variety of terminals. There is even limited support for hardcopy terminals. (On a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.)

more每次打開文件不是全部把文件讀入記憶體而是流式讀取,不會因為vi|vim某個大文件而造成系統oom。

more&less最重要的一點就是流式讀取,支持翻頁,像cat命令是全部讀取輸出到標準輸出,如果文件太大會把屏幕刷滿的,根本沒辦法看。

more參數格式

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

more命令參數

+n 從笫n行開始顯示

-n 定義屏幕大小為n行

+/pattern 在每個檔案顯示前搜尋該字串(pattern),然後從該字串前兩行之後開始顯示

-c 從頂部清屏,然後顯示

-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能

-l 忽略Ctrl+l(換頁)字元

-p 通過清除視窗而不是滾屏來對文件進行換頁,與-c選項相似

-s 把連續的多個空行顯示為一行

-u 把文件內容中的下畫線去掉

less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,而且 less 在查看之前不會載入整個文件

wc

wc介紹

The wc utility displays the number of lines, words, and bytes contained in each input file, or standard input (if no file is specified) to the standard output. A line is defined as a string of characters delimited by a charac-ter. Characters beyond the finalcharacter will not be included in the line count.

wc實用程式顯示每個輸入文件或標準輸入(如果未指定文件)中每個輸入文件中包含的行數,字數和位元組數。 一行定義為由字元分隔的字元串。 最後一個字元之後的字元將不包括在行數中。

這條命令對我來說還是比較深刻的,我剛學習編程不久的時候,我感覺我寫的代碼很多了,那個時候我就很想知道我寫了多少行代碼了,一時興起,說乾就乾,直接寫了個程式去統計了一把,寫完之後還感覺自己蠻厲害的,誰知道之後學習到這個wc,然後就覺得自己還是嫩了點,還是要多學習。

wc參數格式

wc [-clmw] [file ...]

wc命令參數

-c 統計位元組數。

-l 統計行數。

-m 統計字元數。這個標誌不能與 -c 標誌一起使用。

-w 統計字數。一個字被定義為由空白、跳格或換行字元分隔的字元串。

-L 列印最長行的長度。

常用參數示例

$ ls
test.txt

$ wc test.txt
      26      26     103 test.txt

$ wc -l test.txt  #直接一把統計行數
      26 test.txt

$ wc -c test.txt
     103 test.txt

date & cal

date介紹

When invoked without arguments, the date utility displays the current date and time. Otherwise, depending on the options specified, date will set the date and time or print it in a user-defined way.

The date utility displays the date and time read from the kernel clock. When used to set the date and time, both the kernel clock and the hardware clock are updated.

Only the superuser may set the date, and if the system securelevel (see securelevel(7)) is greater than 1, the time may not be changed by more than 1 second.

當不帶參數調用時,date實用程式將顯示當前日期和時間。 否則,根據指定的選項,日期將設置日期和時間或以用戶定義的方式列印日期和時間。

date實用程式顯示從內核時鐘讀取的日期和時間。 當用於設置日期和時間時,內核時鐘和硬體時鐘都將更新。

只有超級用戶可以設置日期,並且如果系統安全級別(請參閱securelevel(7))大於1,則時間更改不得超過1秒。

date參數格式

date [-jRu] [-r seconds | filename] [-v [+|-]val[ymwdHMS]] ... [+output_fmt] date [-jnu] [[[mm]dd]HH]MM[[cc]yy][.ss] date [-jnRu] -f input_fmt new_date [+output_fmt] date [-d dst] [-t minutes_west]

date命令參數

%H 小時(以00-23來表示)。

%I 小時(以01-12來表示)。

%K 小時(以0-23來表示)。

%l 小時(以0-12來表示)。

%M 分鐘(以00-59來表示)。

%P AM或PM。

%r 時間(含時分秒,小時以12小時AM/PM來表示)。

%s 總秒數。起算時間為1970-01-01 00:00:00 UTC。

%S 秒(以本地的慣用法來表示)。

%T 時間(含時分秒,小時以24小時制來表示)。

%X 時間(以本地的慣用法來表示)。

%Z 市區。

%a 星期的縮寫。

%A 星期的完整名稱。

%b 月份英文名的縮寫。

%B 月份的完整英文名稱。

%c 日期與時間。只輸入date指令也會顯示同樣的結果。

%d 日期(以01-31來表示)。

%D 日期(含年月日)。

%j 該年中的第幾天。

%m 月份(以01-12來表示)。

%U 該年中的周數。

%w 該周的天數,0代表周日,1代表周一,異詞類推。

%x 日期(以本地的慣用法來表示)。

%y 年份(以00-99來表示)。

%Y 年份(以四位數來表示)。

%n 在顯示時,插入新的一行。

%t 在顯示時,插入tab。

MM 月份(必要)

DD 日期(必要)

hh 小時(必要)

mm 分鐘(必要)

ss 秒(選擇性)

-d<字元串> 顯示字元串所指的日期與時間。字元串前後必須加上雙引號。

-s<字元串> 根據字元串來設置日期與時間。字元串前後必須加上雙引號。

-u 顯示GMT。

常用參數示例

$ date
2019年12月22日 星期日 21時28分29秒 CST

$ date '+%c'
日 12/22 21:28:33 2019

$  date '+%D'
12/22/19

$  date '+%T'
21:28:50

$ date '+%X'
21時29分00秒

cal介紹

cal命令可以用來顯示西曆(陽曆)日曆。

cal參數格式

cal [-3hjy] [-A number] [-B number] [[month] year] cal [-3hj] [-A number] [-B number] -m month [year] ncal [-3hjJpwy] [-A number] [-B number] [-s country_code] [[month] year] ncal [-3hJeo] [-A number] [-B number] [year] ncal [-CN] [-H yyyy-mm-dd] [-d yyyy-mm]

cal命令參數

-1 顯示一個月的月曆

-3 顯示系統前一個月,當前月,下一個月的月曆

-s 顯示星期天為一個星期的第一天,預設的格式

-m 顯示星期一為一個星期的第一天
-j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,預設顯示當前月在一年中的天數)
-y 顯示當前年份的日曆

cal常用參數示例

$ cal
      十二月 2019
日 一 二 三 四 五 六
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31


$ ncal
    十二月 2019
一      2  9 16 23 30
二      3 10 17 24 31
三      4 11 18 25
四      5 12 19 26
五      6 13 20 27
六      7 14 21 28
日   1  8 15 22 29

which

which介紹

The which utility takes a list of command names and searches the path for each executable file that would be run had these commands actually been invoked.

which命令的作用是,在PATH變數指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

which參數格式

-n 指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。

-p 與-n參數相同,但此處的包括了文件的路徑。

-w 指定輸出時欄位的寬度。

which常用參數示例

which ls
alias ls='ls --color=auto'
    /bin/ls

which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    /bin/alias
    /usr/bin/which

whereis

whereis介紹

whereis命令只能用於程式名的搜索,而且只搜索二進位文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

whereis參數格式

whereis [program ...]

whereis命令參數

-b 定位可執行文件。

-m 定位幫助文件。

-s 定位源代碼文件。

-u 搜索預設路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。

-B 指定搜索可執行文件的路徑。

-M 指定搜索幫助文件的路徑。

-S 指定搜索源代碼文件的路徑。

whereis常用參數示例

$ whereis ls
/bin/ls

$ whereis whereis
/usr/bin/whereis

nl

nl介紹

nl命令在linux系統中用來計算文件中行號。nl 可以將輸出的文件內容自動的加上行號!其預設的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。

nl參數格式

nl [-p] [-b type] [-d delim] [-f type] [-h type] [-i incr] [-l num] [-n format] [-s sep] [-v startnum] [-w width] [file]

nl命令參數

-b :指定行號指定的方式,主要有兩種:

-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);

-b t :如果有空行,空的那一行不要列出行號(預設值);

-n :列出行號表示的方法,主要有三種:

-n ln :行號在螢幕的最左方顯示;

-n rn :行號在自己欄位的最右方顯示,且不加 0 ;

-n rz :行號在自己欄位的最右方顯示,且加 0 ;

-w :行號欄位的占用的位數。

-p 在邏輯定界符處不重新開始計算。

nl常用參數示例

$ nl test.txt
     1    用
     2    心
     3    分
     4    享,
     5    共
     6    同
     7    成
     8    長.

     9    沒
    10    有
    11    什
    12    麽
    13    比
    14    你
    15    每
    16    天
    17    進
    18    步
    19    一
    20    點
    21    更
    22    實
    23    在
    24    了
    25    .

ps

ps介紹

The ps utility displays a header line, followed by lines containing information about all of your processes that have controlling terminals.

ps實用程式顯示標題行,其後是包含有關具有控制終端的所有進程的信息的行。

ps參數格式

ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]] [-g grp[,grp...]] [-u uid[,uid...]] [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]] ps [-L]

ps命令參數

a 顯示所有進程

-a 顯示同一終端下的所有程式

-A 顯示所有進程

c 顯示進程的真實名稱

-N 反向選擇

-e 等於“-A”

e 顯示環境變數

f 顯示程式間的關係

-H 顯示樹狀結構

r 顯示當前終端的進程

T 顯示當前終端的所有程式

u 指定用戶的所有進程

-au 顯示較詳細的資訊

-aux 顯示所有包含其他使用者的行程

-C<命令> 列出指定命令的狀況

--lines<行數> 每頁顯示的行數

--width<字元數> 每頁顯示的字元數

ps常用參數示例

#查看所有進程
$ps -a
#查看進程的環境變數和程式間的關係
$ps -ef

kill&killall

kill介紹

The command kill sends the specified signal to the specified process or process group. If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal. For other processes, it may be necessary to use the KILL (9) signal, since this signal cannot be caught.

命令kill將指定的信號發送到指定的進程或進程組。 如果未指定信號,則發送TERM信號。 TERM信號將殺死不捕獲該信號的進程。 對於其他過程,可能需要使用KILL(9)信號,因為無法捕獲該信號。

kill參數格式

kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]

kill命令參數

-l 信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱

-a 當處理當前進程時,不限制命令名和進程號的對應關係

-p 指定kill 命令只列印相關進程的進程號,而不發送任何信號

-s 指定發送信號

-u 指定用戶

kill常用參數示例

#查看當前系統信號
kill -l
 1) SIGHUP     2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT     7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV    12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN    22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX
解釋

HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)

kill -9 是我們使用的最多的信號,其實這種方式一點也不優雅,應該使用kill -15信號,大部分程式接收到SIGTERM信號後,會先釋放自己的資源,然後再停止。但是也有程式可能接收信號後,做一些其他的事情(如果程式正在等待IO,可能就不會立馬做出響應,等到io完成後在結束),也就是說,SIGTERM多半是會被阻塞的。

講到這裡,linux基本指令差不多了夠用了,差不多可以上你的伺服器上隨便搞搞了。但是也只是簡單看看,更多的操作指令請看進階部分。


Linux進階指令

find

find介紹

The find utility recursively descends the directory tree for each path listed, evaluating an expression (composed of the primaries'' andoperands'' listed below) in terms of each file in the tree.

find實用程式對列出的每個路徑遞歸地遍歷目錄樹,根據樹中的每個文件計算表達式(由下麵列出的“初選”和“操作數”組成)。

這個命令使用頻率極高,如果對這個命令瞭解很透徹,在日常工作中可以事半功倍。這個命令的參數較多,常用的參數我會在下麵常用參數示例講清楚

find參數格式

find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

find命令參數

-print: find命令將匹配的文件輸出到標準輸出。

-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } \;,註意{ }和\;之間的空格。

-name 按照文件名查找文件。

-perm 按照文件許可權來查找文件。

-prune 使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那麼-prune將被find命令忽略。

-user 按照文件屬主來查找文件。

-group 按照文件所屬的組來查找文件。

-mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。

-nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。

-nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。

-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。

-type 查找某一類型的文件,諸如:

  • b - 塊設備文件。

  • d - 目錄。

  • c - 字元設備文件。

  • p - 管道文件。

  • l - 符號鏈接文件。

  • f - 普通文件。

-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以位元組計。-depth:在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找。

-fstype:查找位於某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。

-mount:在查找文件時不跨越文件系統mount點。

-follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。

-cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。

另外,下麵三個的區別:

-amin n 查找系統中最後N分鐘訪問的文件

-atime n 查找系統中最後n*24小時訪問的文件

-cmin n 查找系統中最後N分鐘被改變文件狀態的文件

-ctime n 查找系統中最後n*24小時被改變文件狀態的文件

-mmin n 查找系統中最後N分鐘被改變文件數據的文件

-mtime n 查找系統中最後n*24小時被改變文件數據的文件

find常用參數示例

-name參數常用參數示例 查找/user目錄下所有以.log結尾的文件

image-20191225235202419image-20191225235202419

-exec 參數後面跟的是command,它的終止是以;為結束標誌的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著.NET Core 3.1的發佈,國內2019 中國.NET開發者峰會在上海的成功舉辦。從技術採用生命周期的角度來說,隨著.NET Core 3.1的發佈,有越來越多的廠商開始採用.NET Core, .NET Core 正在跨越技術鴻溝。.NET Core 正是順應應用程式現代化,應用程式容器... ...
  • 在上一篇文章 abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之五(三十一) 中我們實現了新增組織部門信息功能,不過還存在一些BUG。今天我們來繼續完善組織部門信息新增功能,併進行測試。 ...
  • 前言 我是從.net 4.5直接跳到.net core 3.x的,感覺asp.net這套東西最初是從4.5中的owin形成的。目前官方文檔重點是講路由,沒有特別說明與傳統路由的區別,本篇主要介紹終結點路由的相關概念和如何使用,不會詳細介紹路由,這個參考官方文檔就ok了。如果將來有機會研究到底層再深度 ...
  • 問題 在開發微信支付的小微商戶進件介面時,需要通過表單來上傳身份證圖片等數據。在微信支付介面文檔也說明瞭,需要使用 multipart/form data 的方式發送請求。.NET 提供了 類型,幫助我們構建表單請求,故有以下代碼: 按照微信支付官方文檔提交之後,一直提示參數錯誤,百思不得其解。 原 ...
  • 一、為什麼有consul? 在微服務,每1個服務都是集群式的,訂單服務在10台伺服器上都有,那麼用戶的請求到達,獲取哪台伺服器的訂單服務呢?如果10臺中的有的訂單服務掛了怎麼辦?10台伺服器扛不住了,水平擴展又新增加了1台伺服器提供訂單服務,怎麼讓用戶請求知道有新的伺服器提供服務了?這時候就需要Co ...
  • "[轉]三分鐘學會.NET Core Jwt 策略授權認證" 一.前言 " " 大家好我又回來了,前幾天講過一個關於Jwt的身份驗證最簡單的案例,但是功能還是不夠強大,不適用於真正的項目,是的,在真正面對複雜而又苛刻的客戶中,我們會不知所措,就現在需要將認證授權這一塊也變的複雜而又實用起來,那在專業 ...
  • 本文更新於2019 12 30。操作系統為Debian 8.9 (jessie)。 以下假設新磁碟為/dev/sdb,要創建一個分區/dev/sdb1,文件系統類型為xfs。請根據實際情況,自行選擇。 使用parted進行分區 1. 安裝parted 1. 使用 查看磁碟/dev/sdb(請使用實際 ...
  • 一.實驗環境準備 需要準備四台Linux操作系統的伺服器,配置參數最好一樣,由於我的虛擬機是之前偽分散式部署而來的,因此我的環境都一致,並且每天虛擬機預設都是Hadoop偽分散式喲!1>.NameNode伺服器(172.20.20.228) 2>.DataNode伺服器(172.20.20.226- ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...