常用的shell命令,[Linux]工作中常用的Unix命令

 2023-10-12 阅读 31 评论 0

摘要:? ? ? ? ? ? ? ? ? ? ? ? ? Linux命令工作實際筆記 ? 一、查看磁盤文件大小:?? du [-abcDhHklmsSx] [-L <符號連接>][-X <文件>][--block-size][--exclude=<目錄或文件>] [--max-depth=<目錄層數>][--help][--version][目錄或文件] 常

? ? ? ? ? ? ? ? ? ? ? ? ? Linux命令工作實際筆記

?

一、查看磁盤文件大小:??

du [-abcDhHklmsSx] [-L <符號連接>][-X <文件>][--block-size][--exclude=<目錄或文件>] [--max-depth=<目錄層數>][--help][--version][目錄或文件]
常用參數:
-a或-all? 為每個指定文件顯示磁盤使用情況,或者為目錄中每個文件顯示各自磁盤使用情況。
-b或-bytes 顯示目錄或文件大小時,以byte為單位。
-c或–total 除了顯示目錄或文件的大小外,同時也顯示所有目錄或文件的總和。
-D或–dereference-args 顯示指定符號連接的源文件大小。
-h或–human-readable 以K,M,G為單位,提高信息的可讀性。
-H或–si 與-h參數相同,但是K,M,G是以1000為換算單位,而不是以1024為換算單位。
-k或–kilobytes 以1024 bytes為單位。
-l或–count-links 重復計算硬件連接的文件。
-L<符號連接>或–dereference<符號連接> 顯示選項中所指定符號連接的源文件大小。
-m或–megabytes 以1MB為單位。
-s或–summarize 僅顯示總計,即當前目錄的大小。
-S–separate-dirs 顯示每個目錄的大小時,并不含其子目錄的大小。
-x或–one-file-xystem 以一開始處理時的文件系統為準,若遇上其它不同的文件系統目錄則略過。
-X<文件>或–exclude-from=<文件> 在<文件>指定目錄或文件。
–exclude=<目錄或文件> 略過指定的目錄或文件。
–max-depth=<目錄層數> 超過指定層數的目錄后,予以忽略。
–help 顯示幫助。
–version 顯示版本信息。
linux中的du命令使用示例:

  1. 1> 要顯示一個目錄樹及其每個子樹的磁盤使用情況

du /home/linux
這在/home/linux目錄及其每個子目錄中顯示了磁盤塊數。

  1. 2> 要通過以1024字節為單位顯示一個目錄樹及其每個子樹的磁盤使用情況

du -k /home/linux
這在/home/linux目錄及其每個子目錄中顯示了 1024 字節磁盤塊數。

  1. 3> 以MB為單位顯示一個目錄樹及其每個子樹的磁盤使用情況

du -m /home/linux
這在/home/linux目錄及其每個子目錄中顯示了 MB 磁盤塊數。

  1. 4> 以GB為單位顯示一個目錄樹及其每個子樹的磁盤使用情況

du -g /home/linux
這在/home/linux目錄及其每個子目錄中顯示了 GB 磁盤塊數。

  1. 5>查看當前目錄下所有目錄以及子目錄的大小:du -h .

“.”代表當前目錄下。也可以換成一個明確的路徑
-h表示用K、M、G的人性化形式顯示

  1. 6>查看當前目錄下user目錄的大小,并不想看其他目錄以及其子目錄:

du -sh user
-s表示總結的意思,即只列出一個總結的值
du -h –max-depth=0 user
–max-depth=n表示只深入到第n層目錄,此處設置為0,即表示不深入到子目錄。

  1. 7>列出user目錄及其子目錄下所有目錄和文件的大小:

du -ah user
-a表示包括目錄和文件

  1. 8>列出當前目錄中的目錄名不包括xyz字符串的目錄的大小:

du -h –exclude=’*xyz*’

  1. 9>想在一個屏幕下列出更多的關于user目錄及子目錄大小的信息:

du -0h user
-0(杠零)表示每列出一個目錄的信息,不換行,而是直接輸出下一個目錄的信息。

  1. 10>只顯示一個目錄樹的全部磁盤使用情況

?

二、進行管理:

? ? ? ?ps??? 查看進程??? kill

? ? ? ?查看提交到服務器任務? bjobs [-a]???? bkill + 任務號

?

? ? ? ?chmod -R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更)

