常見文件管理命令及bash特性

cat:查看文件文本內容

 -n:顯示行號
 [root@study ~]# cat -n /etc/passwd
 1  root:x:0:0:root:/root:/bin/bash
 2  bin:x:1:1:bin:/bin:/sbin/nologin
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin
 5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 6  sync:x:5:0:sync:/sbin:/bin/sync
 7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 8  halt:x:7:0:halt:/sbin:/sbin/halt
 9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

cat還可以結合管道命令,把一段內容寫到指定文件,多用于腳本

 [root@study ~]# cat > test <<EOF
 > hello
 > world
 > EOF
 [root@study ~]# cat test 
 hello
 world

more:查看文本內容,空格往后跳轉,b往前跳轉,但是跳至末端后,不能再往前跳轉

less:與more相似,但跳至末端后,還能往前跳轉

head:顯示文件的頭幾行

[root@study ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail:顯示文件的末尾幾行

[root@study ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
kang:x:1000:1000:kang:/home/kang:/bin/bash

其中tail還有一個很重要的參數f,能持續輸出文件的末行。一般用于查看日志排錯等。

mkdir:創建目錄

mkdir -p 遞歸創建新目錄
[root@study ~]# ll
total 12
-rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
-rw-r--r--. 1 root root   17 Nov  3 01:54 test
-rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 例如在當前目錄下創建目錄/x/y/z
[root@study ~]# mkdir -p x/y/z
[root@study ~]# tree x
x
└── y
    └── z
mkdir -m 可以在創建目錄時指定目錄權限,例如
[root@study ~]# mkdir -m 644 z
drw-r--r--. 2 root root    6 Nov  7 02:44 z

rmdir:刪除目錄

cp:復制文件

 -r:遞歸復制文件
 -f:強制復制,一般用于覆蓋已有文件

mv:移動文件,類似于剪切。在linux中也常用作改名字

[root@study ~]# ll
total 12
 -rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
 -rw-r--r--. 1 root root   17 Nov  3 01:54 test
 -rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 drwxr-xr-x. 3 root root   14 Nov  7 02:52 x
 drw-r--r--. 3 root root   14 Nov  7 02:52 z
將z移到x目錄下
[root@study ~]# mv z x
[root@study ~]# tree -L 1 x
x
├── y
└── z
把x改名為y
[root@study ~]# mv x y
[root@study ~]# ll
total 12
 -rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
 -rw-r--r--. 1 root root   17 Nov  3 01:54 test
 -rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 drwxr-xr-x. 4 root root   22 Nov  7 02:56 y

rm:刪除文件,rm是Linux文件管理里面非常危險的一條的命令,如果刪除了一個文件將無法恢復。尤其是在腳本中使用該命令時必須再三確認。例如rm -fr ./* 該命令是刪除當前目錄下所有文件,如果忘了加.,就會變成刪除根目錄。

-r:遞歸刪除文件
-f:強制刪除,不需要交互
[root@study ~]# rm -rf y 該命令會將上面創建的y目錄及其子目錄刪除。

bash:一般用echo $?查看命令查看命令狀態返回值,0為執行成功,1~255為執行失敗。個人理解可用于腳本條件判斷,同時可通過指定錯誤返回值,得知錯誤原因。

[root@study ~]# mkdir x
[root@study ~]# echo $? 
0
[root@study ~]# ll
total 12
 -rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
 -rw-r--r--. 1 root root   17 Nov  3 01:54 test
 -rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 drwxr-xr-x. 2 root root    6 Nov  7 03:14 x
 由上例可以看出狀態返回值為0,x目錄成功創建。如果刪除一個不存在的目錄y
[root@study ~]# rm y
rm: cannot remove ‘y’: No such file or directory
[root@study ~]# echo $?
1

習題

1.請使用命令行展開功能來完成以下練習:
(1)創建/tmp目錄下的:ac, ad, bc, bd

[root@study tmp]# mkdir -pv /tmp/{a_c,a_d,b_c,b_d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_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
[root@study ~]# mkdir -pv /tmp/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}}  

[root@study ~]# tree /tmp/mylinux/
/tmp/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

(3)4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

[root@study ~]# stat x
File: ‘x’
Size: 6               Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 67551725    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-11-07 03:14:10.716034498 +0800
Modify: 2016-11-07 03:14:10.716034498 +0800
Change: 2016-11-07 03:14:10.716034498 +0800
Birth: -

修改時間戳命令:stat。

 -a     change only the access time
 -m     change only the modification time
 -t     use [[CC]YY]MMDDhhmm[.ss] instead of current time
 修改上述x的時間戳
 [root@study ~]# stat x
 File: ‘x’
 Size: 6               Blocks: 0          IO Block: 4096   directory
 Device: fd00h/64768d    Inode: 67551725    Links: 2
 Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Context: unconfined_u:object_r:admin_home_t:s0
 Access: 2015-11-06 18:42:30.000000000 +0800
 Modify: 2015-11-06 18:42:30.000000000 +0800
 Change: 2016-11-07 03:36:10.077054798 +0800
 Birth: -
 上例可以看出,用stat指定時間戳不能修改ctime,可以用-m參數修改
 [root@study ~]# touch -m 1511061842.30 x
 [root@study ~]# stat x
 File: ‘x’
 Size: 6               Blocks: 0          IO Block: 4096   directory
 Device: fd00h/64768d    Inode: 67551725    Links: 2
 Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Context: unconfined_u:object_r:admin_home_t:s0
 Access: 2015-11-06 18:42:30.000000000 +0800
 Modify: 2016-11-07 03:38:52.620057299 +0800
 Change: 2016-11-07 03:38:52.620057299 +0800
 Birth: -

touch也可新建一個不存在的文件。

(4)如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?

[root@study ~]# alias clear=cls 此時cls可以作為清屏命令

使用管道可以引用另一個命令的執行結果

[root@study ~]# top|grep Mem
KiB Mem :  1001360 total,   739256 free,   119120 used,   142984 buff/cache

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

[root@study ~]# ls -ld /var/l*[0-9]*[a-z]
drwxr-xr-x. 2 root root 6 Nov  7 03:50 /var/lda34a

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

[root@study ~]# ls -ld /etc/[0-9]*[^0-9]
drwxr-xr-x. 2 root root 6 Nov  7 03:53 /etc/1adb

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

[root@study ~]# ls -ld /etc/[^a-z][a-z]*
drwxr-xr-x. 2 root root 6 Nov  7 03:53 /etc/1adb

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

[root@study etc]# mkdir -pv /etc/tfile`date +%F-%H-%M-%S`
mkdir: created directory ‘/etc/tfile2016-11-07-04-08-18’

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

[root@study etc]# cp /etc/p*[^0-9] /tmp/mytest1
cp: omitting directory ‘/etc/pam.d’
cp: omitting directory ‘/etc/pki’
cp: omitting directory ‘/etc/plymouth’
cp: omitting directory ‘/etc/pm’
cp: omitting directory ‘/etc/popt.d’
cp: omitting directory ‘/etc/postfix’
cp: omitting directory ‘/etc/ppp’
cp: omitting directory ‘/etc/prelink.conf.d’
cp: omitting directory ‘/etc/profile.d’
cp: omitting directory ‘/etc/python’

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

[root@study ~]# cp /etc/*.d /tmp/mytest2
cp: omitting directory ‘/etc/bash_completion.d’
cp: omitting directory ‘/etc/binfmt.d’
cp: omitting directory ‘/etc/chkconfig.d’
cp: omitting directory ‘/etc/cron.d’
cp: omitting directory ‘/etc/depmod.d’
cp: omitting directory ‘/etc/dnsmasq.d’
cp: omitting directory ‘/etc/dracut.conf.d’
cp: omitting directory ‘/etc/grub.d’
……

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

[root@study ~]# cp /etc/[lmp]*.conf /tmp/test3/
[root@study ~]# ll /tmp/test3/
total 32
 -rw-r--r--. 1 root root   28 Nov  7 04:16 ld.so.conf
 -rw-r-----. 1 root root  191 Nov  7 04:16 libaudit.conf
 -rw-r--r--. 1 root root 2391 Nov  7 04:16 libuser.conf
 -rw-r--r--. 1 root root   19 Nov  7 04:16 locale.conf
 -rw-r--r--. 1 root root  662 Nov  7 04:16 logrotate.conf
 -rw-r--r--. 1 root root 5171 Nov  7 04:16 man_db.conf
 -rw-r--r--. 1 root root  936 Nov  7 04:16 mke2fs.conf

原創文章,作者:N24_小康,如若轉載,請注明出處:http://www.www58058.com/58002

(0)
N24_小康N24_小康
上一篇 2016-11-06
下一篇 2016-11-06

相關推薦

  • Lua簡明教程

    這幾天系統地學習了一下Lua這個腳本語言,Lua腳本是一個很輕量級的腳本,也是號稱性能最高的腳本,用在很多需要性能的地方,比如:游戲腳本,nginx,wireshark的腳本,當你把他的源碼下下來編譯后,你會發現解釋器居然不到200k,這是多么地變態?。?bin/sh都要1M,MacOS平臺),而且能和C語言非常好的互動。我很好奇得瀏覽了一下Lua解釋器的源…

    Linux干貨 2016-08-15
  • 關于shell腳本基礎第二篇

                          shell腳本編程基礎第二篇 read命令 使用read來把輸入的值非配給一個或者多個shell變量,可以提示用戶輸入一些參數等,此時我們可以使用read命令來完成此功能 re…

    系統運維 2016-08-19
  • lamp平臺 php解析器基于模塊和php-fpm

    首先,我先介紹一下實驗環境: http服務器:192.168.236.128(php解析器基于modules) mysql服務器:192.168.236.129 編譯和配置http服務器,http版本是2.4以上的。 由于http依賴于apr apr-util這兩個包,但是我們系統上的rpm包版本比較低,我們也需要下載這兩個源碼包來編譯,解決依賴關系。 還要…

    Linux干貨 2015-08-31
  • Hadoop Hive sql語法詳解

    Hive 是基于Hadoop 構建的一套數據倉庫分析系統,它提供了豐富的SQL查詢方式來分析存儲在Hadoop 分布式文件系統中的數據,可以將結構 化的數據文件映射為一張數據庫表,并提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行,通過自己的SQL 去查詢分析需 要的內容,這套SQL 簡稱Hive SQL,使不熟悉mapredu…

    Linux干貨 2015-04-13
  • Dell R720 安裝debian系統編譯網卡驅動

    最近比較忙,視頻也沒怎么看,下面是之前工作中遇到的問題,事后做的記錄,中間解決過程參考了網上的相關資料,現在一并貼出來。 需求:Dell R720 安裝debian系統 環境 硬件:Dell R720  軟件:系統有debian 7.0.0和debian 6.0.10 1. debian 7.0.0 : 集成了DELL PCRE H710 Mini…

    Linux干貨 2015-08-04
  • 誰寫了Linux

    2009年8月,Linux軟件基金會發布了一份叫《Who Writes Linux and Who Supports It》(PDF)的報告。這份報告主要對Linux 2.6.x的開發進行了全方位的統計。看了以后才知道,原來Linux的開發的生產率竟是這樣的驚人,而且相當的的令人振奮,所以,在第一時間轉過來給大家看看。讓人不得不驚嘆,這不可思議的具有非凡活力…

    Linux干貨 2015-04-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-10 19:46

    總結的比較還是比較詳細的,繼續加油~

欧美性久久久久