目录

Linux 命令

文件属性

drwxr-xr-x 4 root root 4096 Dec 12 10:20 log

文件的第一个属性代表的意思

  • [d] : 目录
  • [-] : 文件
  • [l] : 链接文档
  • [b] : 装置文件里的可供存储的接口设备(可随机存取装置)
  • [c] : 装置文件里的串行端口设备,例如键鼠(一次性读取装置)

接下来是以三个为一组的权限说明

[rwx] 三个权限位置不变,无权限则用 [-] 代替

  • r : 可读(read)
  • w : 可写(write)
  • x : 可执行(execute)

drwxr-xr-x 下划线的代表属主权限

drwxr-xr-x 下划线的代表与属主同组的其他用户权限

drwxr-xr-x 下划线的代表其他用户权限

第一个 root 表示文件所有者

第二个 root 表示文件所属的组

4096 表示文件大小

然后是文件最后访问/修改的日期

最后的 log 则代表文件名

注:对于 root 用户,一般情况下,文件的权限对其不起作用

更改权限

更改文件属主,同时更改文件属组

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

更改文件属组

chgrp [-R] 属组名 文件名

更改文件读写权限

chmod [-R] ugo 文件名 e.g. chmod 754 log

u(user), g(group), o(other) r : 4, w : 2, x : 1

如上面例子,754 表示的权限为 rwxr-xr–

处理目录命令

ls (列出目录)

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称 [root@www ~]# ls [–color={never,auto,always}] 目录名称 [root@www ~]# ls [–full-time] 目录名称 ll 表示 ls -l

  • -a :全部的文件,连同隐藏档(开头为.的文件)一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据(常用)

cd (切换目录)

cd [相对路径或绝对路径]

  • / 根目录
  • ~ 家目录
  • . 当前目录
  • .. 上级目录

pwd (显示目前所在的目录)

[root@www ~]# pwd [-P]

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

mkdir (创建新目录)

mkdir [-mp] 目录名称

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来

rmdir (删除空的目录)

rmdir [-p] 目录名称

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

cp (拷贝文件或目录)

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) [root@www ~]# cp [options] source1 source2 source3 …. directory

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

rm (移除文件或目录)

rm [-fir] 文件或目录

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

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

[root@www ~]# mv [-fiu] source destination [root@www ~]# mv [options] source1 source2 source3 …. directory

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

文件内容查看

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

cat [-AbEnTv]

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

tac 文件内容从最后一行倒序显示,与 cat 正好相反

nl 显示行号

nl [-bnw] 文件

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

more 一页一页翻动

在 more 程序运行过程中,可以做下面操作

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

less 一页一页翻动

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

head 取出文件前面几行

head [-n number] 文件

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

tail 取出文件后面几行

tail [-n number] 文件

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

常用光标跳转快捷键

  • ctrl+(←/←) : 单词之间跳转
  • ctrl+a : 跳转到行首
  • ctrl+e : 跳转到行末
  • ctrl+u : 删除光标前的命令
  • ctrl+k : 删除光标后的命令
  • ctrl+w : 删除当前单词
  • ctrl+d : 删除光标后的一个字符
  • ctrl+y : 撤销删除操作
  • ctrl+l : 清屏

vi/vim

vi 有三种基本的工作模式:

  • 命令模式(Command Mode)
  • 输入模式(Input Mode)
  • 底线命令模式(Last Line Mode)

命令模式

  • h 或 向左箭头键(←) 光标向左移动一个字符
  • j 或 向下箭头键(↓) 光标向下移动一个字符
  • k 或 向上箭头键(↑) 光标向上移动一个字符
  • l 或 向右箭头键(→) 光标向右移动一个字符

如果想要进行多次移动的话,例如向下移动 30 行,可以使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!

  • [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
  • [Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
  • [Ctrl] + [d] 屏幕『向下』移动半页
  • [Ctrl] + [u] 屏幕『向上』移动半页
  • + 光标移动到非空格符的下一行
  • - 光标移动到非空格符的上一行
  • n 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
  • n n 为数字。光标向下移动 n 行(常用)
  • H 光标移动到这个屏幕的最上方那一行的第一个字符
  • M 光标移动到这个屏幕的中央那一行的第一个字符
  • L 光标移动到这个屏幕的最下方那一行的第一个字符

以下 5 个移动光标操作可以与 d,y 配合,做删除复制操作

  • 0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
  • $ 或功能键[End] 移动到这一行的最后面字符处(常用)
  • G 移动到这个档案的最后一行(常用)
  • nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set * nu)
  • gg 移动到这个档案的第一行,相当于 1G 啊! (常用)

删除复制和粘贴([n]代表选填)

  • d0, d$, dG, d1G, dgg 删除当前到目标光标处或目标行
  • y0, y$, yG, y1G, ygg 复制当前到目标光标处或目标行
  • [n]dd 向下删除所在[及向下 n]行
  • [n]yy 向下复制所在[及向下 n]行
  • [n]x 向后删除一个或 n 个字符
  • [n]X 向前删除一个或 n 个字符
  • [n]p 将复制内容粘贴在下一行 1[n] 次
  • [n]P 将复制内容粘贴在上一行 1[n] 次
  • [n]J 将光标所在行与下一行的数据结合成同一行
  • [n]c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
  • [n]u 撤销操作
  • [n]Ctrl+r 回退操作
  • . 重复前一个操作或动作

命令模式切换到输入模式

进入输入模式(Insert mode)

  • i 从当前光标出输入
  • I 从当前所在行的第一个非空格符出开始输入
  • a 从当前光标所在的下一个字符处开始输入
  • A 从当前光标所在行的最后一个字符处开始输入
  • o 在当前光标所在行的下一行输入新的一行
  • O 在当前光标所在行的上一行输入新的一行

进入取代模式(Replace mode)

  • r 只会取代光标所在的那一个字符一次
  • R 会一直取代光标所在字符,直到按下 ESC 为止

退出输入模式

  • ESC 退出输入模式,回到命令模式

命令模式切换到底线命令模式的可用操作

  • :w 存盘
  • :q 离开 vi
  • :q! 强制离开不存盘
  • :wq 存盘后离开 vi
  • ZZ 若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开
  • :w[filename] 将编辑的数据储存成另一个档案(类似另存新档)
  • :r[filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
  • :n1,n2 w[filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
  • :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!

其他操作

  • :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
  • :set nonu 与 set nu 相反,为取消行号!

vi 批量添加注释

方法一 :块选择模式

批量注释:

Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。

取消注释:

Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。

方法二: 替换命令

批量注释。

使用下面命令在指定的行首添加注释。

使用名命令格式: :起始行号,结束行号s/^/注释符/g(注意冒号)。

取消注释:

使用名命令格式: :起始行号,结束行号s/^注释符//g(注意冒号)。

例子:

1、在 10 - 20 行添加 // 注释

:10,20s#^#//#g

2、在 10 - 20 行删除 // 注释

:10,20s#^//##g

3、在 10 - 20 行添加 # 注释

:10,20s/^/#/g

4、在 10 - 20 行删除 # 注释

:10,20s/#//g

参考链接