学习文章:《鸟哥的Linux私房菜》
• [Tab] 接在一串指令的第一个字的后面,则为命令补全;(按一下)
• [Tab] 接在一串指令的第二个字以后时,则为『档案补齐』 (按两下)
• [Ctrl]-c 按键----中断程序
• [Ctrl]-d 按键----exit
[Tab ][Tab] 输出全部指令
【【举例来说,打印的相关指令,鸟哥其实仅记得 lp (line print)而已。那我就由 man
lp 开始,去找相关的说明, 然后,再以 lp[tab][tab] 找到任何以 lp 为开头的指令,找到我认为可能有点相关的指令后, 再以man 去查询指令的用法man lp】】
• 将数据同步写入硬盘中的指令: sync (关机或重启前将未被更新的文件写入硬盘,只能root使用)
• 惯用的关机指令: shutdown
(shutdown -t 10『过10秒后关机』 shutdown -h now立刻关机 shutdown -h 20:25
shutdown -h +10 系统再过十分钟后自动关机)
• 重新开机,关机: reboot 立刻重新开机, halt, poweroff
- 绝对路径: 『一定由根目录 / 写起』例如: /usr/share/doc 这个目录
- 相对路径:『cd ../man』
• cd:变换目录 (change directory)
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录(返回)
~ 代表『目前使用者身份』所在的家目录
~account 代表 account 这个使用者的家目录
• pwd:显示目前的目录
pwd -P (不以连结文件的数据显示,而是显示正确的完整路径)
• mkdir:建立一个新的目录 (make directory)
mkdir -p test1/test2/test3/test4 # 加了这个 -p 的参数,可以自行帮您建立多层目录!
• rmdir:删除一个空的目录
rmdir test, rmdir -p test/testt1/test2/test3
- ll == ls -l :长数据串行列出,包含档案的属性等等数据;
- cp (复制档案或目录)
cp [-adfilprsu] 来源档(source) 目的檔(destination)
参数:
-a :相当于 -pdr 的意思;将档案的所有特性都一起复制过来(最强大)
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u :若 destination 比 source 旧才更新 destination !
[root@linux tmp]# cp ~/.bashrc bashrc 将家目录下的 .bashrc 复制到 /tmp 下,并更名为 bashrc
cp -a /var/log/wtmp wtmp2
•rm [-fir] 档案或目录 (移除档案或目录)
-f :就是 force 的意思,强制移除;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了
[root@linux tmp]# rm -rf test 删除一个不为空的目录(递归+强制删除)
• mv [-fiu] source destination (移动档案与目录,或更名)
mv [options] source1 source2 source3 .... directory
-f :force 强制的意思,强制直接移动而不询问;
-i :若目标档案 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在,且 source 比较新,才会更新 (update)
[root@linux tmp]# mv bashrc mvtest # 将某个档案移动到某个目录去
[root@linux tmp]# mv mvtest mvtest2 将刚刚的目录名称更名为 mvtest2
档案内容查阅:
• cat 由第一行开始显示档案内容
# cat [-AEnTv]
参数:
-A :相当于 -vET 的整合参数,可列出一些特殊字符~
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
[root@linux ~]# cat /etc/issue 检阅 /etc/issue 这个档案的内容
[root@linux ~]# cat -A /etc/xinetd.conf 将 /etc/xinetd.conf 的内容完整的显示出来(包含特殊字符)
• tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
• nl 显示的时候,顺道输出行号!
• more 一页一页的显示档案内容
[root@linux ~]# more /etc/man.config
空格键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字符串 :代表在这个显示的内容当中,向下搜寻『字符串』;/MANPATH
:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该档案内容。
• less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
空格键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字符串 :向下搜寻『字符串』的功能;
?字符串 :向上搜寻『字符串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
•head 只看头几行
[root@linux ~]# head [-n number] 档案
-n :后面接数字,代表显示几行的意思
[root@linux ~]# head /etc/man.config # 预设的情况中,显示前面十行
•tail 只看尾巴几行
[root@linux ~]# tail [-n number] 档案
tail -f 文件名 动态监控日志尾部
•od 以二进制的方式读取档案内容!非纯文字文件
- 档案类型:file filename 知道某个档案的基本数据,例如是属于 ASCII 或者是 data 档案
[root@linux ~]# file ~/.bashrc
档案的搜寻:
• which (寻找『执行档』) ##which 后面接的是『完整档名』
[root@linux ~]# which [-a] command
参数:
-a :将所有可以找到的指令均列出,而不止第一个被找到的指令名称
[root@linux ~]# which passwd
[root@linux ~]# which traceroute -a
• whereis (寻找特定档案)
[root@linux ~]# whereis [-bmsu] 档案或目录名
参数:
-b :只找 binary 的档案
-m :只找在说明文件 manual 路径下的档案
-s :只找 source 来源档案
-u :没有说明档的档案!
• locate
[root@linux ~]# locate filename 直接在后面输入『档案的部分名称』
忘记某个档案的完整档名时使用
• find
[root@linux ~]# find [PATH] [option] [action]
参数:
1. 与时间有关的参数:
-atime n :n 为数字,意义为在 n 天之前的『一天之内』被 access 过的档案;
-ctime n :n 为数字,意义为在 n 天之前的『一天之内』被 change 过状态的档案;
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被 modification 过的档案;
-newer file :file 为一个存在的档案,意思是说,只要档案比 file 还要新,
就会被列出来~
2. 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的账号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与账号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者账号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找档案的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案!
当您自行安装软件时,很可能该软件的属性当中并没有档案拥有者,
这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
3. 与档案权限及名称有关的参数:
-name filename:搜寻文件名称为 filename 的档案;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
还要大的档案,就是『 -size +50k 』
-type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f),
装置档案 (b, c), 目录 (d), 连结档 (l), socket (s),
及 FIFO (p) 等属性。
-perm mode :搜寻档案属性『刚好等于』 mode 的档案,这个 mode 为类似 chmod
的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻档案属性『必须要全部囊括 mode 的属性』的档案,举例来说,
我们要搜寻 -rwxr--r-- ,亦即 0744 的档案,使用 -perm -0744,
当一个档案的属性为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode :搜寻档案属性『包含任一 mode 的属性』的档案,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm +755 时,但一个档案属性为 -rw-------
也会被列出来,因为他有 -rw.... 的属性存在!
4. 额外可进行的动作:
-exec command :command 为其它指令,-exec 后面可再接额外的指令来处理搜寻到
的结果。
-print :将结果打印到屏幕上,这个动作是预设动作!
找出档名为 passwd 这个档案
[root@linux ~]# find / -name passwd
- vi文字编辑器
『 vi 档名』进入一般模式
按下 i 进入编辑模式,开始编辑文字;
按下 [ESC] 按钮回到一般模式;
一般模式 |
|
[Ctrl] + [f]
|
屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] |
屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
0 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
|
$ 移动到这一行的最后面字符处(常用) |
|
G 移动到这个档案的最后一行(常用) |
|
gg 移动到这个档案的第一行,相当于 1G 啊! (常用) |
|
/word 向光标之下寻找一个字符串名称为 word 的字符串 |
|
?word 向光标之上寻找一个字符串名称为 word 的字符串。 |
|
: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) 是否 需要取代!(常用) |
|
u 复原前一个动作。(常用) |
|
[Ctrl]+r 重做上一个动作。(常用) |
|
指令列命令模式 |
|
:w 将编辑的数据写入硬盘档案中(常用) |
|
:w! 若档案属性为『只读』时,强制写入该档案。不过,到底能不能写 入, 还是跟您对该档案的档案权限有关啊! |
|
:q 离开 vi (常用) |
|
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案 |
|
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
|
:e! 将档案还原到最原始的状态! |
|
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档) |
|
程序与资源管理
• 管理背景当中的工作: kill
[root@linux ~]# kill -signal %jobnumber
[root@linux ~]# kill -l
参数:
-l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
-1 :重新读取一次参数的设定档 (类似 reload);
-2 :代表与由键盘输入 [ctrl]-c 同样的动作;
-9 :立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作。与 -9 是不一样的。
[root@linux ~]# kill -9 {进程}
• ps
[root@linux ~]# ps aux 列出目前所有的正在内存当中的程序
[root@linux ~]# ps -lA 以完整的显示内容,显示出所有的程序
[root@linux ~]# ps axjf
参数:
-A :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
• netstat
[root@linux ~]# netstat -[atunlp]
参数:
-a :将目前系统上所有的联机、监听、Socket 数据都列出来
-t :列出 tcp 网络封包的数据
-u :列出 udp 网络封包的数据
-n :不已程序的服务名称,以埠号 (port number) 来显示;
-l :列出目前正在网络监听 (listen) 的服务;
-p :列出该网络服务的程序 PID
netstat -anp |grep 82查看82端口的使用情况,
netstat -nultp(此处不用加端口号) 该命令是查看当前所有已经使用的端口情况
通过指令ps -ef | grep java 可以查看进程
lsof -i:8080 当前登录用户端口的使用情况
ps aux 列出目前所有的正在内存当中的程序
kill -9 强制删除一个工作