Linux常用命令学习

目录

用户切换

    (1)普通用户转管理员用户  sudo su -

    (2)管理员用户转普通用户test   su - test

文件属性与权限

    (1)改变所属群组 chgrp

    (2)改变文件拥有者 chown

    (3)改变权限 chmod

    (4)目录与文件之权限意义

        1)权限对文件的重要性

        2)权限对目录的重要性

文件与目录管理   

    (1)特殊目录

    (2)文件与目录的检视  ls

    (3)复制文件或目录  cp

    (4)移除文件或目录  rm

    (5)移动文件或目录 ,或更名  mv

    (6)取得路径的文件名称与目录名称

文件内容查阅

    (1)cat(concatenate)

    (2)more(一页一页翻动)

    (3)less(一页一页翻动)

    (4)修改文件时间或建置新档   touch

文件与目录的默认权限与隐藏权限

    (1)文件默认权限:umask     

    (2)配置文件隐藏属性:chattr

    (3)显示文件隐藏属性:lsattr   


 

部分摘录于《鸟哥的Linux私房菜》

  • 用户切换

(1)普通用户转管理员用户  sudo su -

(2)管理员用户转普通用户test   su - test

 

  • 文件属性与权限

(1)改变所属群组 chgrp

[root@www ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
     都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息啰~找不到这个群组名~

注:要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误!

(2)改变文件拥有者 chown

[root@www ~]# chown [-R] 账号名称 文件或目录
[root@www ~]# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

范例:将install.log的拥有者改为bin这个账号:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

范例:将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

注:用户必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有纪录的用户名称才能改变。

(3)改变权限 chmod

[root@www ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

(4)目录与文件之权限意义

1)权限对文件的重要性

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (execute):该文件具有可以被系统执行的权限。

2)权限对目录的重要性

目录主要的内容是记录文件名列表。

  • r (read contents in directory)

    表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!

  • w (modify contents of directory)

    这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:

    • 建立新的文件与目录;

    • 删除已经存在的文件与目录(不论该文件的权限为何!)

    • 将已存在的文件或目录进行更名;

    • 搬移该目录内的文件、目录位置。


    总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!

  • x (access directory)

    咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰!

  • 文件与目录管理   

(1)特殊目录

 .    代表此层目录   . .   代表上一层目录    -    代表前一个工作目录

 ~   代表【目前使用者身份】所在的家目录

(2)文件与目录的检视  ls

-a:全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来

 -d :仅列出目录本身,而不是列出目录内的文件数据

-l :长数据串列出,包含文件的属性与权限等等数据

--time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime)

(3)复制文件或目录  cp

cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 .... directory
-a  :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d  :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-p  :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r  :递回持续复制,用於目录的复制行为;(常用)

