linux基礎命令用法

来源:https://www.cnblogs.com/whych/archive/2018/05/15/9041276.html
-Advertisement-
Play Games

目錄管理 ls、cd、pwd、mkdir、rmdir、tree ls(list) 列出,列表 用法: ls -l:長格式 文件類型: -:普通文件 (f) d: 目錄文件 b: 塊設備文件 (block) c: 字元設備文件 (character) l: 符號鏈接文件(symbolic link f ...


目錄管理

  ls、cd、pwd、mkdir、rmdir、tree

ls(list) 列出,列表  

用法: 

ls
  -l:長格式
    文件類型:
      -:普通文件 (f)
      d: 目錄文件
      b: 塊設備文件 (block)
      c: 字元設備文件 (character)
      l: 符號鏈接文件(symbolic link file)
      p: 命令管道文件(pipe)
      s: 套接字文件(socket)
    文件許可權:9位,每3位一組,每一組:rwx(讀,寫,執行), r--
    文件硬鏈接的次數
    文件的屬主(owner)
    文件的屬組(group)
    文件大小(size),單位是位元組
    時間戳(timestamp):最近一次被修改的時間
    訪問:access
    修改:modify,文件內容發生了改變
    改變:change,metadata,元數據
  -h:做單位轉換
  -a: 顯示以.開頭的隱藏文件
  . 表示當前目錄
  .. 表示父目錄
  -A
  -d: 顯示目錄自身屬性
  -i: index node, inode
  -r: 逆序顯示
  -R: 遞歸(recursive)顯示

cd(change directory)

用法:

cd ~USERNAME:進入指定用戶的家目錄

cd ..:進入父級目錄

cd -:在當前目錄和前一次所在的目錄之間來回切換

cd:進入當前用戶主目錄

 

pwd(Printing Working directory) 

顯示當前路徑

mkdir(make directories)

  -p:創建目錄樹

  -v:顯示創建目錄的信息

  此兩個命令聯合使用最有效。

  mkdir -pv /hehe/heihei/haha

創建多級目錄

  mkdir /test/{x/m,y} 

  mkdir /test/{a,d}_{b,c}

 

rmdir(remove directory)

  -p 若目錄為多級目錄,從最後一個目錄開始刪除。

 

 

 

文件管理

  touch、stat、file、rm、cp、mv

touch(change file timestamps)修改文件時間戳

  -a:修改文件訪問時間

  -m:修改文件修改時間

  -t:使用[[CC]YY]MMDDhhmm[.ss]格式修改文件時間戳

  -c:創建空文件

 

rm(remove)

    移除文件或者目錄

  -i:進行確認提示。(在同時給定了-f和-i選項時,列在最後的生效。)

  -f:忽略不存在的文件,並且從不向用戶提示。

  -r:或者 -R 遞歸地移除目錄樹。

cp(copy)

  -i 與-f選項相反,在覆蓋目標文件之前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。
  -f 覆蓋已經存在的目標文件而不給出提示。
  -p 除複製文件的內容外,還把修改時間和訪問許可權也複製到新文件中。
  -r 若給出的源文件是一個目錄文件,此時將複製該目錄下所有的子目錄和文件。
  -l 建立硬鏈接,而非複製
  -d 複製符號鏈接

 

mv(move)

  移動(改名)文件 

  -t: 指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後。

 

日期時間
date、clock、hwclock、cal

顯示日期的指令: date(顯示系統時間)
hwclock(顯示硬體時間)
-w:系統時間同步到硬體時間
-s:硬體時間同步到系統時間
顯示日曆: cal
計算器: bc

 

查看文本
cat、tac、more、less、head、tail、tee

 cat 連接文件併在標準輸出上輸出

  -n:顯示文本行數

  -E:在每行結束顯示 $

head:查看前n行
tail:查看後n行
  -n
tail -f: 查看文件尾部,不退出,等待顯示後續追加至此文件的新內容;

tee:既顯示輸出內容,又把內容輸入到文件中。

 

文本處理

cut:
  -d: 指定欄位分隔符,預設是空格
  -f: 指定要顯示的欄位
  -f 1,3
  -f 1-3

 

文本排序:sort
  -n:數值排序
  -r: 降序
  -t: 欄位分隔符
  -k: 以哪個欄位為關鍵字進行排序
  -u: 排序後相同的行只顯示一次
  -f: 排序時忽略字元大小寫

uniq: 刪除排序中重覆的行
  -c: 顯示文件中行重覆的次數
  -d: 只顯示重覆的行

文本統計:wc (word count)
  -l:輸出換行符統計數
  -w:輸出單詞統計數

  -c:輸出位元組統計數
  -L:輸出最長的行的長度

字元處理命令:tr —— 轉換或刪除字元
  tr [OPTION]... SET1 [SET2]
  -d: 刪除出現在字元集中的所有字元

 

命令歷史
history 查看
  -c:清空命令歷史
  -d OFFSET [n]: 刪除指定位置的命令
  -w:保存命令歷史至歷史文件中

命令歷史的使用技巧:
!n:執行命令歷史中的第n條命令;
!-n:執行命令歷史中的倒數第n條命令;
!!: 執行上一條命令;
!string:執行命令歷史中最近一個以指定字元串開頭的命令
!$:引用前一個命令的最後一個參數;

 

 用戶與用戶組及其許可權管理

用戶管理

useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

useradd,添加用戶
  -c 描述
  -d 家目錄
  -g 所屬組
  -G 附屬組
  -s 環境變數
  -u uid

例:useradd -c thisisauser -d /home -g whych -G whych -u 2017 -s /sbin/nologin

chage 修改賬號密碼有效期限
  -M 最大天數
  -m 最小天數

userdel 刪除用戶
  -r 同事刪除用戶的家目錄

usermod,修改用戶信息
  -c<備註>:修改用戶帳號的備註文字;
  -d<登入目錄>:修改用戶登入時的目錄;
  -e<有效期限>:修改帳號的有效期限;
  -f<緩衝天數>:修改在密碼過期後多少天即關閉該帳號;
  -g<群組>:修改用戶所屬的群組;
  -G<群組>;修改用戶所屬的附加群組;
  -l<帳號名稱>:修改用戶帳號名稱;
  -L:鎖定用戶密碼,使密碼無效;
  -s<shell>:修改用戶登入後所使用的shell;
  -u<uid>:修改用戶ID;
  -U:解除密碼鎖定。

id:查看用戶的帳號屬性信息
  -u:顯示用戶id
  -g:顯示組id
  -G:顯示附加組
  -n:顯示真實id

finger: 查看用戶帳號信息
finger USERNAME

 

chsh: 修改用戶的預設shell

chfn:修改註釋信息

 

組管理
groupadd, groupdel, groupmod, gpasswd

創建組:groupadd
groupadd
  -g GID
  -r:添加為系統組

groupmod
  -g GID
  -n GRPNAME

groupdel

gpasswd:為組設定密碼


許可權管理
chown, chgrp, chmod, umask

 

chown: 改變文件屬主(只有管理員可以使用此命令)
chown USERNAME file,...
  -R: 修改目錄及其內部文件的屬主
  --reference=/path/to/somefile file,...

chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...

chgrp GRPNAME file,...
  -R:同上

chmod: 修改文件的許可權
chmod +|- MODE file,...
  -R:同上

修改某類用戶或某些類用戶許可權:
u,g,o,a
chmod 用戶類別=MODE file,...

修改某類用戶的某位或某些位許可權:
u,g,o,a
chmod 用戶類別+|-MODE file,...

 

特殊許可權(suid、sgid、sticky)

一個可執行文件, 那麼在執行時, 一般該文件只擁有調用該文件的用戶具有的許可權. 而setuid, setgid 可以來改變這種設置。

setuid: 使文件在執行階段具有文件所有者的許可權。

setgid: 該許可權只對目錄有效. 目錄被設置該位後, 任何用戶在此目錄下創建的文件都具有和該目錄所屬的組相同的組。

sticky bit: 該位可以理解為防刪除位。一個文件是否可以被某用戶刪除, 主要取決於該文件所屬的組是否對該用戶具有寫許可權. 如果沒有寫許可權, 則這個目錄下的所有文件都不能被刪除, 同時也不能添加新的文件. 如果希望用戶能夠添加文件但同時不能刪除文件, 則可以對文件使用sticky bit位. 設置該位後, 就算用戶對目錄具有寫許可權, 也不能刪除該文件。

換種理解方法如下:

SUID:運行某程式時,相應進程的屬主是程式文件本身的屬主,而不是啟動者。
SGID:運行某程式時,相應進程的屬組是程式文件本身的屬組,而不是啟動者。
Sticky:在一個公共目錄,每個都可以創建文件,刪除,而其它人不能。

操作:
chmod u+s file — 為file加上setuid標誌. (setuid 只對文件有效)
如果file本身有執行許可權,則s顯示小寫,否則大寫。

chmod g+s file — 為file目錄加上setgid標誌 (setgid 只對目錄有效)
如果file本身有執行許可權,則s顯示小寫,否則大寫。

chmod o+t file — 為file文件加上sticky標誌 (sticky只對文件有效)
如果file本身有執行許可權,則t顯示小寫,否則大寫。


許可權位:SUID(4),SGID(2),STICKY(1)
000:

001:只有sticky

. . .:
111:suid+sgid+sticky(6)

chmod 3755 /tmp/test 此處是4位許可權位。3就代表是sgid+sticky
所以經常看到的umask總是四位
umask 0022

文件預設不能具有執行許可權,如果算得的結果中有執行許可權,則將其許可權+1

umask 022

預設創建文件和目錄的許可權就是:
文件:666-022
目錄:777-022

 

facl (filesystem access control list)

可以針對單一用戶、單一文件或者目錄來進行rwx的許可權控制。如某一個文件,不讓單一的某個用戶訪問。


setfacl :設置某個文件/目錄的ACL設置項目
  -m:設置後續acl參數 

  -x:刪除
  -R:遞歸設置

getfacl:
取得某個文件/目錄的ACL設置項目

 

 

文件查找
locate
非實時,模糊匹配,查找是根據全系統文件數據進行的。
速度快

find
實時,精確,支持眾多查找標準
遍歷指定目錄中的所有文件完成查找,速度慢。


-name 'FILENAME':對文件名作精確匹配
文件名通配:
*:任意長度的任意字元
?
[]
-iname 'FILENAME': 文件名匹配時不區分大小寫
-regex PATTERN:基於正則表達式進行文件名匹配

-user USERNAME: 根據屬主查找
-group GROUPNAME: 根據屬組查找

-uid UID: 根據UID查找
-gid GID: 根據GID查找

-nouser:查找沒有屬主的文件
-nogroup: 查找沒有屬組的文件

-type
f:普通文件
d:目錄
c:特殊字元文件
b:特殊塊文件
l:符號鏈接
s:套接字

-size [+|-]
k
M
G

精確匹配:
-perm MODE
-MODE:任意以為匹配即滿足條件
/MODE:文件許可權能完全包含次MODE時才符合條件
find / -perm /222

組合條件
-a:and
-o:or
-not:

-mtime n 查找系統中最後n*24小時數據修改的文件
-ctime n 查找系統中最後n*24小時狀態被改變的文件
-atime n 查找系統中最後n*24小時訪問的文件


-mmin n 查找系統中最後n分鐘數據修改的文件
-cmin n
-amin n

 

xargs與-exec

xargs命令可以通過管道接受字元串,並將接收到的字元串通過空格分割成許多參數(預設情況下是通過空格分割) 然後將參數傳遞給其後面的命令,作為後面命令的命令行參數。

# find  . -name test11.txt | xargs rm

-exec rm {} \;:{} 表示命令的參數即為所找到的文件,以;表示comman命令的結束。\是轉義符。

# find  . -name test222.txt -exec rm {} \; 對每個匹配的文件執行一個單獨的rm操作

 

登錄信息命令

  w,who,last,lastb,lastlog

終端:
pty #:物理終端
tty #:虛擬終端
ttys #:串列終端
pts #:偽終端

w:顯示已經登錄的用戶以及他們在做什麼
who:顯示已經登錄的用戶
last:顯示 /var/log/wtmp文件用戶登錄歷史及系統啟動歷史
  -n #:顯示最近#次的歷史

lastb:顯示/var/log/btmp文件,顯示用戶錯誤的登錄嘗試
  -n #:顯示最近#次的歷史
lastlog:顯示每一個用戶最近一次的成功登錄信息
  -u USERNAME:顯示特定用戶最近的登錄信息

basename:
$0:執行腳本時的腳本路徑及名稱

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、概括 1.通常創建一個對象的方法如圖: 通過 Student tom = new Student(); 創建tom對象,這種創建實例的形式被稱為構造方法。 簡述:用來初始化對象的,為類的成員賦值。 2.構造方法特點 a.方法名與類名相同; b.沒有返回值類型; c.必須要通過new的形式調用; ...
  • Linux桌面發行版 UbuntuCentOSRed heat LinuxOracle Linux 一、系統安裝 1、系統分區 若手動分區swap和根分區必須創建,推薦創建boot分區。 / 根目錄,唯一必須掛載的目錄。(在絕大多數情況下有2G的容量應該是夠用了。當然了,很多東西都是多多益善的)sw ...
  • 下載軟體包: 首先需要安裝apr和apr-util 安裝apr-util: ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr sudo make sudo make install 這兩個必不可少,如果缺少其他的依賴 ...
  • 在上一篇在Docker中體驗資料庫之Mongodb之後,這次記錄一下在docker中安裝mysql。過程要比Mongodb麻煩一點…… 參考網址: https://dev.mysql.com/doc/refman/5.7/en/linux-installation-docker.html https ...
  • 寫在前面 Rocketmq採用apache rockemq 4.2.0release版本。 源碼路徑(http://mirrors.shu.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip) 場景 這裡採用兩台Ubu ...
  • 1.查看系統環境 2.安裝軟體包和Apache SVN模塊 3. 驗證安裝 4.驗證Apache SVN模塊是否安裝成功,需要檢查mod_dav_svn.so和mod_authz_svn.so 5. 使用svnadmin命令創建SVN倉庫repos 6.修改repos目錄屬主和屬組 7. 複製/va ...
  • Grub(GRand Unified Bootloader),統一資源引導器,它的工作是提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,然後解壓、展開,而後把系統控制權移交給內核。 Grub目前有兩個版本: 1、GRUB 0.X:Grub Lega ...
  • 用Linux已經有很長一段時間,但主要用於嵌入式開發(用交叉工具鏈進行版本編譯),所以用命令行就可以了,而且敲的最多的命令就是make。最近開始搭建TensorFlow的開發環境,大部分工作都是命令行完成,再加上TensorBoard可以實現web化展示,所以團隊共用一臺機器SSH接入就可以了。但是 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...