Linux基础(2)

  1. linux上的文件管理类的命令有哪些,常用的使用方法和实例演示:

cat命令 主要是查看文件的内容并且全部罗列出来,同时还可以用于两文件的合并,
-n 对文件的内容加上行号,空行也加

[root@yh ~]# cat -n aa
     1
     2  ni hao 
     3
     4  ta hao 

-h 不对空行加编号

[root@yh ~]# cat -b aa

     1  ni hao 

     2  ta hao 

把一个文件的内容附加到另外一个文件里面:

[root@yh ~]# cat aa >> bb
[root@yh ~]# cat bb
wo shi bb

ni hao 

ta hao 

more命令:查看文件内容,需要一页一页翻行

[root@yh ~]# more a

touch 创建目录

chattr命令:给文件去掉和添加属性
chattr 参数 +/-属性 文件或目录名
参数:-R 递归给文件或者目录添加属性
-V 显示详细的命令执行过程
属性: i 这个目录和内容不能修改

[root@yh ~]# chattr -R +i aa
[root@yh ~]# lsattr aa
----i----------- aa/aa
[root@yh ~]# cd aa
[root@yh aa]# lsattr aa
----i----------- aa

我是root权限可以删除aa这个文件,但是现在删除不了,i的属性起了作用,同时不能被改名,链接和添加内容

[root@yh aa]# rm -rf aa
rm: 无法删除"aa": 权限不够

a 向文件中写入内容后,该内容不能被删除,append

[root@yh ~]# touch aa
[root@yh ~]# chattr +a aa
[root@yh ~]# echo 'wo shi zhu' >> aa
这是覆盖前面的内容,所以不允许删除
[root@yh ~]# echo 11 > aa
-bash: aa: 不允许的操作

查看属性:

[root@yh ~]# lsattr aa   
-----a---------- aa

chgrp:更改目录或者文件的所属组

drwxr-xr-x. 2 root root 6 925 12:59 dd
[root@yh ~]# chgrp redhat dd
[root@yh ~]# ll -d dd
drwxr-xr-x. 2 root redhat 6 925 12:59 dd

chown :更改目录或文件的所有者

[root@yh ~]# chown redhat dd
[root@yh ~]# ll -d dd 
drwxr-xr-x. 2 redhat redhat 6 925 12:59 dd

chmod:选项 操作对象+属性 文件 / chmod 遮罩码(4 读权限,2 写权限,1 执行权限) 文件/目录
选项有: -R递归给予权限
操作对象:u为属主,g为属组,o为其他,a为全部
属性: r 读权限 w 写权限 x执行权限

 chmod -R 777 /tmp/issue
 chmod a=rwx /tmp/issue 

cmp 比较两个文件之间的不同,相同不返回任何信息,不同的地方列出字符和列数编号:

[root@yh ~]# cmp a b
a b 不同:第 8 字节,第 3 行
[root@yh ~]# cat a 
aa

aaa

aaaa

aaaaa
[root@yh ~]# cat b
aa

aaaa

aaaa

aaaaaa
[root@yh ~]# 

file:显示文件类型:

[root@yh ~]# file c.tar.bz 
c.tar.bz: gzip compressed data, from Unix, last modified: Sun Sep 25 13:18:39 2016
[root@yh ~]# file a
a: ASCII text
[root@yh ~]# 

wc命令:参数 文件
-l:line 显示行数
-w:words 单词数
-c:characters 字节数

[root@yh ~]# wc -lwc a
 7  4 21 a
[root@yh ~]# cat a
aa

aaa

aaaa

aaaaa

7 代表有七行 4 代表4个单词 21 代表21字节数

cut命令:
cp命令:
mv命令:
rm 删除命令:

locate :定位文件的位置
find

功能:根据各种需求(名称、类别、时间、大小、权限等)在指定的目录内寻找符合要求的文件。

常配合使用参数:

-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
-amin n : 在过去n 分钟内被读取过
-anewer file : 比档案file 更晚被读取过的档案
-atime n : 在过去n 天过读取过的档案
-cmin n : 在过去n 分钟内被修改过
-cnewer file :比档案file 更新的档案
-ctime n : 在过去n 天过修改过的档案
-empty : 空的档案-gid n or -group name : gid 是n 或是group 名称是name
-ipath p, -path p : 路径名称符合p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合name 的档案。iname 会忽略大小写
-size n : 档案大小是n 单位,b 代表512 位元组的区块,c 表示字元数,k 表示kilo bytes,w 是二个位元组。-type c : 档案类型是c 的档案。
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档案
l: 符号连结

使用方法:

将目前目录及其子目录下所有延伸档名是c 的档案列出来。
find . -name “*.c”
将目前目录其其下子目录中所有一般档案列出
find . -ftype f
将目前目录及其子目录下所有最近20 分钟内更新过的档案列出
find . -ctime -20

2,bash的工作特性之命令执行状态返回值和和命令行展开所涉及的内容及其示例演示:
(1)bash命令执行状态返回值使用特殊变量$?保存