?

?

? ? ? ?env??? :? 查看當前所有的環境變量設定

?

三、批量處理文件

? ? ? ?sed -i ‘指令1 ’-I ‘指令2’? 文件名

? ? ? ?如: sed? -i ‘1,$s/a/b/g’ *.*???? 將該目錄下如有文件中的a替換為b

?

四、拆分文件

? head? -n <n> filename > newname

? 如果文件過大,可以通過這種方式取前n行將文件拆分出新文件。

? head –n 5 file? 查看文件前5行

? tail –n 5 file??? 查看文件后5行

?

五、FTP

連接不同ip地址的帳號

例,ftp 10.19.128.1

?? 輸入userid and password

?put? file 直接將當前的帳號下的file傳到指定帳號,如果想傳文件夾,必須要打包

?get file 直接get數據。

圖形界面:gftp

workstation 看excel

  1. Module load OpenOffice
  2. Soffice AGC_BRG.xls &

六、計時執行

sleep n; a

n秒后執行命令a

七、批量重命名

將 AAA* 的文件名修改為 DDD*, 使用下面的命令

rename AAA DDD *

?

八、常用快捷鍵

Ctrl+D:可以在終端下運行wc命令,然后再胡亂輸入一些字符,再按Ctrl+D就會出現相應效果,也可以退出登陸(只限命令模式下)

Ctrl+Z:可掛起任意前臺進程,需要恢復被掛起進程可使用fg來恢復被掛起的進程 bg去掉入后臺執行

Ctrl+S:可以鎖住屏幕,但操作還在進行的

九、Linux的bg和fg命令

我們都知道,在 Windows 上面,我們要么讓一個程序作為服務在后臺一直運行,要么停止這個服務。而不能讓程序在前臺后臺之間切換。而 Linux 提供了 fg 和 bg 命令,讓我們輕松調度正在運行的任務。

假設你發現前臺運行的一個程序需要很長的時間,但是需要干其他的事情,你就可以用 Ctrl-Z ,掛起這個程序,然后可以看到系統提示(方括號中的是作業號):

[1]+ Stopped /root/bin/rsync.sh

然后我們可以把程序調度到后臺執行:(bg 后面的數字為作業號)

#bg 1
[1]+ /root/bin/rsync.sh &

用 jobs 命令查看正在運行的任務:

#jobs
[1]+ Running /root/bin/rsync.sh &

如果想把它調回到前臺運行,可以用

#fg 1
/root/bin/rsync.sh

這樣,你在控制臺上就只能等待這個任務完成了。

fg、bg、jobs、&、ctrl + z都是跟系統任務有關的,雖然現在基本上不怎么需要用到這些命令,但學會了也是很實用的
一。& 最經常被用到
這個用在一個命令的最后,可以把這個命令放到后臺執行
二。ctrl + z
可以將一個正在前臺執行的命令放到后臺,并且暫停
三。jobs
查看當前有多少在后臺運行的命令
四。fg
將后臺中的命令調至前臺繼續運行
如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執行的命令的序號(不是pid)
五。bg
將一個在后臺暫停的命令,變成繼續執行
如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執行的命令的序號(不是pid)

也可以用kill %jobnumber kill掉這些進程 option -9 強制kill


who (? 查看系統中的使用者 )

  1. 若在自己 student1 的環境下 (? 或某一視窗 ) ?進入student2 的帳號,可以用 “cad1% su? student2”,(? 在 Solarils 版本則要下 “su –? student2” )。su 為switch user 之意。當然,系統會再問一次密碼。
  2. 可用 “cad1% whoami”? 或 “cad1%who am I”? 查看目前到底是誰在用這部電腦。
  3. 切換 user 後,必須依原先 switch 的順序“反向”exist回來,不可以直接關掉視窗或 logout 出系統,這會使得一些 user 還留在機器裡面。
  4. 若想 “? 查看目前所有 local 工作站的使用者 ”,可用 “cad1% rusers”。“r”? 是 remote 的意思。

?

?

mv (? 檔案移動或重命名 )

mv file1 file2

file1 是檔案原有的名字,file2 是檔案後來的名字。

  • mv ex1.sp ex2.sp????? 將檔案 ex1.sp 重新命名成 ex2.sp
  • mv ex1.sp ../ex1.bak?? 將檔案 ex1.sp 重新命名成 ex1.bak,而且移到上一層

