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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...