Linux基礎 & bash相關

Q1:Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。

  • 文件管理類命令:

cd, ls, touch, cp, mv, rm, cat, tac, more, less, tail, head;

  • 詳細介紹以上命令:

cd:

在Linux文件系統上,可以使用切換目錄命令cd將shell會話切換到另一個目錄。

命令格式:

~]# cd DESTINATION

DESTINATION參數可以用可以用兩種方式表示:一種是使用絕對文件路徑,另一種是使用相對文件路徑。

示例:

絕對路徑:
[root@radio_freshman /]# cd /test/bash/
[root@radio_freshman bash]# pwd
/test/bash
相對路徑:
[root@radio_freshman bash]# cd ../../tmp/
[root@radio_freshman tmp]# pwd
/tmp

ls:

ls命令最基本的形式會顯示當前目錄下的文件和目錄。

命令格式:

~]# ls

參數:

-a:顯示包括隱藏在內的,全部的文件和目錄顯示出來;
-l:產生長列表格式輸出,包含了目錄中每個文件的更多相關信息;
-F:在目錄名后面加了正斜線(/);
-R:遞歸選項,列出了當前目錄下包含子目錄中的文件;

示例:

[root@radio_freshman radio]# ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  test
#文件前面有(.)就是隱藏的文件;
[root@radio_freshman test]# ls -l
總用量 56
drwxr-xr-x. 2 root root    6 11月  4 16:03 abc
drwxr-xr-x. 2 root root   21 11月  3 10:31 bash
-rw-r--r--. 1 root root   28 11月  4 15:20 catfile
-rwxr--r--. 1 root root  187 10月 30 18:50 class_exrecise.sh
-rw-r--r--. 1 root root  485 11月  1 00:02 fstable
-rw-r--r--. 1 root root  481 10月 31 22:54 fstable.new
-rw-r--r--. 1 root root   46 10月 31 21:51 fstable.patch
-rw-r--r--. 1 root root  553 11月  5 18:40 group
-rw-r--r--. 1 root root 7507 11月  4 17:01 lastfile
-rw-r--r--. 1 root root 2233 11月  5 11:40 lastfile2
-rw-r--r--. 1 root root  428 11月  5 10:37 man.config
-rwxr--r--. 1 root root  100 10月 30 18:37 myfirst.sh
-rw-r--r--. 1 root root 1160 11月  4 17:09 passwd
-rwxr-xr-x. 1 root root  683 11月  5 10:28 regular_express.txt
-rw-r--r--. 1 root root 3232 11月  4 23:00 rsyslog.conf
-rw-r--r--. 1 root root    0 11月  5 17:15 test
drwxr-xr-x. 2 root root   32 11月  4 22:17 vbird
#這里詳細的列出了文件的權限、屬主、屬組等信息;
[root@radio_freshman litter]# ls -F
abc/  catfile  def/  myfile.6it7  myfile.AAYW  myfile.Bb0o  myfile.NPdr  myfile.RBP6
#最后有正斜線的,如:abc和def都是目錄,其他的均為文件;
[root@radio_freshman litter]# ls -R
.:
abc  catfile  def  myfile.6it7  myfile.AAYW  myfile.Bb0o  myfile.NPdr  myfile.RBP6

./abc:
1  2  h

./abc/h:

./def:
3  4  5
#這里遞歸顯示了目錄abc和目錄def下面的內容;

touch:

用于創建空文件。

命令格式:

~]# touch FILENAME

示例:

[root@radio_freshman test]# touch newfile
[root@radio_freshman test]# ls -l newfile 
-rw-r--r--. 1 root root 0 11月  5 21:47 newfile
#創建了屬主為root用戶、屬組為root的名字為newfile的文件;

cp:

在文件系統中,cp可以將文件或目錄從一個位置復制到另一個位置。

命令格式:

~]# cp SOURCE DESTINATION

示例:

[root@radio_freshman /]# cd /test/abc/
[root@radio_freshman abc]# ls
1
[root@radio_freshman abc]# cp ../regular_express.txt /test/abc/
[root@radio_freshman abc]# ls
1  regular_express.txt
#復制前后通過ls命令運行結果作對比,cp復制命令成功;

mv:

在Linux系統中,重命名文件稱為移動,mv命令可以將文件和目錄移動到另一個位置或者重命名。

命令格式:

~]# mv SOURCE DESTINATION

示例:

[root@radio_freshman abc]# ls
1  regular_express.txt
[root@radio_freshman abc]# mv ../passwd ./
[root@radio_freshman abc]# ls
1  passwd  regular_express.txt
#復制前后通過ls命令運行結果作對比,mv移動文件成功;
[root@radio_freshman abc]# mv ./1 ./2
[root@radio_freshman abc]# ls
2  passwd  regular_express.txt
#這里mv命令執行了修改文件名;

rm:

命令rm用于刪除文件。

命令格式:

~]#  rm [OPTION]... FILE...

選項:

-i:刪除前詢問是否真的刪除文件;
-f:強制刪除,不詢問;
-r:可用于遞歸刪除目錄;

示例:

[root@radio_freshman abc]# ls
1  2  3  regular_express.txt
[root@radio_freshman abc]# rm -i 3
rm:是否刪除普通空文件 "3"?y
[root@radio_freshman abc]# ls
1  2  regular_express.txt
[root@radio_freshman abc]# touch 4
[root@radio_freshman abc]# ls
1  2  4  regular_express.txt
[root@radio_freshman abc]# rm -f 4
[root@radio_freshman abc]# ls
1  2  regular_express.txt
[root@radio_freshman abc]# tree 2
2
└── 3
    └── 4

2 directories, 0 files
[root@radio_freshman abc]# rm -rf 2
[root@radio_freshman abc]# ls
1  regular_express.txt
#通過tree命令,不難發現目錄2內部還有兩級目錄,用-r選項遞歸刪除了整個目錄2;

cat:

cat命令是顯示文本文件中所有數據。

命令格式:

~]# cat [OPTION]... [FILE]...

選項:

-n:給顯示的內容加上行號;
-b:只給有文本的行加上行號;

示例:

[root@radio_freshman abc]# cat cattesting.file 
this file is for testing command cat.
hello,everyone!

the upper is a blank line.
OK now stop

[root@radio_freshman abc]# cat -n cattesting.file 
     1    this file is for testing command cat.
     2    hello,everyone!
     3    
     4    the upper is a blank line.
     5    OK now stop
     6    
[root@radio_freshman abc]# cat -b cattesting.file 
     1    this file is for testing command cat.
     2    hello,everyone!

     3    the upper is a blank line.
     4    OK now stop

tac:

tac從最后一行開始顯示。

命令格式:

~]# tac FILE

示例:

[root@radio_freshman abc]# tac tactesting.file 
OK now stop
to be a excellent ops is a long way to go.
this file is for testing command tac.
[root@radio_freshman abc]# cat tactesting.file
this file is for testing command tac.
to be a excellent ops is a long way to go.
OK now stop
#通過命令cat和命令tac運行結果的比較發現,tac是從最后一行開始顯示。

more:

cat命令的主要缺陷是:一旦運行,就無法控制后面的操作。然而,more命令會顯示文本文件的內容,會在顯示每頁數據之后停下來。

命令格式:

~]# more FILE

less:

less的用法比起more更有彈性,在使用more的時候,并沒有向前翻頁,只能往后看;less可以使用上、下等按鍵實現往前往后翻看文件。

命令格式:

~]# less FILE

tail:

命令tail只看結尾幾行。

命令格式:

~]# tail [OPTION]... [FILE]...

選項:

-n:后面接數字,代表顯示幾行的意思;

示例:

[root@radio_freshman test]# tail -n 5 passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
radio:x:1000:1000:radio:/home/radio:/bin/bash
user3:x:1001:1001::/home/user3:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
#僅僅顯示了passwd文件的最后5行;

head:

head命令只看頭幾行。

命令格式:

~]# head [OPTION]... [FILE]...

選項:

-n:后面接數字,代表顯示幾行的意思。

示例:

[root@radio_freshman test]# head -n 5 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#僅僅顯示了passwd文件的前5行;

Q2:bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。

  • bash特性之命令執行狀態返回值:

成功:0

失?。?-255

命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中;

示例:

[root@radio_freshman litter]# ls
abc  catfile  def  myfile.6it7  myfile.AAYW  myfile.Bb0o  myfile.NPdr  myfile.RBP6
[root@radio_freshman litter]# echo $?
0
#返回值為0,則表面ls命令執行成功;
[root@radio_freshman litter]# lss 
-bash: lss: 未找到命令
[root@radio_freshman litter]# echo $?
127
[root@radio_freshman litter]# ls /litterr
ls: 無法訪問/litterr: 沒有那個文件或目錄
[root@radio_freshman litter]# echo $?
2
#同樣的是執行失敗,返回值分別是127和2,則說明不同的失敗原因,返回的值不一樣;
  • bash特性之命令行展開:

~:自動展開為用戶的家目錄,或指定的用戶的家目錄;

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

示例:

[root@radio_freshman ~]# whoami
root
[root@radio_freshman ~]# cd ~
[root@radio_freshman ~]# pwd
/root
#說明了~自動展開為用戶的家目錄;
[root@radio_freshman def]# ls
1
[root@radio_freshman def]# mkdir -pv ./{a/{c,d},b}
mkdir: 已創建目錄 "./a"
mkdir: 已創建目錄 "./a/c"
mkdir: 已創建目錄 "./a/d"
mkdir: 已創建目錄 "./b"
[root@radio_freshman def]# ls
1  a  b
[root@radio_freshman def]# tree
.
├── 1
├── a
│   ├── c
│   └── d
└── b
#通過tree命令可以看出,通過{}展開多個路徑創建成功;

