Linux最常用指令及快捷键 Linux学习笔记
原文:http://blog.csdn.net/yanghongche/article/details/50827478
【摘自 鸟叔的私房菜】--转载请注明出处
本文仅简单记录有哪些常用命令,具体用法需要具体查询
常用基础指令:
bc:计算器
cal:日历
date:日期与时间
man:查询指令或者相关档案的用法 man page通常放在目录/usr/share/man下面
man page中常用快捷键:
【Page Down】:向下翻一页
【Page Up】:向下翻一页
【Home】:去到第一页
【End】:去到最后一页
n,N:利用/或?来搜寻字符串时,可以用n来继续下一个搜索(不论是/或?),利用N来进行反向搜索
q:结束这次的man page
man page中常用命令:
/string:向下搜索string这个字符串
?string:向上搜索string这个字符串
info:在线查询指令或者相关档案的用法,与man不同的是,info page将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写,并且在各个页面中还有类似网页的超链接来跳转到各不同的页面中,每个独立的页面也被成为一个节点。所以可以将info page想成是文本模式的网页显示数据 info page默认放置在目录 /usr/share/info/ 下面
info page中常用快捷键:
【space】:向下翻一页
【Page Down】:向下翻一页
【Page Up】:向上翻一页
【tab】:在node之间移动,有node的地方,通常会以*显示
【Enter】:当光标在node上面时,按下Enter可以进入该node
b:移动光标到该info画面当中的第一个node处
e:移动光标到该info画面当中的最后一个node处
n:前往下一个node处
p:前往上一个node处
u:向上移动一层
s(/):在info page当中进行搜索
h:显示求助选单
?:指令一览表
q:结束这次的infp page
whatis:man的简略写法,试用钱需要建立whatis数据库-->[[email protected] ~]#makewhatis
who:查看目前有谁在线(Linux的每个程序或者说是服务是在后台执行的,因此看不到屏幕背后其实有可能有相当多人同时在主机上面工作)
netstat -a:查看网络的联机状态
ps -aux:查看后台执行的程序
shutdown:给在线使用者一些时间来结束他们的工作
几个与开机/重启相关的指令
sync:将数据同步写入硬盘中的指令,这个指令在系统关机或重新启动之前,很重要!最好多执行几次
shutdown:惯用的关机指令
自由选择关机模式:是要关机、重新启动或进入单人操作模式均可
设定关机时间:可以设定成现在立刻关机,也可以设定某一个特定的时间才关机
自定义关机讯息:在关机之前,可以将自己设定的讯息传送给在线user
仅发出警告讯息:有时可能要进行一些测试,而不想让其他的使用者干扰,或者是明白的告诉使用者某段时间要注意一下!可以使用shutdown来吓一吓使用者,单却不是真的要关机啦!
选择是否要fsck检查文件系统
-t sec:-t后面加秒数,过几秒后关机的意思(我尝试后发现这个时间不是秒数)
-k:不要真的关机,只是发出警告讯息
-r:在将系统的服务停掉之后就重新启动(常用)
-h:将系统的服务停掉后,立即关机(常用)
-n:不经过init程序,直接以shutdown的功能来关机
-f:关机并开机之后,强制略过fsck的磁盘检查
-F:系统重新启动之后,强制进行fsck的磁盘检查
-c:取消已经在进行的shutdown指令内容
例子:
[[email protected] ~]#/sbin/shutdown -h 10 ‘I will shutdown after 10 mins‘ 告诉大家这部机器会在十分钟后关闭,并且会显示在目前登陆者的屏幕前方
时间参数务必加入指令中,柔则shutdown会自动跳到run-level1(单人维护的登录情况),这样就伤脑筋了
[[email protected] ~]#shutdown -h now 立刻关机,now相当于时间为0的状态
[[email protected] ~]#shutdown -h 20:25 系统在今天的20:25分会关机,若在21:25才下达此指令,则隔天才关机
[[email protected] ~]#shutdown -h +10 系统再过十分钟后自动关机
[[email protected] ~]#shutdown -r now 系统立刻重新启动
[[email protected] ~]#shutdown -r +30 ‘This system will reboot‘ 显示后面的讯息给所有在线的使用者
[[email protected] ~]#shutdown -k now ‘This system will reboot‘ 仅发出警告信件的参数!系统并不会关机!吓唬人!
reboot,halt, poweroff:重新启动,关机 这些关机指令均已在关机前进行了sync这个工具的呼叫,不过多做几次总是比较放心点
[ ls ]: ls -al .bashrc* 查看文件名包含.bashrc的所有文件的详细信息
ls -ald testing testing/testing
drwxr--r-- 2 root root 4096 Sep 19 16:01 testing
-rw------- 1 root root 0 Sep 19 16:01 testing/testing
[ mkdir ]:建立新目录 [[email protected] tmp]#mkdir testing
[ touch ]:建立空档案 [[email protected] tmp]#touch testing/testing
[ su ]:切换用户身份 [[email protected] tmp]#su - myname
[ cat ]:将档案内容读出来 [[email protected] tmp]#cat .bashrc
[ cat ]:由第一行开始显示档案内容
[ tac ]:从最后一行开始显示,可以看出tac是cat的倒着写
[ nl ]:显示的时候,顺道输出行号
[ more ]:一页一页的显示档案的内容
[ less ]:与more类似,但是可以往前翻页
[ head ]:只看头几行
[ tail ]:只看尾巴几行
[ od ]:以二进制的方式读取档案内容
[ ll ]:相当于ls -l 是被做出来的一个命令别名
[ touch ]:变更档案的时间 即使我们复制一个档案时,复制所有的属性,也没有办法复制ctime这个属性,ctime可以记录这个档案最近的状态被改变的时间。touch最常被使用的情况是:1. 建立一个空的档案 2. 将某个档案日期修订为目前(mtime 与 atime)
[ chattr ]:设定其他的系统隐藏属性
[ lsattr ]:查看其他的系统隐藏属性
[ umask ]:档案预设权限 指定目前用户在建立档案或目录时候的权限默认值
常用快捷键:
【tab】【tab】:接在一串挃令的第一个字的后面,则为命令补全 接在一串指令的第二个字以后时,则为『档案补齐』
【Ctrl】-c:将正在运作中的指令中断,如耗费时间较长的查询指令正在运作中,中断起继续查询
【Ctrl】-d:键盘输入结束 也可以用来取代命令exit
Tips:
1. 常用软件的说明文档所在位置:/usr/share/doc 需要多多查阅这个目录来了解各个软件的版本信息
2.
? 在文字接口下,有任何你丌知道的挃令戒文件格式这种玩意儿,但是你想要了览他,请赶忚使用
man 戒者是 info 来查询!
? 而如果你想要架讴一些其他的朋务,戒想要利用一整组软件来达成某项功能时,请赶忚到
/usr/share/doc 底下查一查有没有该朋务的说明档喔!
? 另外,再次的强调,因为 Linux 毕竟是外国人发明的,所以中文文件确实是比较少的! 但是丌
要害怕,拿本英文字典在身边吧!随时查阅!丌要害怕英文喔!
3. 通常shutdown和reboot比较常用,通信启动时,会下达如下指令: [[email protected] ~]#sync;sync;sync;reboot
4. Linux共有七种执行等级,
run level 0:关机
run level 3:纯文本模式
run level 5:含有图形接口模式
run level 6:重新启动
使用init指令来进行各个模式间的切换 [[email protected] ~]#init 0 关机
5. 所有系统上的账号与一般身份使用者,还有root的相关信息,都是记录在/etc/passwd这个档案内
6. 个人密码记录在/etc/shadow 这个档案下
7. Linux所有组名都记录在/etc/group内 以上三个档案是Linux系统里面账号、密码、群组信息的集中地,不能随便删除这三个档案
8. 隐藏文件-----文件名第一个字符为 . 的档案
9. ls -al列出的档案信息意义依次为:
1. 档案类型权限:这一栏共有十个字符 dr-wxr-xr-x -rw-r--r--
第一个字符:代表档案是 目录、档案或链接文件等等
[ d ] 目录 例如 .gconf
[ - ] 档案 例如 install.log
[ l ] 连结档(link file)
[ b ] 装置文件里面的可供储存的接口设备(可随机存取装置)
[ c ] 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
剩下的字符:三个为一组,且均为 rwx 的三个参数的组合。 [ r ] 代表刻度( read ), [ w ] 代表可写( write ),[ x ] 代表可执行(execute),这三个权限的位置不会改变,若没有权限,就会出现减号[ - ]
第一组:档案拥有者的权限
第二组:同群组的权限
第三组:其他非本群组的权限
2. 第二栏表示有多少档名链接到此节点(i-node)
3. 第三栏表示这个档案(或目录)的拥有者账号
4. 第四栏表示这个档案的所属群组
5. 第五栏为这个档案的容量大小,默认单位为bytes
6. 第六栏为这个档案的建档日期或者是最近的修改日期 若档案被修改的时间距离现在太久,那么时间部分会仅显示年份
7. 第七栏为这个档案的档名 如果档名之前多一个 . ,则代表这个档案为 隐藏档
10. 如果在纯文本的终端机模式中出现乱码,可以尝试用 LANG=en_US 来修改语言
11. 想让系统默认语言变成英文的话,可以修改系统配置文件 /etc/sysconfig/i18n,利用nano来修改该档案的内容,使LANG这个变量成为上述的内容即可
文本编辑器:
nano:
超简单文本编辑器
vi:
vim:
打包工具:
gunzip
tar
技术点:
1. 任何一个档案(文件)都具有 User, Group, Others 三种身份的个别权限 但是 root 是万能的 使用者身份与该使用者所支持的群组概念,在Linux的世界里面是相当重要的,它可以让多任务Linux环境变得更容易管理
1. 使用者
档案拥有者 把档案设定成只有档案拥有者,就是我,才能看与修改这个档案的内容
2. 群组
3. 其他人
2. 改变文件属性与权限
chgrp:改变档案所属群组 要被改变的组名必须要在/etc/group 档案内存在才行 [[email protected] ~]#chgrp users install.log
chown:改变档案拥有者 用户必须是已存在系统中的账号,也就是在/etc/passwd这个档案中有记录的用户名称才能改变
还可以顺便修改群组的名称 [[email protected] ~]#chown bin install.log 将install.log的拥有者改为bin这个账号
[[email protected] ~]#chown root:root install.log 将install.log的拥有者与群组改回为root
[[email protected] ~]#chown .sshd install.log 单纯的修改所属群组
chmod:改变档案的权限,SUID,SGID,SBIT 等等的特性
3. 什么时候使用chown和chgrp?
复制行为(cp)会复制执行者的属性与权限,[[email protected] ~]#cp 来源档案 目标档案 如果原档案是-rw-r--r--,则目标档案需要改为用户可以使用的权限 -rw-rw-rw-
4. 只有 r 确实可以让用户读取目录的文件名列表,不过详细的信息却还是读不到的,同时也不能将该目录编程工作目录(用 cd 进入该目录之意)
5. 档案种类:
1. 正规档案(regular file) (-) 例如:[-rwxrwxrwx ]
纯文本档案(ASCII):
是Linux系统中最多的一种文件类型,内容为我们可以直接读到的数据,例如数字、字母等等。几乎只要可以用来作为设定的档案都属于这一种文件类型。 [[email protected] ~]#cat ~/.bashrc 将档案内容读出来
二进制文件(binary):
我们的系统其实仅认识且可以执行二进制文件,Linux当中的可执行文件就是这种格式(scripts,文字型批处理文件不算)。指令 cat 就是一个 binary file
数据格式文件(data):
有些程序在运行的过程中会读取某些特定格式的档案,那些特定格式的档案就被称为数据文件(data file)。举例来说,我们的Linux在使用者登录时,都会讲登录的数据记录在/var/log/wtmp那个档案内,该档案是一个 data file,他能够透过 last 这个挃令读出来! 但是使用 cat 时,会读出乱码~因为他是属二一种特殊格式的档案。
2. 目录(directory)
3. 链接档(link)
就是类似 Windows 系统底下的快捷方式啦! 第一个属性为 [ l ](英文 L 的小写),例如[lrwxrwxrwx] ;
4. 设备与装置文件(device)
与系统周边及储存等相关的一些档案,通常都集中在/dev这个目录下
区块(block)设备档:
就是一些储存数据,以提供系统随机存取的接口设备,硬盘与软盘就是啦。可以随机在硬盘的不同区块读写。 查看/dev/sda 第一个属性为[ b ]
字符(character)设备文件:
是一些穿行端口的接口设备,例如键盘、鼠标等等。这些设备的特色是一次性读取,,不能够截断输出。距离来说,不可能让鼠标跳到另一个画面,而是滑动到另一个地方。第一个属性为 [ c ]
5. 资料接口文件(sockets)
这种类型的文件都被用在网络上的数据承接。可以启动一个程序来监听客户端的要求,而客户端可以透过这个socket来进行数据的沟通。第一个属性为 [ s ],最长在/var/run 这个目录中看到这种文件
6. 数据传送文件(FIFO, pipe)
FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个档案所造成的错误问题。FIFO 是 first-in--first-out 的缩写。第一个属性为 [ p ]
6. 在默认权限的属性上,目录与档案是不一样的。x 权限对于目录是非常重要的,但是一般档案的建立则不应该有执行的权限,因为一般档案通常是用在于数据的记录。
1. 若使用者建立为 档案 则预设 没有可执行(x)权限,亦即只有 rw 这两个项目,也就是最大为 666 分,预设权限为:-rw-rw-rw-
2. 若用户建立为 目录,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即777:drwxrwxrwx
7. 档案隐藏属性
=====================================================================================
程序编写相关
1. vim常用指令
2. 区块选择 p是paste粘贴
3. 多档案编辑 vim后跟多个文件名 4yy复制4行
4. 多窗口功能 ctrl+f(相当于pageup) ctrl+b(相当于pagedown)
方法: :sp filename
5. vim环境设定与记录:环境设定档案~/.vimrc 记录动作的档案是~/.viminfo
整体的档案是在/etc/vimrc下,单不建议修改它,可以修改~/.vimrc这个档案
6. dos2unix unix2dos DOS与Linux断行字符不同,用cat -A 来观以DOS(Windows系统)建立的档案的特殊格式,发现DOS使用的断行字符为 ^M&,我们称为CR与LF两个符号,而在Linux底下,则仅有LF($)这个断行符号。这个断行符对于Linux的影响很大。在Linux底下的指令在开始执行时,判断依据是Enter,而Linux的Enter为LF符号,由于DOS的断行符号是CRLF,也就多了一个^M的符号出来,在这样的情况下,如果是一个shell script的程序档案,将可能造成程序无法执行状态
7. 语系编码 big5和utf8 使用 iconv 进行互转 这个指令支持的语系非常多,除了正体中文的big5,utf8编码之外,也支持简体中文的gb2312。如果将正体中文的utf8转成简体中文的utf8编码时,就得费些功夫了,举例来说,如果将刚刚那个 vi.utf8 转成简体的 utf8 时,可以这样做:
[[email protected] vitest]# iconv -f utf8 -t big5 vi.utf8 | \
> iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8
8.
9. 系统的合法shell 与 /etc/shells:系统上合法shell要写入/etc/shells这个档案,系统某些服务在运作过程中,会去检查使用者能够使用的shells,而这些shell的查询就藉由 /etc/shells 这个档案
10. Bash shell 的功能 /bin/bash 是Linux预设的shell
1. 命令编修能力(history) 记忆使用过的指令 记录在~/.bash_history中,记录前一次登录以前所执行过的指令,这一次登录所执行的指令都被暂存在内存中,当成功的注销系统后,该指令记忆才会记录到.bash_history中
2. 命令与档案补全功能(tab 按键) 在一串指令的第一个字的后面,则为命令补全 在一串指令的第二个字以后,则为档案补全
3. 命令别名设定功能(alias) alial lm=‘ls -al‘
4. 工作控制、前景背景控制 使用前景、背景的控制可以让工作进行的更为顺利。至于工作控制的用途则更广,可以随时将工作丢到背景中执行,不怕不小心使用了ctrl+c来停掉程序,也可以在单一登录的环境中,达到多任务的目的。
5 .程序化脚本(shell scripts)
6. 通配符(Wildcard) 除了完整的字符串之外,bash还支持许多的通配符来帮助用户查询与指令下达,例如 ls -l /usr/bin/X* 查询以X为开头的档案
11. Bash shell的内建命令 type 判断指令是来自于外部或是内建在bash当中的
利用type搜寻后面的名称时,如果后面接的名称并不能以执行档的状态被找到,那么该名称是不会被显示出来的,也就是说,type主要在找出执行档而不是一般档案名。所以type也可以用来作为类似which指令的用途,找指令用的。
12. 指令的下达
当我们顺利的在终端机(tty)上面登入后,Linux就会依据/etc/passwd档案的设定给我们一个shell(预设是bash)
13. Shell的变量功能 Linux是多人多任务的环境,每个人登入系统都能取得一个bash,每个人都能够使用bash下达mail这个指令来收受自己的邮件,问题是,bash是如何得知你的邮件信箱是哪个档案?这就需要变量的帮助了。
14. 影响bash环境操作的变量 PATH、HOME、MAIL、SHELL等等,为区别与自定义变量的不同,环境变量通常以大写字符来表示
15. 脚本程序(shell script)的好帮手
16. 变量的取用与设定 echo $HOME
变量的设定规则
1. 变量与变量内容以一个等号 = 来链接 myname=VBirt
2. 等号两边不能直接接空格符 例如:myname = VBird myname=VBirt Tsai 错误
3. 变量名称只能是英文字母与数字,但是开头字符不能是数字,例如: 2myname=VBird 错误
4. 变量内容若有空格符可使用双引号或单引号将变量内容结合起来
双引号内的特殊字符如 $ 等,可以保持原有的特性,如: var="lang is &LANG" 则 echo $var可得 lang is en_US
单引号内的特殊字符则仅为一般字符(纯文本),如:var=‘lang is $LANG‘ 则 echo $var 可得 lang is $LANG
5. 可用转换符 \ 将特殊符号(如 Enter $ \ 空格符 ‘ 等)变成一般字符
6. 在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号 `指令` 或 $指令。例如:想要取得核心版本的设定 version=$(uname -r) 再 echo $version 可得 2.6.18-128.el5
7. 若该变量为扩增变量内容时,则可用 "$变量名称" 或 $(变量) 累加内容,如: PATH="$PATH":/home/bin
8. 若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量,如:export PATH
9. 通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断
10. 取消变量的方法为使用unset,如: unset myname
17. 子程序?在目前这个shell的情况下,区启动另一个新的shell,新的shell就是子程序啦。一般情况下,父程序的自定义变量是无法在子程序内使用的。但是通过export将变量变成环境变量后,就能够在子程序底下应用了。
例如:进入到目前核心的模块目录
[[email protected] ~]#cd /lib/modules/`uname -r`/kernel
[[email protected] ~]#cd /lib/modules/$(uname -r)/kernel