例1:变换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性:
[root@www ~]# cd /tmp
[root@www tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘
[root@www tmp]# ls -l /var/log/wtmp wtmp

-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp
# 注意上面的特殊字体,在不加任何选项的情况下,文件的某些属性/权限会改变;
# 这是个很重要的特性!要注意喔!还有,连文件创建的时间也不一样了!
# 那如果你想要将文件的所有特性都一起复制过来该怎办?可以加上 -a 喔!如下所示:

[root@www tmp]# cp -a /var/log/wtmp wtmp_2
[root@www tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2
# 了了吧!整个数据特性完全一模一样ㄟ!真是不赖~这就是 -a 的特性!

例2:想要复制某目录下的全部文件到当前目录   cp xx/.   .

注:在默认的条件中, cp 的来源档与目的档的权限是不同的,目的档的拥有者通常会是命令操作者本身。

(4)移除文件或目录  rm

[root@www ~]# rm [-fir] 文件或目录
选项与参数:
-f  :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i  :互动模式,在删除前会询问使用者是否动作
-r  :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!

范例一:将刚刚在 cp 的范例中创建的 bashrc 删除掉!
[root@www ~]# cd /tmp
[root@www tmp]# rm
-i bashrc
rm: remove regular file `bashrc'? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

范例二:透过万用字节*的帮忙,将/tmp底下开头为bashrc的档名通通删除:
[root@www tmp]# rm -i bashrc*
# 注意那个星号,代表的是 0 到无穷多个任意字节喔!很好用的东西!

范例三:将 cp 范例中所创建的 /tmp/etc/ 这个目录删除掉!
[root@www tmp]# rmdir /tmp/etc
rmdir: etc: Directory not empty  <== 删不掉啊!因为这不是空的目录!
[root@www tmp]# rm -r /tmp/etc
rm: descend into directory `/tmp/etc'? y
....(中间省略)....
# 因为身份是 root ,默认已经加入了 -i 的选项,所以你要一直按 y 才会删除!
# 如果不想要继续按 y ,可以按下『 [ctrl]-c 』来结束 rm 的工作。
# 这是一种保护的动作,如果确定要删除掉此目录而不要询问,可以这样做:
[root@www tmp]# \rm -r /tmp/etc
#
在命令前加上反斜线,可以忽略掉 alias 的指定选项喔!至於 alias 我们在bash再谈!

范例四:删除一个带有 - 开头的文件
[root@www tmp]# touch ./-aaa-  <==touch这个命令可以创建空文件!
[root@www tmp]# ls -l
-rw-r--r-- 1 root  root      0 Sep 24 15:03 -aaa-  <==文件大小为0,所以是空文件
[root@www tmp]# rm -aaa-
Try `rm --help' for more information.  <== 因为 "-" 是选项嘛!所以系统误判了!
[root@www tmp]# rm
./-aaa-

(5)移动文件或目录 ,或更名  mv

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
-f  :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i  :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u  :若目标文件已经存在,且 source 比较新,才会升级 (update)

范例一:复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
# 将某个文件移动到某个目录去,就是这样做!

范例二:将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2 <== 这样就更名了!简单~
# 其实在 Linux 底下还有个有趣的命令,名称为 rename ,
# 该命令专职进行多个档名的同时更名,并非针对单一档名变更,与mv不同。请man rename。

范例三:再创建两个文件,再全部移动到 /tmp/mvtest2 当中
[root@www tmp]# cp ~/.bashrc bashrc1
[root@www tmp]# cp ~/.bashrc bashrc2
[root@www tmp]# mv bashrc1 bashrc2 mvtest2
# 注意到这边,如果有多个来源文件或目录,则最后一个目标档一定是『目录!』
# 意思是说,将所有的数据移动到该目录的意思!

(6)取得路径的文件名称与目录名称

[root@www ~]# basename /etc/sysconfig/network
network         <== 很简单!就取得最后的档名~
[root@www ~]#
dirname /etc/sysconfig/network
/etc/sysconfig  <== 取得的变成目录名了!

 

  • 文件内容查阅

(1)cat(concatenate)

[root@www ~]# cat [-AbEnTv]
选项与参数:
-A  :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b  :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E  :将结尾的断行字节 $ 显示出来;

-n  :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T  :将 [tab] 按键以 ^I 显示出来;
-v  :列出一些看不出来的特殊字符

(2)more(一页一页翻动)

  • 空白键 (space):代表向下翻一页;
  • Enter         :代表向下翻『一行』;
  • /字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f            :立刻显示出档名以及目前显示的行数;
  •             :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

(3)less(一页一页翻动)

  • 空白键    :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup]  :向上翻动一页;
  • /字串     :向下搜寻『字串』的功能;
  • ?字串     :向上搜寻『字串』的功能;
  •         :重复前一个搜寻 (与 / 或 ? 有关!)
  • N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  •         :离开 less 这个程序;

(4)修改文件时间或建置新档   touch

modification time(mtime) :当该文件的【内容数据】变更时,就会升级这个时间。

access time(atime) :当【该文件的内容被取用】时,就会升级这个读取时间(access)。

例:将 bashrc 日期改为 2007/09/15 2:02   touch -t 0709150202 bashrc

例:建立一个空的文件testtouch   touch testtouch 

  • 文件与目录的默认权限与隐藏权限

(1)文件默认权限:umask     

[root@www ~]# umask
0022             <==与一般权限有关的是后面三个数字(需要减掉的权限)!
[root@www ~]#
umask -S
u=rwx,g=rx,o=rx

(2)配置文件隐藏属性:chattr

[root@www ~]# chattr [+-=][ASacdistu] 文件或目录名称
选项与参数:
+   :添加某一个特殊参数,其他原本存在参数则不动。
-   :移除某一个特殊参数,其他原本存在参数则不动。
  :配置一定,且仅有后面接的参数

A  :当配置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime
     将不会被修改,可避免I/O较慢的机器过度的存取磁碟。这对速度较慢的计算机有帮助

S  :一般文件是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上 S 这个
     属性时,当你进行任何文件的修改,该更动会『同步』写入磁碟中。

a  :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root
     才能配置这个属性。

c  :这个属性配置之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,
     但是在储存的时候,将会先进行压缩后再储存(看来对於大文件似乎蛮有用的!)

:当 dump 程序被运行的时候,配置 d 属性将可使该文件(或目录)不会被 dump 备份
:这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法
     写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性

:当文件配置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘
     空间,所以如果误删了,完全无法救回来了喔!

:与 s 相反的,当使用 u 来配置文件时,如果该文件被删除了,则数据内容其实还
     存在磁碟中,可以使用来救援该文件喔!

注意:属性配置常见的是 a 与 i 的配置值,而且很多配置值必须要身为 root 才能配置

范例:请尝试到/tmp底下创建文件,并加入 i 的参数,尝试删除看看。
[root@www ~]# cd /tmp
[root@www tmp]# touch attrtest     <==创建一个空文件
[root@www tmp]# chattr +i attrtest <==给予 i 的属性
[root@www tmp]# rm attrtest        <==尝试删除看看
rm: remove write-protected regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted  <==操作不许可
# 看到了吗?呼呼!连 root 也没有办法将这个文件删除呢!赶紧解除配置!

范例:请将该文件的 i 属性取消!
[root@www tmp]# chattr -i attrtest

 (3)显示文件隐藏属性:lsattr   

[root@www ~]# lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏档的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;
-R :连同子目录的数据也一并列出来! 

[root@www tmp]# chattr +aij attrtest
[root@www tmp]# lsattr attrtest
----ia---j--- attrtest

 (4)观察文件类型:file

[root@www ~]# file ~/.bashrc
/root/.bashrc: ASCII text  <==告诉我们是 ASCII 的纯文字档啊!
[root@www ~]#
file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for
GNU/Linux 2.6.9, stripped
# 运行档的数据可就多的不得了!包括这个文件的 suid 权限、兼容於 Intel 386
# 等级的硬件平台、使用的是 Linux 核心 2.6.9 的动态函式库连结等等。
[root@www ~]#
file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data  <== 这是 data 文件!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值