马哥教育网络班20期第2周课程练习

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

linux上文件管理命令包括:

ls,cat,pwd,cp,rm,cd,head,tail,more,less,cut,which,whereis,find,mkdir,mv;

1、ls 命令;显示文件/文件夹清单

  例如:如下显示列出根目录下的文件及目录清单

  [root@localhost ~]# ls /var  列出/var文件夹下的目录及文件等

 一般通常后加选项:-a -l -h -d等

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。
-l  列出文件的详细信息。
-h 将文件大小自动转换为容易理解的文件大小(例如:1K 10M 1G等 )

2、cat 命令cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;

cat主要有三大功能:
1.一次显示整个文件。
 [root@localhost ~]# cat   filename
2.从键盘创建一个文件。
 [root@localhost ~]# cat  >  filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件。
 [root@localhost ~]# cat   file1   file2  > file

3、pwd命令: 用于查看“当前目录”’的完整路径

[root@localhost network-scripts]# pwd

/etc/sysconfig/network-scripts

4、cp命令: 用于复制文件或目录,一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。

下面这段为网上摘录,方便自己也方便有类似问题的朋友。

参数:
     -a 或 –archive     此参数的效果和同时指定"-dpR"参数相同
     -b 或 –backup      删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录
     -f 或 –force       强行复制文件或目录, 不论目的文件或目录是否已经存在
     -i 或 –interactive 覆盖文件之前先询问用户
     -l 或 –link        对源文件建立硬链接,而非复制文件
     -p 或 –preserve    保留源文件或目录的属性,包括所有者、所属组、权限与时间
     -P 或 –parents     保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经丰在
     -r                  递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
     -R 或 –recursive   递归处理,将指定目录下的文件及子目录一并处理
     -s 或 –symbolic-link  对源文件建立符号链接,而非复制文件
     -S <备份字尾字符串> 或 –suffix=<备份字尾字符串> 用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"
     -u 或 –update      使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件
     -v 或 –verbose     显示执行过程
     -V <备份方式> 或 –version-control=<备份方式>  指定当备份文件时,备份文件名的命名方式,有以下3种:
                         1.numbered或t, 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增
                         2.simple或never 将使用简单备份,默认的备份字尾字符串是~, 也可通过-S来指定
                         3.existing或nil将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份
     -x 或 –one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件
     –help              显示在线帮助
     –sparse=<使用时机>  设置保存希疏文件的时机
     –version           显示版本

示例:
    .复制文件,只有源文件较目的文件的修改时间新时,才复制文件
     cp -u -v file1 file2

    .将文件file1复制成文件file2
     cp file1 file2

    .采用交互方式将文件file1复制成文件file2
     cp -i file1 file2

    .将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式
     cp -f file1 file2

    .将目录dir1复制成目录dir2
     cp -R file1 file2

    .同时将文件file1、file2、file3与目录dir1复制到dir2
   cp -R file1 file2 file3 dir1 dir2

    .复制时保留文件属性
     cp -p a.txt tmp/

    .复制时保留文件的目录结构
     cp -P  /var/tmp/a.txt  ./temp/

    .复制时产生备份文件
     cp -b a.txt tmp/

    .复制时产生备份文件,尾标 ~1~格式
     cp -b -V t   a.txt /tmp    
  
    .指定备份文件尾标    
     cp -b -S _bak a.txt /tmp

5、rm命令:删除一个目录中一个或多个文件或目录。

 注意:-r 为将列出的目录及子目录和文件递归删除。

  [root@localhost ~]# rm -r test

6、cd命令:从当前目录切换进入到指定目录

 [root@localhost ~]# cd 进入用户主目录

 [root@localhost ~]# cd – 返回上级目录


7、head命令:用于显示输出指定文件打印开头10行。参数-n为指定几行

 [root@localhost ~]#  head -n15 /etc/passwd 查看/etc目录下的的passwd文件打印开头15行

