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语法不尽相同,功能相似.算是殊途同归)
- Bourne SHell (sh)
- C SHell(在 Sun 里头预设的)
- K SHell(商业上常用)
- TCSH 等等 TCSH编程入门
- 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*