?

?

clear (? 清除螢目 )

?

?

man (? 指令之線上參考 )

man command

?

?

history? ?

查看歷史操作,可能是比較重要的,個人感覺不太全

?

find

Find是一個非常有效的工具,它可以遍歷當前目錄甚至于整個文件系統來查找某些文件或目錄.

一般find ./ -name xxx.xx 就OK了,自遞進去搜索
主要選項:
-name 按照文件名查找文件
-perm 按照文件權限來查找文件
-prune 不在當前指定的目錄中查找
-user 按照文件屬主來查找文件
-group 按照文件所屬的組來查找文件
-mtime -n +n 按照文件的更改時間來查找文件,-n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前.
-nogroup 查找無有效所屬組的文件,即該文件所屬的組不存在
-nouser 查找無有效屬主的文件
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件
-type 查找某一類型的文件
[ 文件類型:
b 塊設備文件
d 目錄
c 字符設備文件
p 管道文件
l 符號鏈接文件
f 普通文件
]
-size n[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計
-depth 在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找
-mount 在查找文件時不跨越文件系統mount點
-follow 如果find命令遇到符號鏈接文件,就跟蹤到鏈接所指向的文件
-cpio 對匹配的文件使用cpio命令,就將這些文件備份到磁盤設備中
(其余選項,請man find,進一步查看)
對find命令選項的一些例子:
? $ find /etc -type d #在/ e t c目錄下查找所有的目錄
? $ find /etc -user yaoyuan #在/etc目錄下查找文件屬主為yaoyuan的文件
? $ find . -size +1000000c #在當前目錄下查找文件長度大于1 M字節的文件
whereis命令會在指定的目錄中查找符合條件的文件,文件應的屬性應屬于原始代碼,二進制文件,或是幫助文件.
選項:
-b 只查找二進制文件
-B 只在設置的目錄下查找二進制文件
-f 不顯示文件名前的路徑名稱
-m 只查找說明文件
-M 只在設置的目錄下查找說明文件
-s 只查找原始代碼文件
-S 只在設置的目錄下查找原始代碼文件
-u 查找不包含指定類型的文件
whereis例子
$ whereis mysql
mysql: /usr/bin/mysql /etc/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
locate命令用于查找符合條件的文件,它會去保存文件與目錄名稱的數據庫內,查找符合條件的文件或目錄
選項:
-u 建立數據庫,由根目錄開始
-U 建立數據庫,可以指定開始的位置
-e 將排除在尋找的范圍之外
-f 將特定的檔案系統排除在外
-q 安靜模式,不會顯示任何錯誤訊息
-n 至多顯示n個輸出
-r 使用正規運算式 做尋找的條件
-o 指定數據庫存的名稱
-d 指定數據庫的路徑
-h 顯示輔助訊息
-v 顯示更多的訊息
-V 顯示程序的版本訊息
(locate命令可以在搜尋數據庫時快速找到檔案,數據庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令在搜尋數據庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)
  locate指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的數據庫內,尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如"*"或"?"等)來指定范本樣式,如指定范本為kcpa*ner, locate會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄錄名稱為kcpa_ner則會列出該目錄下包括子目錄在內的所有檔案。 )

alias (? 定義別名 )

alias new_command 'old_command'

  1. alias dir 'ls -l'? 將命令 "ls - l"? 定義別名為 dir。
  2. 可用 “unalias”? 來刪除定義? unalias dir
  3. unalias 為刪除所有別名之設定
  4. 一般會將要 alias 的指令放在 .cshrc 這個檔裡,以便一 login 便可享受到 alias 的好處。

?

?

mkdir (? 建立新的目錄 )

mkdir directory-name

?

?

diff (? 比較檔案或目錄之內容)

diff [-r] name1 name2

name1 name2? 可同時為檔名,或目錄名稱。“-r” 為 recursive 之意

  • diff file1 file2? 比較檔案 file1 與 file2 內,各行之不同處
  • diff -r dir1 dir2 比較目錄 dir1 與 dir2 內,各檔案之不同處。

?

?

set var (? 設定變數 )

set var = value

var 為變數名稱,value 為值。

  1. 可用 “unset var”? 來解除設定。

?

?

!! (? 執行用過之指令 )

  • !!???? 執行前一個剛執行過命令
  • !12?? 執行第 12 個命令
  • !c??? 執行前面以 c 為起始字元之命令,有可能是 “cd”? 也可能是 “cat”