8、tail命令:用于显示输出指定文件打印结尾10行。参数-n为指定几行

 [root@localhost ~]#  tail -n 15 /etc/passwd 查看/etc目录下的passwd文件打印结尾15行

9、more命令: 与cat命令功能类似,都是查看文件内容,但有所不同的是more可以按页来查看文件的内容。


10、less命令:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 11、less 在查看之前不会加载整个文件。


11、cut命令:剪切命令,一般是配合"|"管道来使用的。


12、which命令:查看某个命令的路径

[root@localhost ~]# which cat

/usr/bin/cat


13、whereis命令:查找文件的路径位置,可查询可执行文件,源代码文件,帮助文件在系统中的位置。

[root@localhost ~]# whereis cat

cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz


14、find命令:文件查找命令 linux下find命令在目录结构中搜索文件,linux下find命令提供了相当多的查找条件,功能非常强大。


15、mkdir命令:创建指定目录命令


16、mv命令:移动或重命名文件或目录命令

二,bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。


1、bash使用特殊变量$?保存最近一条命了的执行状态结果: 0 表示成功  1-255表示失败

[root@localhost ~]# cd /etc

[root@localhost etc]# echo $?

0

[root@localhost etc]# cdd

-bash: cdd: 未找到命令

[root@localhost etc]# echo $?

127

[root@localhost etc]# 

2、命令行展开: ~:展开为用户的主目录  ~username:为展开指定用户的主目录

示例演示   

[root@localhost ~]# mkdir /tmp/{a,b}

[root@localhost ~]# mkdir /tmp/{a,b}/c

[root@localhost ~]# cd /tmp/a/c/

[root@localhost c]# pwd

/tmp/a/c

[root@localhost c]# cd /tmp/b/c

[root@localhost c]# pwd

/tmp/b/c



