linux 常用指令

niaoge.html

Linux常用指令

来自《鸟哥的linux私房菜》,用于个人回忆


查看目录下文件:

ls

参数 功能
-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来~
-A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~
-d :仅列出目录本身,而不是列出目录内的档案数据
-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)
-F :根据档案、目录等信息,给予附加数据结构, 例如:*:代表可执行档; /:代表目录; =:代表 socket 档案; “\”:代表 FIFO 档案;
-h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i :列出 inode 位置,而非列出档案属性;
-l :长数据串行出,包含档案的属性等等数据;
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID 与 GID 会在账号管理提到!)
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
-R :连同子目录内容一起列出来;
-S :以档案容量大小排序!
-t :依时间排序
--color=never :不要依据档案特性给予颜色显示;
--color=always :显示颜色
--color=auto :让系统自行依据设定来判断是否给予颜色
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime)而非内容变更时间 (modification time)

当然 以上参数可组合,例如感觉宝宝萌萌的对不对呀_

ls -al
ls -alF --color=never
ls -al --full-time

ll(two lower-case of L) == ls -l

复制文件:

cp file.xxx newfile.xxx

详见《鸟哥》cp 标签页

指令 功能
-a :相当于 -pdr 的意思;
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u :若 destination 比 source 旧才更新 destination !

example:

1). cp ~/xxx.c xxx.cpp (复制家目录下的xxx.c文件到当前文件夹,并改其名为xxx.cpp)
2). cp -a ...(复制属性)
3). cp -r ...(复制整个目录)
4). cp -s/-l ...(建立快捷方式) -s:指出链接方向
5). cp -u ...(只复制有差异的地方)

删除文件:

rm file.xxx

参数 功能
-f :就是 force 的意思,强制移除;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了

移动文件:

mv —

参数 功能
-f :force 强制的意思,强制直接移动而不询问;
-i :若目标档案 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在,且 source 比较新,才会更新 (update)

mv old_name new_name(可以实现重命名的功能)
rename man

创建新文件夹:

mkdir floder_name

mkdir -p test/test1/test2/…(创建多级目录)
mkdir -m 711 trstx (设置文件权限,若不加-m 系统自动设置为当下用户权限)
rmdir (-p) floder_name (删除文件夹仅能删除空目录,加-p可删除多级空目录)
rmdir -rf floder_name (删除文件夹及其下文件)

改变群组、所有者、权限:

chgrp group_name file.xxx /etc/group

chown own_name:group_name file.xxx //同时改变所有者与群组,可添加 -R 递归更改 /etc/passwd

chmod 777 file.xxx
详见《鸟哥》-> Bookmarks -> chmod

切换身份:

su user_name

注意:在root下使用该指令,然后 >exit 会返回root!!!

切换目录

操作 释义
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表『目前使用者身份』所在的家目录
~account 代表 account 这个使用者的家目录

显示当前目录

pwd (-p)

PATH

echo PATH()PATH="PATH”:/catolog/… (添加路径)

压缩/解压

tar -cvf file.tar /floder 只打包不压缩

c:create建立打包 file.tar 为打包后的名字 /floder 为将要打包的文件/夹

tar -zcvf …. 打包并以gzip方式压缩

tar -jcvf …. 打包并以bzip2方式压缩

解压的时候将 c 换成 x即可!

另:『 tar 用来作备份是很重要的指令! 』而由于 tar 整合过后的档案我们通常会取名为 .tar ,而如果还含有 gzip 的压缩属性,那么就取名为 .tar.gz 啰!取这个文件名只是为了方便我们记忆这个档案是什么属性罢了!并没有实际的意义在!
但为了好区分,还是输后缀吧!

Vim/Vi 命令

一般模式: 移动光标的方法
命令 释义
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 个字符距离。
0 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行
M 光标移动到这个屏幕的中央那一行
L 光标移动到这个屏幕的最下方那一行
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n n 为数字。光标向下移动 n 行(常用)
一般模式: 搜寻与取代
/word 向光标之下寻找一个字符串名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表『重复前一个搜寻的动作』的意思。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为word2 !(常用)
:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为word2 !且在取代前显示提示字符给使用者确认 (conform) 是否需要取代!(常用)
一般模式: 删除、复制与贴上
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10个字符, 『10x』。
dd 删除游标所在的那一整列(常用)
ndd n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列(常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)
y1G 复制光标所在列到第一列的所有数据
yG 复制光标所在列到最后一列的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在列与下一列的数据结合成同一列
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,您的编辑,嘿嘿!很快乐的啦!
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果您想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
进入编辑模式
i, I 插入:在目前的光标所在处插入输入之文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)
a, A a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)
o, O 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行! (常用)
r, R 取代:r 会取代光标所在的那一个字符;R 会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『—INSERT—』或『—REPLACE—』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT/REPLACE 才能输入喔!
Esc 退出编辑模式,回到一般模式中(常用)
指令列命令模式
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若档案属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟您对该档案的档案权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
:e! 将档案还原到最原始的状态!
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 相反,为取消行号!
Vim额外功能
区块选择(Visual Block)
v 字符选择,会将光标经过的地方反白选择!
V 行选择,会将光标经过的行反白选择!
[Ctrl]+v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的地方删除掉
多档案编辑的按键
:n 编辑下一个档案
:N 编辑上一个档案
:files 列出目前这个 vim 的开启的所有档案
多窗口情况下的按键功能
:sp [filename] 开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。
[ctrl]+wj 按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j ,则光标可移动到下方的窗口。
[ctrl]+wk 同上,不过光标移动到上面的窗口。
[ctrl]+wq 其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+wj 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+wq 啊!