基本命令

ls

ls [-atFlgR] [name]

  • -a???? 列出包含以 “.”? 起始的隱藏檔的所有 (all)? 檔案與目錄
  • -t???? 依照檔案最後修改時間 (time)? 之順序,依序列出所有檔案與目錄。
  • -F??? 列出目前目錄下之所有檔案與目錄及其類型。
  • -l???? 列出目錄下所有檔案之許可權 (Privilege)、擁有者 (Owner)、檔案大? 小 (Size)、修改時間 (Revise date)? 及名稱。
  • -lg??? 同上,並顯示出檔案之擁有者群組 (Group)? 名稱。
  • -R??? 以遞迴 (Recursive)? 方式顯示出目錄下,以及其所有子目錄之檔案。
  1. Unix 之 File system 內以 “.”? 為開始的“檔案”都是隱藏檔,大多也是環境檔。
  2. “?” , “*”? 為 Unix 的 Wild card (? 萬用字元 ),“?”? 代表檔案名稱中之單一字元。“*”? 代表檔案名稱中之一字串。
  3. ls test [0-5]? 會列出 test0, test1, ..., test5 的集合。

?

?

cd

cd? [path_name]

  • cd? dir1??? ??跳至 dir1 之目錄位置下。
  • cd? 或 cd ~?? 跳回使用者 login 時的 home directory (? 家目錄 )。
  • cd ~student2?? 跳至使用者 student2 的 home directory。
  • cd? ..??????? 跳至目前目錄的上層 (parent directory)
  1. “.”? 一點,表目前的工作目錄 (current working di-rect-ory)。
  2. “..”? 二點,表目前目錄的上一層目錄 (parent of working directory)。
  3. “~student2”? 使用者 student2 login 時的 home direc-tory。

?

?

cp

cp [-r] source destination?

  • cp file1 file2 ???將檔案 file1? 拷備到 file2(直接覆蓋)。
  • cp file1 dir1??? 將檔案 file1?? 拷備到目錄 dir1? 下,檔名仍為 file1。
  • cp -r dir1 dir2?? 拷備整個目錄。
  1. “-r”? 這個 option 是 recursive 的意思,用來拷備 directory 用。

?

?

rm (? 刪除檔案 )

rm? [-r ] filename

  1. “-r”? 是 Recursive 的意思,用來 remove directory 用的。
  2. 若用 “rm –i” (interactive, inquiry)? 則在真正 remove檔案前,會再問一次 yes or no。
  3. 刪除目錄的另一個指令為:“rmdir dir1”,但 dir1 下必須沒有檔案存在,否則會出現無法刪除的訊息。

?

?

chmod (? 檔案或目錄權限之設定 )

chmod [-R] mode name

  • chmod o+x file1? 使 other 可以執行檔案 file1。“+”是加上存取權
  • chmod ug-r file1? 使 user 及 group 不可以 read 檔案 file1。“-”? 是拿掉存取權之意
  • chmod a+r file1? 使所有人 (a:all)? 都可以 read 檔案 file1。
  • chmod u=r file1? 使只有 user 可以 read 檔案 file1。“=”? 是? 設定存取權給usser, group, other,或 all 之意
  • 針對擁有者又分為“使用者” (u:user),“群體” (g:group),“其它”(o:other)。

?

cat,more

cat 為 concatenate (? 連續 )? 的縮寫,表以連續顯示方式,查看

檔名 filename 之內容。more 則是以分頁的方式,查看檔名? file-

name 之內容。

cat filename 或 more filename

  1. 執行 more 指令時:按 Spacebar 為顯示下一個螢幕,按 Return? 為顯示下一行,按 “5b”? 為往回顯示五個螢幕,按 “q”? 為結束,按 “/string”? 為搜尋 “string” 這個字串
  2. cat 指令也可以用來 join 兩個檔案,如下之指令會把 filename2 的內容加到 filename1 上後存到 filename3。 cad1% cat filename1 filename2 filename3(直接覆蓋,若想加到后面,目標文件名前加”>>”)

?

?

grep (? 找尋字串所屬檔案 )

grep string filename

string 為所要找的字串,filename 為所要找的檔案 (? 可以有很多個 )。

grep正則表達式:

?

常用的shell命令。?

?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/141972.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息