Linux第二次做業

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

文件管理類命令:cp,mv,rmpython

1)cp:複製文件或目錄linux

  用法:cp [OPTION]... [-T] SOURCE DESTshell

        cp [OPTION]... SOURCE... DIRECTORYcentos

        cp [OPTION]... -t DIRECTORY SOURCE...bash

  注意事項:app

SOURCE是文件:ssh

若是目標文件不存在,新建目標文件,並將源文件中的內容填充到目標文件中ide

若是目標存在且爲文件,將源文件中的內容覆蓋至目標文件中post

若是目標存在且爲目錄,在目標目錄下創建與原文件同名的文件,並將源文件中內容填充到新的文件中去

SOURCE是多個文件,目標必須存在,且爲目錄,其它狀況均會出錯

SOURCE是目錄:必須使用-r選項

若是目標目錄不存在,則會建立指定目錄,賦值源目錄中全部文件至目標目錄中

若是目標是目錄,在源目錄中的文件所有分複製到目標目錄中

  經常使用選項:

-a, --archive    等於-dR --preserve=all

-d                等於--no-dereference --preserve=links

-f, --force        若是目標文件沒法打開則將其移除並重試(當 -n 選項存在時則不需再選此項)

-i, --interactive        覆蓋前詢問(使前面的 -n 選項失效)

-L, --dereference   老是跟隨符號連接

-n, --no-clobber   不要覆蓋已存在的文件(使前面的 -i 選項失效)

-P, --no-dereference   不跟隨源文件中的符號連接

-p                等於--preserve=模式,全部權,時間戳

--preserve[=屬性列表]   保持指定的屬性(默認:模式,全部權,時間戳),若是可能保持附加屬性:環境、連接、xattr 等

-R, -r, --recursive  複製目錄及目錄內的全部項目

實例

[root@localhost /]# cp etc/fstab /tmp/123//複製文件,123文件不存在測建立文件
[root@localhost /]# cat tmp/123 
[root@localhost /]# cp -a /etc/system-release /tmp/12/
#
# /etc/fstab
# Created by anaconda on Fri Aug 12 06:53:38 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=ab5f2947-2e09-4c7d-9c36-80c29e6391a4 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@localhost /]# cp /etc/host.conf /etc/fstab /tmp/mylinux///複製多個文件到mylinux中
[root@localhost /]# cp -a /etc/system-release /tmp/12///複製連接文件  -a選項複製文件的全部屬性和連接符號,可是連接地址是相對路徑,連接指向會出錯
[root@localhost /]# ll /tmp/12/
總用量 0
lrwxrwxrwx. 1 root root 14 8月  13 19:49 123 -> centos-release
lrwxrwxrwx. 1 root root 14 8月  12 06:54 system-release -> centos-release

2)mv:移動文件或目錄

用法:mv [選項]... [-T] 源文件 目標文件

   或:mv [選項]... 源文件... 目錄

   或:mv [選項]... -t 目錄 源文件...

經常使用選項:

 -f, --force                  覆蓋前不詢問

 -i, --interactive            覆蓋前詢問

 -n, --no-clobber             不覆蓋已存在文件

實例

[root@localhost 12]# ls
123  system-release
[root@localhost 12]# mv 123 ../a_c/ //將123文件複製到a_c目錄下
[root@localhost 12]# mv system-release 321//將文件system-release重命名
[root@localhost 12]# ls
321
[root@localhost tmp]# mv 12/ b_c///複製目錄
[root@localhost tmp]# cd b_c
[root@localhost b_c]# ls
12


3)rm:刪除文件或目錄

用法:rm [選項]... 文件...

經常使用選項:

-f 強制刪除

-i 交互式

-r 刪除目錄

實例

[root@localhost b_c]# rm -rf 12
//強制刪除12目錄



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

1.命令歷史:history

環境變量:

HISTSIZE:命令歷史記錄的條數

HISTFILE:~/.bash_history

HISTFILESIZE:命令歷史文件記錄歷史的條數

調用歷史命令的方式:

!#:重複執行第#條指令

!!:執行上一條命令

!string 調用最近以string開頭的命令

!$:調用上一條命令的最後一個參數

ESC,.:調用上一條命令的最後一個參數

控制命令歷史的記錄方式:

環境變量:HISTCONTROL

ignoredups:忽略連續且重複的命令,系統默認

ignorespace:忽略全部以空白開頭的命令;

ignoreboth:上述兩個同時生效

修改環境變量的方式:export 變量名="值"

變量賦值:把賦值符號後面的數據存儲與變量名指向內存空間,至對當前shell有限

2.命令補全:TAB鍵補全命令,

3.路徑補全

4.命令展開

~:展開爲用戶的主目錄

~USERNAME:展開爲指定用戶的主目錄

[root@localhost /]# cd ~
[root@localhost ~]# 
[root@localhost ~]# cd ~jun_shao/
[root@localhost jun_shao]# ~jun_shao/


5.命令的執行結果狀態:成功和失敗,0表示成功,1-255表示失敗

