Linux基礎之文件管理和bash特性

部分文件管理命令,bash的一些基礎特性,部分glob文件匹配示例

文件管理命令:

?cp命令:針對文件內容進行復制,元數據不會復制到目標文件或目錄中

單源復制:cp [OPTION] source destination

  • 若目標文件不存在,則先創建文件在copy
  • 若目標是非目錄文件(目標文件非空),則覆蓋目標文件
  • 若目標是目錄文件,則在目標目錄中創建文件,再復制數據到該文件中
  • 若源是目錄的話,默認復制不會成功,需要附帶選項(-r)

示例:? cp /etc/fstab /tmp/fstab

多源復制:多個文件復制

  • 若目標文件不存在,則不能復制
  • 若目標不是目錄文件,則不能復制
  • 若目標為目錄,則在目錄中創建這幾個文件,并復制相應的數據進文件中

? 常見選項:

  • -i:interactive,進行復制操作之前會提示用戶
  • -f:強制覆蓋目標文件
  • -r:遞歸復制目錄(子目錄也會復制)
  • -d:只復制鏈接本身,鏈接所指向的目標文件不復制,preserve=links
  • -a:復制鏈接本身及所指向的目標文件,包括元數據,presereve=all

mv命令:復制文件至目標文件,然后刪除原文件

? 規則:mv [OPTION] source DEST

? 示例:mv /tmp/zabbix_server.log /var/log/

? 常見選項:

  • -i:interactive
  • -f:強制移動force

rm命令:刪除文件

? 規則:rm [OPTION] FILE

? 示例:rm –rf /tmp/123/1.txt

? 選項:

  • -i:interactive
  • -f:強制刪除
  • -r:recursive,遞歸刪除)(此選項慎用)

cd命令:切換目錄change directory

? 規則:cd /some/dirtectory

? 示例:cd /etc/inittab

pwd命令:顯示當前目錄,內建命令,可直接使用

?

ls命令:顯示指定目錄或文件的內容

? 規則:ls [OPTION] /file/or/directory

? 示例:ls –l /etc/init.d

命令執行狀態返回值:

命令執行結果只有兩種情況:

成功:返回值一定為0

失敗:返回值1-255都有可能

bash使用特殊變量$?來存放最近一次命令執行的返回狀態值,可使用echo $?來得到命令的執行結果狀態

命令行展開:

~展開為root的家目錄

~USERNAME為用戶USERNAME的家目錄

{ }可以承載逗號分隔的列表,并將其展開為多個路徑

示例:touch /{x,y}/{a,b}相當于創建了四個文件/x/a,/x/b,/y/a,/y/b

(1)創建/tmp目錄下的:a_c, a_d, b_c, b_d

touch {a,b}-{c,d}

(2)創建/tmp/mylinux目錄下的:

mylinux/

├── bin

├── boot

│?? └── grub

├── dev

├── etc

│?? ├── rc.d

│?? │?? └── init.d

│?? └── sysconfig

│?????? └── network-scripts

├── lib

│?? └── modules

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

│?? └── local

│?????? ├── bin

│?????? └── sbin

└── var

├── lock

├── log

└── run

touch /tmp/myselinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,prooc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}

文件的元數據:

? ? ? 元數據分類:

  • mode:權限
  • ownership:屬主屬組
  • timestamp:時間戳
  • links:符號連接
  • xattr:擴展屬性
  • context:安全標簽
  • 文件大小

??????元數據查看:

? stat命令可以查看文件的元數據

規則:stat [OPTION] [FILE]

示例:stat –f /etc/fstab(顯示文件所在文件系統的信息而不是文件信息)

? ? ??元數據時間戳修改:

? touch命令可以修改時間戳

?規則:touch [OPTION] FILE

?示例:touch –a /tmp/log/zabbix_server.log(修改文件的存取時間)