Vim环境设定参数

设定 释义
:set nu 还记得这个吧?!就是设定行号啊!取消的话,就是 :set nonu
:set hlsearch 这个就是设定是否将搜寻的字符串反白的设定值。 默认值就是hlsearch ,如果不想要反白,就 :set nohlsearch 。
:set autoindent 是否自动缩排?autoindent 就是自动缩排, 不想要缩排就 :setnoautoindent 。
:set backup 是否自动储存备份档?一般是 nobackup 的, 如果设定 backup 的话,那么当你更动任何一个档案时,则源文件会被另存成一个档名为filename~ 的档案。 举例来说,我们编辑 hosts ,设定 :setbackup ,那么当更动 hosts 时,在同目录下,就会产生 hosts~ 文件名的档案,记录原始的 hosts 档案内容~
:set ruler 还记得我们提到的右下角的一些状态列说明吗? 这个 ruler 就是在显示或不显示该设定值的啦!
:set showmode 这个则是,是否要显示 —INSERT— 之类的字眼在左下角的状态列。
:set backspace=(012) 一般来说, 如果我们按下 i 进入编辑模式后,可以利用退格键(backspace) 来删除任意字符的。 但是,某些 distribution 则不许如此。此时,我们就可以透过 backspace 来设定啰~ 当backspace 为 2 时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存在的文字了!
:set all 显示目前所有的环境参数设定值。
:syntax (off/on) 是否依据程序相关语法显示不同颜色? 举例来说,在编辑一个纯文字文件时,如果开头是以 # 开始,那么该行就会变成蓝色。 如果您懂得写程序,那么这个 :syntax on 还会主动的帮您除错呢!但是,如果您仅是编写纯文本文件,要避免颜色对您的屏幕产生的干扰,则可以取消这个设定 :syntax off 。

Shell

什么是Shell

一句话:Shell可以沟通kernel(内核)操控硬件进行工作.所以Shell大概就相当于语言.

为什么学习Shell

X Window 的接口虽然亲善,功能虽然强大,而 web 接口的工具也可以提供我们很友善的服务,但是毕竟他是将所有利用到的套件都整合在一起的一个套件而已,并非是一个完整的套件,所以某些时候当你升级或者是使用其它套件管理模块( 例如 tarball 而非 rpm档案等等 )时,就会造成设定的困扰了。

此外,远程联机时,文字接口的传输速度一定比较快, 而且,较不容易出现断线或者是信息外流的问题,因此, shell 真的是得学习的一项工具。而且,他可以让您更深入 Linux ,更了解他, 而不是只会按一按鼠标而已!所谓『天助自助者!』多摸一点文字模式的东西,会让你与 Linux 更亲近呢!

Shell类型

大概有一下几种.(不同Shell语法不尽相同,功能相似.算是殊途同归)

  1. Bourne SHell (sh)
  2. C SHell(在 Sun 里头预设的)
  3. K SHell(商业上常用)
  4. TCSH 等等 TCSH编程入门
  5. Bash(Bourne Again SHell):Bourne Shell 的增强版本,Linux所用Shell教程

Shell所在文件夹 /etc/shells
通过一下指令查看:

$ cd //etc/
$ cat -n shell

得到

1 # /etc/shells: valid login shells
2 /bin/sh
3 /bin/dash
4 /bin/bash
5 /bin/rbash

Bash的功能

1. 命令编修能力(类似 DOS 的 doskey 功能)

记录曾经使用过的指令,存于 ~/.bash_history 文件中
在terminal内 按PgUP(上)/PgDn(下)键 选择最近使用过得指令

2. 命令与档案补全功能:

[Tab]键

• [Tab] 接在一串指令的第一个字的后面,则为命令补全;
• [Tab] 接在一串指令的第二个字以后时,则为『档案补齐』
• [Tab][Tab](两次Tab) 输出所有的可执行指令了

3. 命令别名(alias)设定功能:
设置命令简写
查看目前存在简写

$ alias

自定义简写

alias lm=’ls -al’

4. 工作控制(jobs)、前景背景控制:

[Ctrl] + c 来停掉该程序!
待续

5. Shell scripts 的强大功能:

待续

6. 万用字符!
显示当前目录下所有以 sh 开头的档案/文件/文件夹

$ ll sh*

posted @ 2016-11-16 00:15  屋中人  阅读(341)  评论(0编辑  收藏  举报
返回顶部