Q3:請使用命令行展開功能來完成以下練習:

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

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

圖片1.png

(1)
    ~]# mkdir -pv /tmp/{a_{c,d},b_{c,d}}
(2)
    ~]# 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}}

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

一般文件包含兩類數據,元數據(metadata)和數據(data);

元數據信息包括文件路徑、文件大小、文件類型、設備、權限、環境、時間戳;

元數據信息通過stat命令查看;

示例:

~]# stat /test/regular_express.txt 
  文件:"/test/regular_express.txt"
  大?。?83           塊:8          IO 塊:4096   普通文件
設備:fd00h/64768d    Inode:425350      硬鏈接:1
權限:(0755/-rwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:default_t:s0
最近訪問:2016-11-05 10:28:29.964095453 +0800
最近更改:2016-11-05 10:28:24.627095338 +0800
最近改動:2016-11-05 10:28:24.627095338 +0800
創建時間:-

修改文件的時間戳信息:

使用touch命令可以修改時間戳。

命令格式:

touch [OPTION]... FILE...

選項:

-a: 僅修改access time;
-m:僅修改modify time;
說明:一般可以改變atime 和 mtime,因為atime 和 mtime發生變化時,ctime是自動進行的,即 change time是不可以手動更改的。

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

定義命令別名:

使用命令alias定義命令的別名。

命令格式:

~]# alias NAME=’COMMAND [OPTION]’

示例:

~]# alias lm='ls -l | less'

在命令中引用另一個命令的執行結果:

方法: $(COMMAND)

示例:

~]#  touch tfile-$(date +%F-%H-%M-%S)
~]# ls
tfile-2016-11-06-10-13-57
#示例中,引用了date命令的執行結果,通過ls命令不難發現,文件名里含有了時間信息;

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

~]# ls /var/ | grep '^l.*[[:digit:]]\{1,\}.*[[:lower:]]$'

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

~]# ls /etc/ | grep '^[0-9].*[^0-9]$'

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

~]# ls /etc/ | grep '^[^a-zA-Z][a-zA-Z].*'

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

~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)

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

~]# cp -r /etc/p*[^0-9] /tmp/mytest1

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

~]# cp -r /etc/*.d /tmp/mytest2/

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

~]# cp /etc/[lmn]*.conf /tmp/mytest3/

原創文章,作者:N24_VC,如若轉載,請注明出處:http://www.www58058.com/57909

(0)
N24_VCN24_VC
上一篇 2016-11-06
下一篇 2016-11-06

相關推薦

  • Linux 第七天: (08月05日) Linux文本處理工具

    Linux 第七天: (08月05日) 文本處理工具       head -n 指定貨權前n行tail -n 指定獲取后n行tail -f 顯示文件新追加內容 tail -n 0 -f /var/log/messages & 后臺監控日志 cut -d 指明分隔符,默認tabcut -f 第幾個字段cut -c 按字符…

    Linux干貨 2016-08-08
  • rpm軟件管理工具詳解

    1 Linux軟件安裝概述 安裝程序的方式: 軟件包概述 RPM RPM的缺點 RPM包 RPM分包 RPM命令的使用 rpm 包管理 升級注意項 如何安裝rpm軟件包 如何卸載rpm軟件包 如何升級rpm軟件包 如何查詢rpm軟件包 如何查看與rpm包相關的文件和其他信息 如何校驗rpm包 RPM的數據庫 1 Linux軟件安裝概述 安裝程序的方式: 通用…

    Linux干貨 2016-09-06
  • CentOS啟動流程

      我們介紹一下CentOS操作系統的詳細啟動流程,了解這些啟動流程之后,我們可以實驗做一個小型的Linux。 1、Linux的組成 2、Linux的運行環境 3、Linux的啟動流程 3.1、POST加電自檢 3.2、Boot Sequence(啟動次序) 3.3、MBR 3.4、Kernel 3.5、init 1、Linux的組成 &…

    Linux干貨 2016-12-04
  • 第三周n28

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d ” ” -f 1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 who | tail -1 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 cat /etc/passwd | …

    Linux干貨 2017-12-17
  • etc的常見問答

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost tuser1]# cp -r /etc/skel/ /home/tuser1 [root@localhost tuser1]# chmod -R go= /home/tuser1/ [root…

    2017-12-26
  • shell腳本之批量添加用戶

        沒錯,這是一個簡單的腳本,不寫不知道,寫了才發現自己多垃圾。     我是一名普通的公司網絡管理,接觸linux不長,一直理想都是和馬哥學習linux,可惜因為拖家帶口的原因,沒辦法交學費和馬哥學習,心里小小遺憾吧。每天看著馬哥的文章以及百度搜索的視頻文章學習,感覺自己學…

    Linux干貨 2016-07-07

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-10 17:22

    總結的不錯~最后的幾個題目可以多思考幾種不同的方法來實現~~繼續加油~

欧美性久久久久