bash使用特殊變量$?保存最近一條命令的執行狀態結果

獲取方式 echo $?

程序執行的有兩類結果:程序的返回值和程序的執行狀態結果

[root@localhost /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost /]# echo $?
0

6.bash的快捷操做

ctrl+L:清屏,至關於clear

ctrl+i:跳轉值命令首部

ctrl+e:跳轉至命令尾部

ctrl+c:取消命令執行

ctrl+U:刪除命令首至光標所在處的內容

ctrl+K:刪除光標所在處至命令行尾部的全部內容




三、請使用命令行展開功能來完成如下練習:

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

[jun_shao@localhost tmp]$ mkdir /tmp/{a,b}_{c,d}
[jun_shao@localhost tmp]$ ls
a_c                  sensitive-info.log
a_d                  ssh-jCe06sIOI6xg
anaconda.log         ssh-UauJ16N50KP7
b_c                  storage.log
b_d                  systemd-private-6d69e0cd5d82468ab85eff756bc26a69-colord.service-cH1SDQ
hogsuspend           systemd-private-6d69e0cd5d82468ab85eff756bc26a69-cups.service-dE9Cpn
hsperfdata_jun_shao  systemd-private-6d69e0cd5d82468ab85eff756bc26a69-rtkit-daemon.service-RjUF2H
hsperfdata_root      systemd-private-6d69e0cd5d82468ab85eff756bc26a69-systemd-hostnamed.service-LisN5B
ifcfg.log            systemd-private-af9b870d5246476e8ba1feb08891b3d0-colord.service-RDVwUr
june                 systemd-private-af9b870d5246476e8ba1feb08891b3d0-cups.service-vUZ9Sj
ks-script-ZiDgee     systemd-private-af9b870d5246476e8ba1feb08891b3d0-rtkit-daemon.service-UT40FH
packaging.log        tracker-extract-files.1000
program.log          yum.log

(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@localhost mylinux]# mkdir -p /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@localhost mylinux]# tree 
.
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── lock
├── log
├── proc
├── run
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var


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

1)文件的元數據信息:

文件的大小

文件的全部者

文件的權限

access time:訪問時間,atime

modify time:修改時間,mtime

change time:改變時間,ctime

2)使用stat命令查詢文件的元數據信息

[root@localhost /]# stat /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大小:4096      塊:8          IO 塊:4096   目錄
設備:fd00h/64768dInode:206503646   硬連接:17
權限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2016-08-13 02:40:09.054684514 +0800
最近更改:2016-08-13 02:40:02.371740577 +0800
最近改動:2016-08-13 02:40:02.371740577 +0800
建立時間:-

3)修改文件的時間戳信息:touch命令

用法:touch [選項]... 文件...

經常使用選項:

 -a,只更改訪問時間

 -c, --no-create 不建立任何文件

 -d, --date=字符串 使用指定字符串表示時間而非當前時間

 -m 只更改修改時間

 -t STAMP,[[cc]YY]MMDDhhmm[.ss]修改時間戳爲指定時間

access time:訪問時間,atime

modify time:修改時間,mtime

change time:改變時間,ctime

[root@localhost /]# touch -t 1510101010.10 tmp/mylinux///修改時間戳爲指定日期
[root@localhost /]# stat /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大小:4096      塊:8          IO 塊:4096   目錄
設備:fd00h/64768dInode:206503646   硬連接:17
權限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2015-10-10 10:10:10.000000000 +0800
最近更改:2015-10-10 10:10:10.000000000 +0800
最近改動:2016-08-13 15:27:55.012235506 +0800
建立時間:-
[root@localhost /]# touch -a tmp/mylinux/
[root@localhost /]# stat /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大小:4096      塊:8          IO 塊:4096   目錄
設備:fd00h/64768dInode:206503646   硬連接:17
權限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2016-08-13 15:28:31.722939290 +0800
最近更改:2015-10-10 10:10:10.000000000 +0800
最近改動:2016-08-13 15:28:31.722939290 +0800
建立時間:-
[root@localhost /]# stat /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大小:4096      塊:8          IO 塊:4096   目錄
設備:fd00h/64768dInode:206503646   硬連接:17
權限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2016-08-13 15:28:31.722939290 +0800
最近更改:2016-08-13 15:39:49.605469563 +0800
最近改動:2016-08-13 15:39:49.605469563 +0800
建立時間:-


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

命令別名(alias):經過alias命令實現:shell的內嵌命令

1)alias:顯示當前shell進程中全部可用的命令別名

2)alias NAME='VALUE':定義別名NAME,其至關於執行命令VALUE

注意:在明行中定義的別名,僅對當前shell進程有效,若是想永久有效,要定義在配置文件中

 僅對當前用戶:~/.bashrc

 對全部用戶有效:/etc/bashrc

 注意:編輯配置給出的新配置不會當即生效

  bash進程從新讀取配置文件:source /path/to/config_file 或 ./ path/to/config_file

3)撤銷別名:unalias [-a] name [name...]

注意:若是別名和原命令想同,則執行原命令,如:\COMMAND

實例 

