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