几个常用的linux命令

文件基本属性

➜  ALog git:(master) ls -l
total 112
drwxr-xr-x  11 Blankj  staff    374 Dec  6 23:39 alog
-rw-r--r--   1 Blankj  staff  11336 Dec  4 17:08 LICENSE
-rw-r--r--   1 Blankj  staff   6932 Dec  6 23:44 README.md

ls -l 命令显示的前 10 位 如下所示。

第 0 位表示文件类型,如下所示:

  • 当为 d 则是目录;
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的,以三个为一组,且均为rwx 的三个参数的组合。其中,r 代表可读(read)、w 代表可写(write)、x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。其中,1-3 位确定 owner 对该文件的权限;4-6 位确定 group 对该文件的权限;7-9 位确定 other 对该文件的权限。

更改文件 owner

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

更改文件 group

chgrp [-R] 属组名 文件名

更改文件权限

更改文件权限有两种方法,一种是数字法,一种是符号法。

数字法

chmod [-R] xyz 文件或目录

文件的基本权限就有九个,owner/group/others 每个都有各自的 rwx 权限,我们使用数字来代表各个权限,如下所示:

r: 4
w: 2
x: 1

每种身份(owner/group/others)各自的 rwx 是需要累加的,当文件权限为 rwxrwx---,则用数字表示为:

owner  = rwx = 4 + 2 + 1 = 7
group  = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0

例如要开启 alog 目录及目录下所有文件的所有权限,可以使用 chmod -R 777 alog 命令。

符号法

         u    +(加入)    r
chmod    g    -(除去)    w    文件或目录
         o    =(设定)    x
         a

我们就可以用 ugoa 来代表 owner,group,others,all。

如果我们要将文件权限设置为 rwxr-xr--,可以使用 chmod u=rwx,g=rx,o=r 文件名 命令。

文件与目录管理

处理目录的常用命令

ls:列出目录

  • -a 显示所有文件及目录(ls内定将文件名或目录名称开头为 . 的视为隐藏档,不会列出);
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出;
  • -r 将文件以相反次序显示(原定依英文字母次序);
  • -t 将文件依建立时间之先后次序列出;
  • -A 同 -a ,但不列出 .(目前目录)及 ..(父目录);
  • -F 在列出的文件名称后加一符号;例如可执行档则加 *,目录则加 /
  • -R 若目录下有文件,则以下之文件亦皆依序列出。

cd:切换目录(change directory)

pwd:显示目前的目录(print working directory)

  • -P:显示出确实的路径,而非使用链接(link)路径。

mkdir:创建一个新的目录(make directory)

  • -m:配置文件的权限,比如 mkdir -m 777 dir
  • -p:递归创建父目录。

rmdir:删除一个空的目录

  • -p:连同上一级空的目录也一起删除。

cp:复制文件或目录

  • -a:相当于 -pdr 的意思,至于 pdr 请参考下列说明(常用);
  • -d:若来源档为链接档的属性(link file),则复制连结档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用);
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用于目录的复制行为(常用);
  • -s:复制成为符号连结档(symbolic link),即“捷径”文件;
  • -u:若 destination 比 source 旧才升级 destination。

rm:移除文件或目录

  • -f:就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i:互动模式,在删除前会询问使用者是否动作;
  • -r:递归删除啊,最常用在目录的删除了。

mv:移动文件与目录,或修改名称

  • -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i:若目标文件(destination)已经存在时,就会询问是否覆盖;
  • -u:若目标文件已经存在,且 source 比较新,才会升级(update)。

文件内容查看

cat:由第一行开始显示文件内容

  • -A:相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b:列出行号,仅针对非空白行做行号显示,空白行不标行号;
  • -E:将结尾的断行字节 $ 显示出来;
  • -n:列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T:将 [tab] 按键以 ^I 显示出来;
  • -v:列出一些看不出来的特殊字符。

tac:从最后一行开始显示

可以看出 tac 是 cat 倒着写。

nl:显示的时候顺道输出行号

  • -b:指定行号指定的方式,主要有两种:
    • -b a:表示不论是否为空行,也同样列出行号(类似 cat -n);
    • -b t:如果有空行,空的那一行不要列出行号(默认值)。
  • -n:列出行号表示的方法,主要有三种:
    • -n ln:行号在荧幕的最左方显示;
    • -n rn:行号在自己栏位的最右方显示,且不加 0;
    • -n rz:行号在自己栏位的最右方显示,且加 0。
  • -w:行号栏位的占用的位数。

more

  • space:代表向下翻一页;
  • Enter:代表向下翻『一行』;
  • /字串:向下搜寻『字串』的功能;
  • ?字串:向上搜寻『字串』的功能;
  • :f:立刻显示出档名以及目前显示的行数;
  • q:代表立刻离开 more ,不再显示该文件内容;
  • b 或 ctrl + b:代表往回翻页,不过这动作只对文件有用,对管线无用。

less:一页一页的显示文件内容

与 more 类似,但是比 more 更好的是,他可以往前翻页

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

head:取出文件前面几行

  • -n:后面接数字,代表显示几行的意思。

tail:取出文件后面几行

  • -n:后面接数字,代表显示几行的意思;
  • -f:表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测。