三、请使用命令行展开功能来完成以下练习: (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d (2)、创建/tmp/mylinux目录下的:

mylinux/

(1) 

[root@localhost ~]# mkdir /tmp/{a,b}_{c,d}

[root@localhost ~]# 

[root@localhost ~]# ls /tmp

a_c  a_d  b_c  b_d  glances.log  ks-script-by5YLu  yum.log

(2) 

[root@localhost ~]# 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@localhost ~]# 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

24 directories, 0 files

[root@localhost ~]# 

四、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息


元数据:用来描述一个文件的系统特征,如访问权限,文件数据分布等。

用法:

[root@localhost ~]# ll

-rw——-. 1 root root 955 6月  14 20:33 anaconda-ks.cfg   便是文件anaconda-ks.cfgd的元数据信息

-  :文件类型  (-或f为普通文件,d为目录文件,b为块设备,c为字符设备,l为符号链接文件,p为管道文件,s为套接字文件socket,)

rw-:属主权限,r为可读,w为可写  (x为可执行文件)

—:属组权限, -不可读写执行

— :其它,不可读写执行 

1  :表示硬链接数量 

root:第一个root表示属主 

root:第二个root表示属组 

955   :为文件大小 

6月 14 20:33:为时间 

anaconda-ks.cfg:最后一位表示文件名




[root@localhost ~]# stat /tmp/a_c

  文件:"/tmp/a_c"

  大小:6               块:0          IO 块:4096   目录

设备:fd00h/64768d      Inode:603870      硬链接:2

权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2016-06-18 07:05:06.152455323 +0800

最近更改:2016-06-18 07:05:06.152455323 +0800

最近改动:2016-06-18 07:05:06.152455323 +0800

创建时间:-

使用touch命令修改时间戳信息

五、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?



1,用法

[root@localhost ~]# alias 

alias cp='cp -i'

alias egrep='egrep –color=auto'

alias fgrep='fgrep –color=auto'

alias grep='grep –color=auto'

alias l.='ls -d .* –color=auto'

alias ll='ls -l –color=auto'

alias ls='ls –color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which –tty-only –read-alias –show-dot –show-tilde'

[root@localhost ~]# 

示例

[root@localhost ~]# alias la=$(ls -a)

2, 命令引用: name='COMMAND'或name=$(COMMAND)

六、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。


[root@localhost ~]# ls -a /var|grep ^l.*[0-9].*[a-z]$

  [root@localhost ~]# ls -a /var|grep "\<l.*[0-9].*[a-z]\>"

七、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。



[root@localhost ~]# ls -a /etc/|grep ^[0-9].*[^0-9]$

八、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。


[root@localhost ~]# ls -a /etc/|grep ^[^[:alpha:]][[:alpha:]

九、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22

touch /tmp/tfile-`date "+%Y-%m-%d-%H-%M-%S"`

十、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。


[root@localhost ~]# mkdir /tmp/mytest1               

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

[root@localhost ~]# 

[root@localhost ~]# 

[root@localhost ~]# ls /tmp/mytest1                  

pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d  printcap  profile  profile.d  protocols  python

[root@localhost ~]# 

十一、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。


[root@localhost ~]# mkdir /tmp/mytest2

[root@localhost ~]# 

[root@localhost ~]# 

[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2

ls /tmp/mytest2[root@localhost ~]# ls /tmp/mytest2

bash_completion.d  cron.d     dracut.conf.d  ld.so.conf.d  modules-load.d  popt.d          rc0.d  rc3.d  rc6.d      rwtab.d     sysctl.d    yum.repos.d

binfmt.d           depmod.d   grub.d         logrotate.d   my.cnf.d        prelink.conf.d  rc1.d  rc4.d  rc.d       statetab.d  tmpfiles.d

chkconfig.d        dnsmasq.d  init.d         modprobe.d    pam.d           profile.d       rc2.d  rc5.d  rsyslog.d  sudoers.d   xinetd.d

[root@localhost ~]# 

[root@localhost ~]# 

十二、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中


[root@localhost ~]# mkdir /tmp/mytest3

[root@localhost ~]# cp /etc/[l,m,n]*.conf /tmp/mytest3

 ls /tmp/mytest3[root@localhost ~]#  ls /tmp/mytest3

ld.so.conf  lftp.conf  libaudit.conf  libuser.conf  locale.conf  logrotate.conf  man_db.conf  mke2fs.conf  nsswitch.conf

[root@localhost ~]# 

原创文章,作者:huan918,如若转载,请注明出处:http://www.178linux.com/18756

(0)
huan918huan918
上一篇 2016-06-23
下一篇 2016-06-23

相关推荐

  • pam_mysql认证ftp虚拟用户账号

    pam_mysql认证ftp虚拟用户账号: 虚拟用户:        用户账号存储于何处?        文件、MySQL、Redis、…       &nb…

    2017-06-13
  • Bash快捷键

    Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾Ctrl + w :…

    Linux干货 2017-03-26
  • 配置LAMP实现WordPress

    配置LAMP实现WordPress 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP) CentOS 7.3、Apache 2.4.6、MariaDB 5.5.52、PHP 5.4.16 1 安装LAMP 采用yum方式进行安装httpd、MariaDB、php、php-mysql,php-mysql用来进行php和M…

    2017-06-06
  • rsync+inotify实现数据同步——单向传输

    实验环境:<从A主机推送数据到B主机[B主机可以有多个]> A主机:10.1.43.102 B主机:10.1.43.103 配置流程: —rsyncserver—- <B主机上配置> 1.vim /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件) vim /etc/rsyncd.…

    Linux干货 2016-10-27
  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。       首先用who命令列出当前系统上所有登陆用户,然后使用cut命令以空格为分隔符取出第一列,再使用sort排序并去除重复的行        …

    Linux干货 2017-01-18

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 14:08

    写的很棒,可以关注一些排版的技巧,那样会更完美