? 選項:

  • -a:只更改存取時間
  • -d:使用指定日期時間
  • -m:更改修改時間(modify time)
  • -r:將文件的時間更改為參考值(-reference=FILE)
  • -t:使用指定時間

bash特性之命令別名及命令結果引用:?

? ?命令別名的定義:

命令的定義使用alias命令(只在當前shell進程有效)

? 規則:alias string=’COMMAND [OPTION] [argument]’

? 示例:alias rm=’mv -i’

? ?命令結果引用:

  • $(name):將括號內運行的內容作為變量引用
  • `name`:反引號,與$(name)的用法相似
  • 管道:具有一定的邏輯結構,上一個命令的運行結果作為參數傳遞到下一個命令

bash特性之glob文件匹配:

(1)顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。

ls –ld /var/l*[[:digit:]]lower:]]

(2)顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。

ls –ld /etc/[[:digit:]]*[^[:digit:]]

(3)顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。

ls –ld /etc/[^[:alpha:]][[:alpha:]]*

(4)在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

touch /tmp/tfile-$(date +%Y-%m-%d-%H-%m-%S)

(5)復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

cp –R /etc/p*[^[:digit:]] /tmp/test1

(6)復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。

cp -R /etc/*.d /tmp/test2

(7)復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

cp –R /etc/{l,m,n}*.conf /tmp/mytest3

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91156

(0)
~~
上一篇 2018-01-16 20:20
下一篇 2018-01-17

相關推薦

  • LVM邏輯卷管理器詳解

    一、LVM簡介 LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它由Heinz Mauelshagen在Linux 2.4內核上實現。LVM將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。…

    Linux干貨 2016-09-05
  • 信息論的熵

    1.  前言    熵的概念最早起源于物理學,用于度量一個熱力學系統的無序程度。    在信息論里則叫信息量,即熵是對不確定性的度量。從控制論的角度來看,應叫不確定性。信息論的創始人香農在其著作《通信的數學理論》中提出了建立在概率統計模型上的信息度量。他把信息定義為“用來消除不確定性的東西”。在信息世界,熵越…

    Linux干貨 2016-03-27
  • History,Help——Linux基本命令(6)

    1.     history   當你在玩Linux的時候,如果你經常使用命令行來控制你的Linux系統,那么有效地使用命令歷史機制將會使效率獲得極大提升。 history是shell的內置命令,其內容在系統默認的shell的man手冊中。 一些用法: history[-c] [-d offset] [n] …

    2017-07-15
  • 使用yum源碼編譯安裝程序

    需要的安裝包:httpd-2.2.29.tar.bz2 1、安裝develpment tools     yum groupinstall "Development Tools" 2、下載服務器中的http源安裝包到本地,然后解壓到指定文件夾中 lftp 10.1.0.1:/pub/Sources/…

    Linux干貨 2016-08-24
  • linux掛載的基本使用

    掛載   掛載是指將一個設備(通常是存儲設備)掛接到一個已存在的目錄上。 我們要訪問存儲設備中的文件,必須將文件所在的分區(已有文件系統)掛載到一個已存在的目錄上, 然后通過訪問這個目錄來訪問存儲設備。 掛載條件 1、掛載點必須是一個目錄。 2、一個分區掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內容將隱藏不可用。對于其他…

    Linux干貨 2016-09-07
  • ansible學習筆記之2 ad-hoc篇

    ansible學習筆記之2 ad-hoc篇 ansible學習筆記之2 ad-hoc篇 ansible 學習筆記 ad-hoc ansible學習筆記之2 ad-hoc篇 使用ansible ad-hoc搭建lnmp/lamp 編輯host文件,通過秘鑰認證ssh連接主機 前期環境準備 在lnmp上安裝lnmp 其中 ad-hoc搭建mysql主從 配置文件…

    2016-11-21

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-02-07 10:16

    總結的比較全,最后的例子可以多想幾種方式來處理~

欧美性久久久久