[root@localhost ~]# alias net='cd /etc/sysconfig/network-scripts/'//定義別名,僅對當前shell有效
[root@localhost ~]# net
[root@localhost network-scripts]# 
[root@localhost ~]# nano .bashrc //編輯配置文件,對當前用戶有效
[root@localhost ~]# source .bashrc //從新讀取配置文件,是新建的別有有效
[root@localhost ~]# alias cp="cp -r"//定義與系統自帶的相同的命令
[root@localhost ~]# cp /etc/sysconfig/ /tmp/b_c/
[root@localhost ~]# \cp /etc/fstab /tmp/b_c///使用\cp執行原來的命令
[root@localhost ~]# unalias -a cp//撤銷別名





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

[jun_shao@localhost ~]$ ls -d /var/l*[0-9]*[[:lower:]]
/var/l121231sdfasd  /var/l2dc

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

[jun_shao@localhost ~]$ ls -d /tmp/[0-9]*[^0-9]
/tmp/111223@  /tmp/111223b  /tmp/111223c


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

[jun_shao@localhost tmp]$ ls /etc/[^[:alpha:]][[:alpha:]]*

九、在/tmp目錄下建立以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-08-06-09-32-22。

[root@localhost /]# touch /tmp/`echo tfile-$(date +%Y-%m-%d-%H-%M-%S)`
[root@localhost /]# ls /tmp/
111223@              mytest3
111223b              packaging.log
111223c              program.log
11c                  sensitive-info.log
1c2                  ssh-jCe06sIOI6xg
20160813_141413.txt  ssh-UauJ16N50KP7
a_c                  storage.log
a_d                  systemd-private-6d69e0cd5d82468ab85eff756bc26a69-colord.service-cH1SDQ
anaconda.log         systemd-private-6d69e0cd5d82468ab85eff756bc26a69-cups.service-dE9Cpn
b_c                  systemd-private-6d69e0cd5d82468ab85eff756bc26a69-rtkit-daemon.service-RjUF2H
b_d                  systemd-private-6d69e0cd5d82468ab85eff756bc26a69-systemd-hostnamed.service-LisN5B
hogsuspend           systemd-private-af9b870d5246476e8ba1feb08891b3d0-colord.service-RDVwUr
hsperfdata_jun_shao  systemd-private-af9b870d5246476e8ba1feb08891b3d0-cups.service-vUZ9Sj
hsperfdata_root      systemd-private-af9b870d5246476e8ba1feb08891b3d0-rtkit-daemon.service-UT40FH
ifcfg.log            tfile-2016-08-13-16-47-00
june                 tfile-2016-08-13-16-47-12
ks-script-ZiDgee     tfile-date
l121231sdfasd        tfile-date +%Y-%m-%d-%H-%M-%S
l2dc                 tracker-extract-files.1000
mylinux              +%Y-%m-%d-%H-%M-%S
mytest1              yum.log
mytest2              yum_save_tx.2016-08-13.14-01.B9WFE2.yumtx

十、複製/etc目錄下全部以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

[root@localhost /]# cp -an /etc/p[^0-9]* /tmp/mytest1/
[root@localhost /]# ls /tmp/mytest1/
pam.d       passwd-       pkcs11    pm            popt.d   prelink.conf.d  profile.d  purple
pam_pkcs11  pbm2ppa.conf  pki       pnm2ppa.conf  postfix  printcap        protocols  python
passwd      pinforc       plymouth  polkit-1      ppp      profile         pulse


十一、複製/etc目錄下全部以.d結尾的文件或目錄至/tmp/mytest2目錄中。

[root@localhost /]# cp -an /etc/*.d /tmp/mytest2/
[root@localhost /]# ls /tmp/mytest2
auto.master.d      dracut.conf.d  logrotate.d     profile.d  rc.d           sudoers.d
bash_completion.d  exports.d      modprobe.d      rc0.d      reader.conf.d  sysctl.d
binfmt.d           gdbinit.d      modules-load.d  rc1.d      request-key.d  tmpfiles.d
cgconfig.d         grub.d         my.cnf.d        rc2.d      rsyslog.d      usb_modeswitch.d
chkconfig.d        init.d         oddjobd.conf.d  rc3.d      rwtab.d        xinetd.d
cron.d             ipsec.d        pam.d           rc4.d      sane.d         yum.repos.d
depmod.d           ld.so.conf.d   popt.d          rc5.d      setuptool.d
dnsmasq.d          libibverbs.d   prelink.conf.d  rc6.d      statetab.d


十二、複製/etc/目錄下全部以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

[root@localhost /]# cp -an /etc/[lmn]*.conf /tmp/mytest3
[root@localhost /]# tree /tmp/mytest3
/tmp/mytest3
├── ld.so.conf
├── libaudit.conf
├── libuser.conf
├── locale.conf
├── logrotate.conf
├── man_db.conf
├── mke2fs.conf
├── mtools.conf
├── nfsmount.conf
├── nsswitch.conf
├── ntp.conf
└── numad.conf
相關文章
相關標籤/搜索