[root@yh ~]# touch asd
[root@yh ~]# echo $?  
0
[root@yh ~]# mkdir asd
mkdir: 无法创建目录"asd": 文件已存在
[root@yh ~]# echo $?  
1

当命令执行正确的时候输入echo $? 返回的是0,当命令执行错误的时候返回的值是1
(2)命令行展开所涉及的内容:
~:展开为用户的主目录
表示在root用户下它的家目录为/root

[root@yh ~]# pwd 
/root

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

[root@yh tmp]# touch /tmp/{a,b}
[root@yh tmp]# ls 
a  b

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

[root@yh tmp]# touch /tmp/{a,b}_{c,d}
[root@yh tmp]# ls 
a_c  a_d  b_c  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@yh tmp]# 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@yh tmp]# cd mylinux/
[root@yh mylinux]# ls 
bin  boot  dev  etc  lib  lib64  proc  sbin  sys  tmp  usr  var

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

文件的元数据有:

[root@yh /]# stat bin/
  文件:"bin/"
  大小:40960           块:136        IO 块:4096   目录
设备:803h/2051d        Inode134320267   硬链接:2
权限:(0555/dr-xr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:bin_t:s0
最近访问:2016-09-25 12:19:12.852029012 +0800
最近更改:2015-10-30 00:32:45.053056691 +0800
最近改动:2015-10-30 00:32:45.053056691 +0800
创建时间:-

大小:文件的大小
块:数据块的大小
IO块:提供给这个目录用于读写的块的大小
uid:所有者ID
gid:所属组ID
inode:I节点用于唯一标示一个目录的ID号

使用touch命令来修改时间戳:
-a : 仅修改access time。
-c : 仅修改时间,而不建立文件。
-d : 后面可以接日期,也可以使用 –date=”日期或时间”
-m : 仅修改mtime。
-t : 后面可以接时间,格式为 [YYMMDDhhmm]
一般属性的修改和文件内容的修改是同步的,内容修改了属性也修改了,属性修改了内容不一定修改

[root@yh tmp]# touch -d "2 days ago" mylinux/
[root@yh tmp]# stat
stat    states  
[root@yh tmp]# stat mylinux/
  文件:"mylinux/"
  大小:4096            块:8          IO 块:4096   目录
设备:803h/2051d        Inode:205294214   硬链接:14
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2016-09-23 15:05:06.551301429 +0800
最近更改:2016-09-23 15:05:06.551301429 +0800
最近改动:2016-09-25 15:05:06.550718359 +0800
创建时间:-

5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
(1)alias
alias NAME=’VALUE’

[root@yh tmp]# alias aa='cp -r /etc/ /tmp'
[root@yh tmp]# aa
这个定义只对当前生效,想要永久性对特定用户生效需要写到该用户的家目录下的.bashrc   "alias  mv='mv -i'"  
如果想要在全局下生效,需要写到/etc/bashrc里面

(2)如何在命令中引用另一个命令的执行结果?
方法一:可以使用重定向:

[root@yh ~]# echo "123" >> /tmp/a_d 

方法二:可以使用管道,

[root@yh ~]# cat /etc/bashrc | grep if
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
      if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
      elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
      if [ -e /etc/sysconfig/bash-prompt-screen ]; then
  # if [ "$PS1" ]; then
  # to your custom modification shell script in /etc/profile.d/ directory
if ! shopt -q login_shell ; then # We're not a login shell
                if [ "$2" = "after" ] ; then
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    # Only display echos from profile.d scripts if we are no login shell
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
[root@yh ~]# 

方法三:可以使用-exec命令

 find / -name yh  -exec cp /tmp {} \;

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

[root@yh var]# ls  -d  l*[0-9]*[a-z]
like111like

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

[root@yh var]# mkdir /etc/1111111111f
[root@yh var]# ls -d /etc/[0-9]*[^0-9]
/etc/1111111111f

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

[root@yh var]# ls -d /etc/[^a-z][a-z]*
/etc/1aaaaaaaaa

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

[root@yh var]# touch /tmp/tfile`date +%F-%H-%M-%S`
[root@yh var]# cat /tmp/tfile2016-09-25-15-58-39 

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

[root@yh var]# mkdir /tmp/mytest1
[root@yh var]# cp -rf /etc/p*[^0-9] /tmp/mytest1/
[root@yh var]# cat /tmp/mytest1/p
pam.d/          pki/            postfix/        profile.d/
passwd          plymouth/       ppp/            protocols
passwd-         pm/             prelink.conf.d/ pulse/
pbm2ppa.conf    pnm2ppa.conf    printcap        purple/
pinforc         popt.d/         profile         
[root@yh var]# cat /tmp/mytest1/p

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

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

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

[root@yh var]# mkdir /tmp/mytest3
[root@yh var]# cp -rf /etc/{l,m,n}*.conf /tmp/mytest3/
[root@yh var]# cat /tmp/mytest3/
ld.so.conf      locale.conf     mke2fs.conf     nsswitch.conf
libaudit.conf   logrotate.conf  mtools.conf     numad.conf
libuser.conf    man_db.conf     nfsmount.conf   
[root@yh var]# cat /tmp/mytest3/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值