基本命令
1、用户
1、 root :超级用户
2、 普通用户(生产环境一般使用普通用户)
2、终端terminal
1、 设备终端 :鼠标、显示器
2、 物理终端 (/dev/console):
1. 控制台
3、 虚拟终端(tty:teletypewriters,/dev/tty# #为[1-6])
1. Tty 可以有n个,ctrl+alt+F[1-6]
4、 图形终端(/dev/tty7) startx, xwindows
1. Centos 6 :ctrl
+Alt+F[1-6]
2. Centos 7
:在哪个终端启动,即位于哪个虚拟终端
5、 串行端口(/dev/ttyS#)
ttys
6、 伪终端(pty:pseudo-tty,/dev/pts/#)
pts ,ssh 远程连接
7、 查看当前的终端设备:tty
8、 应用程序—附件—终端:
1、 支持多个“标签”shell的图形化终端模拟器
3、 Ctrl+shift+q :关闭当前窗口
4、 Ctrl+shift+t :创建一个标签页
5、 Ctrl+shift+w :关闭一个标签页
6、 Ctrl+pgup/pgdn :切换上一个/前一个标签页
7、 Ctrl+shift+c :复制选中的文本
8、 Ctrl+shift+v :把文本粘贴到当前光标处
3、交互式接口:启动终端后,在终端设备附加一个交互式应用程序
1、 GUI : Graphic User Interface
i. X protocol, window manager ,desktop
ii. Desktop: GNOME(C ,图形库gtk);
iii. KDE (C++,图形库qt);
iv. XFCE(轻量级桌面)
2、 CLI:Command
Line Interface
Shell 程序:sh (bourn) csh tcsh ksh
4、Shell 是Linux 系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
shell 也被称为LINUX 的命令解释器(command interpreter )
shell 是一种高级程序设计语言
5、GNU Bourne-Again Shell(bash) 是GNU 计划中重要的工
具软件之一,目前也是 Linux 标准的shell ,与sh 兼容
6、查看当前使用的shell:echo ${SHELL}
7、显示当前系统使用的所有的shell : cat
/etc/shells
8、查看系统变量:env 或 export
9、~ :代表家目录
# :代表超级目录
$ :代表普通用户
10、显示提示符格式: echo $PS1
修改命令提示符 :PS1=”[\u@\h \w]\\$”
PS1=”\[\e[31m\][\u@\h \w]\\$\[\e[0m\]”
\e : \033 \u:当前用户 \h:主机名简称 \H:主机名
\w :当前工作目录 \W:当前工作目录基名 \t :24小时时间格式
\T:12小时时间格式 \!:命令历史数 \# :开机后命令历史数
11、shell命令分两种:
一种是内部命令 :由内核直接提供
Help: 内部命令列表
Enable -n command 禁用内部命令
Enable -n 查看所有禁用的内部命令
一种是外部命令 :由系统上的某个二进制文件提供
查看路径 :which -a | –skip—alias command
Whereis command
区别指定的命令是内部还是外部命令:
type command
12、hash :hash缓存表
系统初始hash 表为空,当外部命令执行时,默认会从PATH路
径下寻找该命令,找到后会将这条命令的路径记录到hash表
中,当再次使用该命令时,shell 解释器首先会查看hash 表,
存在将执行之,如果不存在,将会去PATH 路径下寻找。利用
hash缓存表可大大提高命令的调用速率
hash:会显示最近执行的命令
hash –l:显示hash缓存,可作为输入使用
hash –t command:显示命令的路径
hash -r :清除缓存
13、alias :查询系统中已经存在的别名
别名前加\ :代表执行其实的命令;单引号也可以;或直接在命令的路径下调用
“\COMMAND”
’COMMAND’
/PATH/COMMAND
alias name =”name1” 仅在当前shell下有效
当前用户 :~/.bashrc 所有用户:/etc/bashrc
取消别名 :unalias name
16、Enable command 可以启用命令,只对内部命令有效, Enable -n command 禁用内部命令
Enable -n 查看所有禁用的内部命令
17、pwd :显示当前目录
18、command [options] [argyments]
选项:用于启用或者关闭命令的某个或某些功能
短选项:-c 例如 :-l ,-h
长选项:–word ,例如 :–all ,–human—readable
参数 :命令的作用对象,比如文件名,用户名等
注意:多选项,以及多参数和命令之间使用空白字符分隔
取消和结束多个命令的执行:ctrl+c ;ctrl+d
\ :一个命令可以用\分成多行
; 多个命令可以用分号分开
19、date :显示日期和时间
Linux的两种时钟:系统时钟:由linux内核通过CPU的工作频率进行的
硬件时钟:主板
Hwclock ,clock :显示硬件时钟
-s ,–hctosys 以硬件时钟为准
-w ,–sysytohc 以系统时间为准
时区:/etc/localtime
Date –s :修改系统时间
Date –d :指定具体时间
(两天前星期几)
Date +%F : 当前时间
Date +%Y:年 m:月 d:日 H:时 M:分 S:秒
Date –date=”3 days ago”
反引号“ :将命令执行结果作为输出 双引号 、单引号:字符串输出
Cal :显示日历 cal -y :显示全年日历
20、bc :命令行的计算器
21、nano:文本编辑器
22、half 、poweroff :关机
Reboot : -f 强制,但不调用shutdown
-p 切断电源
Shutdown :关机或重启
-r :reboot
-h :half
-c :取消
Time :now :立刻关机
+m :相当时间表示法,多久之后
Hh:mm :绝对时间表示,指明具体时间
Init 0 :关机
6 :重启
23、用户登录信息命令
Whoami :查看当前有效登录用户
Who :系统当前所有的登录会话
W :显示所有登录的用户以及连接
24、screen :屏幕
Screen -s name :开启一个会话
Screen -x name :加入一个会话
Ctrl + a + d : 退出
Screen -r :恢复刚刚的会话
Screen -ls :显示所有已经打开的screen会话
25、echo :显示字符
-E :默认 不支持 \ 解释功能
-n :不自动换行
-e :启用 \ 字符的解释功能
启用命令选项-e ,若字符串中出现以下字符,则特
别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\ 字符
\0nnn 插入nnn (八进制)所代表的ASCII 字符
echo -e
‘\033[43;31;5mmagedu\033[0m’
\xHH 插入HH (十六进制)所代表的ASCII字
显示变量: echo “$name” 变量会被替换,弱引用
Echo ‘$name’变量不会被替换,强引用
26、dirname :获取文件的目录名
Basename :获取问价你的基名
27、uname :功能说明:uname用来获取电脑和操作系统的相关信息
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
-m或–machine 显示主机的硬件(CPU)名
-n或-nodename 显示主机在网络节点上的名称或主机名称
-r或–release 显示linux操作系统内核版本号
-s或–sysname 显示linux内核名称
-v 显示显示操作系统是第几个 version 版本
-p 显示处理器类型或unknown
-i 显示硬件平台类型或unknown
-o 显示操作系统名
–help 获得帮助信息
–version 显示uname版本信息
28、查看系统版本 :cat /etc/redhat-release
29、env 、 export :查看系统默认的变量
30、hostname :显示当前系统的主机名 定义系统当前的主机名
仅仅对当前的环境生效
31、命令行扩展:$() 或 “(反引号) 把一个命令的输出打印给另一个命令的参数
32、打印重复字符串的简化形式
Echo file{1,3,5}
Echo {1..10}
Echo {a..z}
Echo {000..20..2}
33、命令补全
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜索以给定命令名命名的文件,第一次找到的命令即为要执行的命令
用户给定的字符串只有一条唯一对应的命令,直接补全,否则再次tab会给出列表
路径补全:把用户给出的字符串当作路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果唯一,则直接补全,否则再次tab给出列表
command 2Tab 所有命令行补全
string2Tab 以string 开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts 记录 (centos7 不支持)
=2Tab 相当于ls –A
34、命令行历史 :history
历史命令一般记录在 .bash_history 文件中
当前shell中的历史记录会被记录在内存,只有退出之后才会保存在 .bash_history
History 默认最多记录1000行
最后一个退出的会写在配置文件中
History -c :清空命令历史
-r :读取历史文件,附加到历史文件
-w :保存在历史列表到指定的历史文件
–p :展开历史参数成多行,但不保存到历史列表中
-s :展开历史参数成一行,附加到历史列表最后
-d offset :删除历史中指定的第offset个命令
$HISTSIZE :命令历史记录的条数
$HISTFILE :指定历史文件的存放位置
$HISTFILESIZE :命令历史文件记录的条数
HISTTIMEFORMAT=”%F %T”:显示每条命令的具体执行时间
HISTIGNORE=”str1:str2:…” 忽略string1,string2的历史
控制命令历史的记录方式: 环境变量 :HISTCONTROL
ignoredups :默认。忽略重复的命令,连续切相同为重复
ignorespace :忽略所有以空白开头的命令
ignoreboth :相当于ignoredups和ignorespace 的组合
erasedups : 删除重复命令
重复前一个命令,有4种方法:
重复前一个命令使用上方向键
按!!并回车执行
输入!-1并回车执行
按ctrl+p 并回车执行
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p :打印输出!$的内容
!*:p 打印输出!*(所有参数)的内容
^string 删除上一条命令中的string
^string1^string2将上一条命令中的第一个string1替换为string2
!!:gs/string1/string2 将上一条命令中所有的string1都替换为string2
Ctrl-r 在命令历史中搜索命令
Ctrl+g :从历史搜索模式退出
要重新调用前一个命令中的最后一个参数:
1、 !$
2、 ESC , .
(点击esc键后松开,然后点 . 键)
3、 ALT+.
(按住alt的同时点击.键)
command !^ :利用上一个命令的第一个参数值
command !$ :利用上一个参数的最后一个参数值
command !* :利用上一个命令的全部参数
command !:n :利用上一个命令的第n个参数
command !string:^ :从命令历史中搜索以string开头的命令,并获取它的第一个参
数
command !string:$ :从命令历史中搜索以string开头的命令,并获取它的最后一个参数
command !string:n :从命令历史中搜索以string开头的命令,并获取它的第n个参数
command !string:* :从命令历史中搜索以string开头的命令,并获取它的所有参数
35、快捷键:
ctrl+l : 相当于clear
ctrl+s :阻止屏幕输出,锁定
ctrl+q :允许屏幕输出
ctrl+c :终止命令
ctrl+z : 挂起命令
ctrl+a :光标移动到命令行首,相当于home
ctrl+e :光标移动到行尾 ,相当于end
ctrl+f :光标向右移动一个字符
ctrl+b :光标向左移动一个字符
alt+f :光标向右移动一个单词尾
alt+b :光标向左移动一个单词首
ctrl+xx :光标在命令行首和光标之间移动
ctrl+u :从光标处删除至命令行首
ctrl+k :从光标删除至命令行尾
ctrl+d :删除光标处的一个字符
ctrl+y :将删除的字符粘贴到光标后
alt+c :从光标处开始向右更改为首字母大写的单词
alt+u :从光标处开始向右更改为全部大写的字母
alt+l :从光标处更改为全部小写的单词
ctrl+t :交换光标处和之前的字符位置
alt+t :交换光标处和之前的单词位置
alt+N :提示输入指定字符后,重复显示该字符N次
36、变量的简单用法 :export 变量名=“值”
存放在 /etc/profile 或~/.bash_profile
37、whatis :显示命令的简短描述 ,跟man一样的帮助命令
使用前需要: makewhatis | mandb 制作数据库
38、命令帮助
1、内部命令帮助方法:help command
man command
2、外部命令帮助方法 : command –help
Man
command
Info command
程序自身的帮助文档
程序官方文档
发行版的官方文档
–help :显示用法总结和参数列表
Man命令: man命令的配置文件:/etc/man.config 或 man_db.conf
帮助手册中的段落说明:
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
… 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug 信息
SEE ALSO 其它帮助参考
man 命令的操作方法:
使用less 命令实现
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or
^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K :向文件首部翻一行
q: 退出
# :跳转至第#行 行
1G: 回到文件首部
G
39、tree -L 1 –d /
Tree 用来查看目录结构(需要先安装)
-L 指定层数 -d 只查看目录
40、dmesg :查看启动的时候的内核日志
Last :登录成功的用户及ip
Lasb:登录失败的用户以及ip
Lastb :去查看哪些地址的服务器在扫描我们的机器,然后把这些ip加入到host_deny iptables中
41、pwd -L :如果当前为链接路径的话,则显示链接路径
-P :显示真实物理路径
42、绝对路径:
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径名:
不以斜杠开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
43、cd 改变目录
使用绝对或者相对路径:
Cd /home/wang
Cd home/wang
切换至父目录: cd..
切换至当前用户的主目录: cd
切换至以前的工作目录:cd –
选项:-p
相关的环境变量: PWD:当前目录路径
OLDPWD
:上一次目录路径
44、ls :列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
Ls –a 包含隐藏的文件
Ls –l 显示额外的信息
Ls -R 目录递归通过
Ls -ld 目录和符号链接信息
Ls -d 显示当前目录的详细信息,不显示目录下的内容
Ls -1 文件分行显示
Ls -S 按从大到小排序
Ls -t 按mtime排序
Ls -u 配合-t选项显示并按atime从新到旧排序
Ls -U 按目录存放顺序显示
Ls -X 按文件后缀排序
45、stat :查看文件状态
文件:metadata ,data
三个时间戳 :
Access time :访问时间,atime,读取文件内容
Modify time :修改时间 ,mtime ,改变文件内容(数据)
Change time :改变时间,ctime,元数据发生改变(属性发生改变)
Mtime改变,ctime也会跟着改变
修改文件属性或者权限,则ctime也会跟着改变
Atime 并不会实时发生改变,只有当mtime比atime新的时候才会改变
使用编辑器打开文件可能造成atime的改变
使用 touch –a 修改文件的访问时间也会造成ctime的改变
46、touch : -m 修改mtime,也会造成ctime的改变
-c 修改ctime 如果文件不存在,则不予创建
-a 修改atime ,也会造成ctime的改变
-t [[cc]yy]MMDDhhmm[.ss] 指定atime和mitime的时间戳
结合-m 或-c 或 –a 修改制定的时间
Touch –m -t “time” 文件
47、cp :复制文件和目录
Cp a b :复制一个文件并命名为b
Cp a tmp/ 把多个文件源复制到目录下
Cp -r 目录1 目录2 :如果目录2不存在,则会把目录1重新拷贝一份并命名为目录2
如果目录2已经存在,则直接将目录1拷贝到目录2下
-i:覆盖前提示
-r 或-R :递归复制目录以及内部的所有内容
-d :复制的时候,如果目录有链接文件,则只复制链接文件
-p :–preserv 复制的时候将文件的属性 一起复制
-a :–pdr 把所有的目录以及所有的属性复制过去
-v :复制的时候显示详细过程
-f :强制复制,不管目标文件有没有
Cp -av
Cp -avf 强制复制
48、mv :移动和重命名文件
常用选项: -I 交互式
-f :强制,如果目标已经存在同名文件,则强制移动过去,不提示
Mv a b 将a重名为b a有可能是文件或目录
Mv a bd/ :将源文件a移动到目录bd下
49、rm :删除
常用选项: -i :交互式
-f :强制删除
-r :递归
50、tree :显示目录树
-d :只显示目录
-L 数目 :指定显示的层级数目
-p pattern :只显示由指定pattern匹配到的路径
51、mkdir :创建目录
-p :存在于不报错,且可自动创建所需的各目录(递归创建)
-v :显示详细信息
-m MODE :创建目录是直接指定权限
52、rmdir :删除空目录
-p :递归删除父空命令
-v :显示详细信息
53、inode :索引节点
df -i :查看某个分区inode的使用
ll -i :查看某个文件的inode号
Inode表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:文件类型,权限,UID,GID,链接数(指向这个文件名路径名称个数),该文件的大小和不同的时间戳,指向磁盘上文件的数据块指针,有关文件的其他数据
Inode 根据系统上的inode号去找到对应的文件
Inode 系统上的inode号会满,有可能是磁盘上的小文件过多
Inode 是在磁盘格式化的时候已经确定
为什么空间没满,但是我的数据写不进去,是因为小文件太多,造成inode用完了,解决方法就是把数据拷贝出来,重新格式化分区,重新指定inode
一个文件只能有一个inode
Cp 操作就是生成一个新的inode,然后把源文件的数据复制过去,同时把新的inode指过去
Rm删除的时候只是删除inode,数据还在
Mv的时候如果在同一个分区,那么mv的时候只是修改了文件路径,文件本身的inode没变
如果目标文件和源文件位于不同的分区(文件系统),那么一般执行的是先cp后删除操作
54、链接文件
硬链接 :创建硬链接会增加额外的记录项以引用文件
对于同一个文件系统上的一个物理文件
每个目录引用相同的indoe号
创建时链接数递增
删除文件时: rm命令递减计数的链接
文件要存在,至少有一个连接数
当链接数为零时,该文件被删除
不能跨驱动器或分区
语法 :ln filename 被链接文件
软(符号)链接 :
一个符号链接指向另一个文件
Ls –l 的显示连接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小 为指向的路径字符串的长度;不增加或减少目标文件indoe的引用计数
语法 :ln -s filename 被链接文件
-f :强制链接 ,无论原来的链接是否存在,强制她它指向一个新的位置
-n :把符号链接的目的目录视为一般文件
55、file :用来查看某个文件的文件类型
-b :不显示文件名称
-f a.txt: 列出a.txt文件中所记录的文件对应的文件类型
-F 使用指定分隔符号替换输出文件名后默认“:”分隔符
-L 查看对应软链接对应文件的文件类型
56、tr :转换和删除字符
选项 :-c -C –complement:取字符集的补集
-d –delete :删除所有属于第一字符集的字符
-s –squeeze-repeats :把连续重复的字符以单独一个字符显示
-t –truncate –set1 :将第一个字符集对应字符转化为第二个字符集对应的字符
Tr ‘a-z’’A-Z’ < /etc/fstab
Tr -d ‘0-9’ > /etc/fstab
Tr –d –c ‘0-9’ < /etc/fstab
Echo “ssss” | tr –s ‘s’
57、Less :一页一页地查看输入
Ls –l /etc | less
58、文件查看命令:cat 、tac、rev
Cat [option] .. [file]..
-E: 显示行结束符$
-n :对显示出的每一行进行编号
-A –Vet :显示所有控制符
-b :列出非空行编号
-T : 显示制表符
-v :显示隐藏的特殊字符
-s :压缩连续的空行成一行
59、tac:把文件倒过来显示
60、more:分页查看文件
More -d :显示翻页 以及退出提示(enter向下一行,space 向下一屏,b回到最开始的地方)
61、less:一页一页的查看文件或STDIN输出
查看时有用的命令包括: /文本 :搜索 文本
n / N 跳到下一个或上一个匹配
62、head :显示文本前#(默认为10)行
Head -c # :指定获取前#字节
-n # :指定获取前#行
-#:指定行数
63、tail :显示文本后#(默认是10)行
Tail -c # :指定获取后#字节
-n # :指定获取后#行
–# :指定行数
-f :跟踪显示文件新追加的内容,常用日志监控
64、cut :按列抽取文本
Cut -d”分隔符” : 指明分隔符,默认tab
-f # :第#个字段
#,#,#:离散的多个字符,例如1,3,9
#-# :连续的额多个字符
-c :按字符切割
65、paste :合并两个文件同行号的列到一行
-d”分隔符” :指定分隔符,默认tab
-s :所有行合成一行显示
66、wc :收集文本统计数据,计算单词总数,行总数,字节总数和字符总数
可以对文件或STDIN中的数据运行
默认是统计行数、字数、字符数
Wc -l :只统计行数
-w :只统计单词总数
-c :只统计字节总数
-m :多少字符
67、sort :文本排序,把整理过的文本显示在STDOUT,不改变原始文件
Sort -r :执行反方向(由上至下)整理
-n :执行按数字大小整理
-f :选项忽略(fold)字符串中的字符大小写
-u :选项(独特,unique)删除输出中的重复行
-t c :使用c 作为字符界定符
-k num :选择某个字段来进行排序
Cat /etc/passwd | sort –t “:” –k
3
68、uniq: 从输入中删除前后相接的重复的行
Uniq -c :显示每行重复出现的次数
-d :心啊是重复过的行
-u :显示不曾重复的行
sort userlist.txt | uniq
–c
69、统计日志中频繁访问的前10个ip
cat /log | cut -d” ” -f1 |
sort | uniq -c | sort -nr | head
70、diff :命令的输出被保存在一种叫做“补丁”的文件中
使用 –u 选项来输出“统一的”diff格式文件,最适合于补丁文件(svn git
(主流) :打补丁工具)
diff -u foo.conf-broken foo.conf-works > foo.patch
71、patch :复制在其他文件中进行的改变
-b :来自动备份改变了的文件
patch -b foo.conf-broken foo.patch
72、grep :文本过滤工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行
Grep ,egrep ,fgrep(不支持正则表达式搜索)
–color=auto :对匹配到的文本着色显示
-v :显示不被pattern匹配到的行,相当于取反
-i :忽略字符串大小写
-n :显示匹配的行号
-c : 统计匹配到的行数
-o :仅显示匹配到的字符串
-q :静默模式,不输出任何信息
-A# :after ,后#行
-B# :before ,前#行
-C# :CONTEXT ,前后各#行
-e :实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w :匹配整个单词
-E :使用ERE
-F :相当于fgrep ,不支持正则表达式
73、netstat -nat : 用来查看系统中正在监听的端口
lt+F[1-6]
2. Centos 7 :在哪个终端启动,即位于哪个虚拟终端
5、 串行端口(/dev/ttyS#)
ttys
6、 伪终端(pty:pseudo-tty,/dev/pts/#)
pts ,ssh 远程连接
7、 查看当前的终端设备:tty
8、 应用程序—附件—终端:
1、 支持多个“标签”shell的图形化终端模拟器
2、 Ctrl+shift+n :创建新窗口
3、 Ctrl+shift+q :关闭当前窗口
4、 Ctrl+shift+t :创建一个标签页
5、 Ctrl+shift+w :关闭一个标签页
6、 Ctrl+pgup/pgdn :切换上一个/前一个标签页
7、 Ctrl+shift+c :复制选中的文本
8、 Ctrl+shift+v :把文本粘贴到当前光标处
3、交互式接口:启动终端后,在终端设备附加一个交互式应用程序
1、 GUI : Graphic User Interface
i. X protocol, window manager ,desktop
ii. Desktop: GNOME(C ,图形库gtk);
iii. KDE (C++,图形库qt);
iv. XFCE(轻量级桌面)
2、 CLI:Command Line Interface
Shell 程序:sh (bourn) csh tcsh ksh
4、Shell 是Linux 系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
shell 也被称为LINUX 的命令解释器(command interpreter )
shell 是一种高级程序设计语言
5、GNU Bourne-Again Shell(bash) 是GNU 计划中重要的工
具软件之一,目前也是 Linux 标准的shell ,与sh 兼容
6、查看当前使用的shell:echo ${SHELL}
7、显示当前系统使用的所有的shell : cat /etc/shells
8、查看系统变量:env 或 export
9、~ :代表家目录
# :代表超级目录
$ :代表普通用户
10、显示提示符格式: echo $PS1
修改命令提示符 :PS1=”[\u@\h \w]\$”
PS1=”[\e[31m][\u@\h \w]\$[\e[0m]”
\e : \033 \u:当前用户 \h:主机名简称 \H:主机名
\w :当前工作目录 \W:当前工作目录基名 \t :24小时时间格式
\T:12小时时间格式 !:命令历史数 # :开机后命令历史数
11、shell命令分两种:
一种是内部命令 :由内核直接提供
Help: 内部命令列表
Enable command 可以启用命令
Enable -n command 禁用内部命令
Enable -n 查看所有禁用的内部命令
一种是外部命令 :由系统上的某个二进制文件提供
查看路径 :which -a | –skip—alias command
Whereis command
区别指定的命令是内部还是外部命令:
type command
12、hash :hash缓存表
系统初始hash 表为空,当外部命令执行时,默认会从PATH路
径下寻找该命令,找到后会将这条命令的路径记录到hash表
中,当再次使用该命令时,shell 解释器首先会查看hash 表,
存在将执行之,如果不存在,将会去PATH 路径下寻找。利用
hash缓存表可大大提高命令的调用速率
hash:会显示最近执行的命令
hash –l:显示hash缓存,可作为输入使用
hash –t command:显示命令的路径
hash -r :清除缓存
13、alias :查询系统中已经存在的别名
别名前加\ :代表执行其实的命令;单引号也可以;或直接在命令的路径下调用
“\COMMAND”
’COMMAND’
/PATH/COMMAND
alias name =”name1” 仅在当前shell下有效
当前用户 :~/.bashrc 所有用户:/etc/bashrc
取消别名 :unalias name
16、Enable command 可以启用命令,只对内部命令有效, Enable -n command 禁用内部命令
Enable -n 查看所有禁用的内部命令
17、pwd :显示当前目录
18、command [options] [argyments]
选项:用于启用或者关闭命令的某个或某些功能
短选项:-c 例如 :-l ,-h
长选项:–word ,例如 :–all ,–human—readable
参数 :命令的作用对象,比如文件名,用户名等
注意:多选项,以及多参数和命令之间使用空白字符分隔
取消和结束多个命令的执行:ctrl+c ;ctrl+d
\ :一个命令可以用\分成多行
; 多个命令可以用分号分开
19、date :显示日期和时间
Linux的两种时钟:系统时钟:由linux内核通过CPU的工作频率进行的
硬件时钟:主板
Hwclock ,clock :显示硬件时钟
-s ,–hctosys 以硬件时钟为准
-w ,–sysytohc 以系统时间为准
时区:/etc/localtime
Date –s :修改系统时间
Date –d :指定具体时间
(两天前星期几)
Date +%F : 当前时间
Date +%Y:年 m:月 d:日 H:时 M:分 S:秒
Date –date=”3 days ago”
反引号:将命令执行结果作为输出 双引号 、单引号:字符串输出
(反引号) 把一个命令的输出打印给另一个命令的参数
Cal :显示日历 cal -y :显示全年日历
20、bc :命令行的计算器
21、nano:文本编辑器
22、half 、poweroff :关机
Reboot : -f 强制,但不调用shutdown
-p 切断电源
Shutdown :关机或重启
-r :reboot
-h :half
-c :取消
Time :now :立刻关机
+m :相当时间表示法,多久之后
Hh:mm :绝对时间表示,指明具体时间
Init 0 :关机
6 :重启
23、用户登录信息命令
Whoami :查看当前有效登录用户
Who :系统当前所有的登录会话
W :显示所有登录的用户以及连接
24、screen :屏幕
Screen -s name :开启一个会话
Screen -x name :加入一个会话
Ctrl + a + d : 退出
Screen -r :恢复刚刚的会话
Screen -ls :显示所有已经打开的screen会话
25、echo :显示字符
-E :默认 不支持 \ 解释功能
-n :不自动换行
-e :启用 \ 字符的解释功能
启用命令选项-e ,若字符串中出现以下字符,则特
别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\ 字符
\0nnn 插入nnn (八进制)所代表的ASCII 字符
echo -e '\033[43;31;5mmagedu\033[0m'
\xHH 插入HH (十六进制)所代表的ASCII字
显示变量: echo “$name” 变量会被替换,弱引用
Echo ‘$name’变量不会被替换,强引用
26、dirname :获取文件的目录名
Basename :获取问价你的基名
27、uname :功能说明:uname用来获取电脑和操作系统的相关信息
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操 作系统名称
-m或–machine 显示主机的硬件(CPU)名
-n或-nodename 显示主机在网络节点上的名称或主机名称
-r或–release 显示linux操作系统内核版本号
-s或–sysname 显示linux内核名称
-v 显示显示操作系统是第几个 version 版本
-p 显示处理器类型或unknown
-i 显示硬件平台类型或unknown
-o 显示操作系统名
–help 获得帮助信息
–version 显示uname版本信息
28、查看系统版本 :cat /etc/redhat-release
29、env 、 export :查看系统默认的变量
30、hostname :显示当前系统的主机名 定义系统当前的主机名
仅仅对当前的环境生效
31、命令行扩展:$() 或
32、打印重复字符串的简化形式
Echo file{1,3,5}
Echo {1..10}
Echo {a..z}
Echo {000..20..2}
33、命令补全
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜索以给定命令名命名的文件,第一次找到的命令即为要执行的命令
用户给定的字符串只有一条唯一对应的命令,直接补全,否则再次tab会给出列表
路径补全:把用户给出的字符串当作路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果唯一,则直接补全,否则再次tab给出列表
command 2Tab 所有命令行补全
string2Tab 以string 开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts 记录 (centos7 不支持)
=2Tab 相当于ls –A
34、命令行历史 :history
历史命令一般记录在 .bash_history 文件中
当前shell中的历史记录会被记录在内存,只有退出之后才会保存在 .bash_history
History 默认最多记录1000行
最后一个退出的会写在配置文件中
History -c :清空命令历史
-r :读取历史文件,附加到历史文件
-w :保存在历史列表到指定的历史文件
–p :展开历史参数成多行,但不保存到历史列表中
-s :展开历史参数成一行,附加到历史列表最后
-d offset :删除历史中指定的第offset个命令
$HISTSIZE :命令历史记录的条数
$HISTFILE :指定历史文件的存放位置
$HISTFILESIZE :命令历史文件记录的条数
HISTTIMEFORMAT=”%F %T”:显示每条命令的具体执行时间
HISTIGNORE=”str1:str2:…” 忽略string1,string2的历史
控制命令历史的记录方式: 环境变量 :HISTCONTROL
ignoredups :默认。忽略重复的命令,连续切相同为重复
ignorespace :忽略所有以空白开头的命令
ignoreboth :相当于ignoredups和ignorespace 的组合
erasedups : 删除重复命令
重复前一个命令,有4种方法:
重复前一个命令使用上方向键
按!!并回车执行
输入!-1并回车执行
按ctrl+p 并回车执行
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p :打印输出!$的内容
!:p 打印输出!(所有参数)的内容
^string 删除上一条命令中的string
^string1^string2将上一条命令中的第一个string1替换为string2
!!:gs/string1/string2 将上一条命令中所有的string1都替换为string2
Ctrl-r 在命令历史中搜索命令
Ctrl+g :从历史搜索模式退出
要重新调用前一个命令中的最后一个参数:
1、 !$
2、 ESC , . (点击esc键后松开,然后点 . 键)
3、 ALT+. (按住alt的同时点击.键)
command !^ :利用上一个命令的第一个参数值
command !$ :利用上一个参数的最后一个参数值
command ! :利用上一个命令的全部参数
command !:n :利用上一个命令的第n个参数
command !string:^ :从命令历史中搜索以string开头的命令,并获取它的第一个参
数
command !string:$ :从命令历史中搜索以string开头的命令,并获取它的最后一个参数
command !string:n :从命令历史中搜索以string开头的命令,并获取它的第n个参数
command !string:* :从命令历史中搜索以string开头的命令,并获取它的所有参数
35、快捷键:
ctrl+l : 相当于clear
ctrl+s :阻止屏幕输出,锁定
ctrl+q :允许屏幕输出
ctrl+c :终止命令
ctrl+z : 挂起命令
ctrl+a :光标移动到命令行首,相当于home
ctrl+e :光标移动到行尾 ,相当于end
ctrl+f :光标向右移动一个字符
ctrl+b :光标向左移动一个字符
alt+f :光标向右移动一个单词尾
alt+b :光标向左移动一个单词首
ctrl+xx :光标在命令行首和光标之间移动
ctrl+u :从光标处删除至命令行首
ctrl+k :从光标删除至命令行尾
ctrl+d :删除光标处的一个字符
ctrl+y :将删除的字符粘贴到光标后
alt+c :从光标处开始向右更改为首字母大写的单词
alt+u :从光标处开始向右更改为全部大写的字母
alt+l :从光标处更改为全部小写的单词
ctrl+t :交换光标处和之前的字符位置
alt+t :交换光标处和之前的单词位置
alt+N :提示输入指定字符后,重复显示该字符N次
36、变量的简单用法 :export 变量名=“值”
存放在 /etc/profile 或~/.bash_profile
37、whatis :显示命令的简短描述 ,跟man一样的帮助命令
使用前需要: makewhatis | mandb 制作数据库
38、命令帮助
1、内部命令帮助方法:help command
man command
2、外部命令帮助方法 : command –help
Man command
Info command
程序自身的帮助文档
程序官方文档
发行版的官方文档
Google
–help :显示用法总结和参数列表
Man命令: man命令的配置文件:/etc/man.config 或 man_db.conf
帮助手册中的段落说明:
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
必选内容
a|b 二选一
{ } 分组
… 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug 信息
SEE ALSO 其它帮助参考
man 命令的操作方法:
使用less 命令实现
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K :向文件首部翻一行
q: 退出
# :跳转至第#行 行
1G: 回到文件首部
G
39、tree -L 1 –d /
Tree 用来查看目录结构(需要先安装)
-L 指定层数 -d 只查看目录
40、dmesg :查看启动的时候的内核日志
Last :登录成功的用户及ip
Lasb:登录失败的用户以及ip
Lastb :去查看哪些地址的服务器在扫描我们的机器,然后把这些ip加入到host_deny iptables中
41、pwd -L :如果当前为链接路径的话,则显示链接路径
-P :显示真实物理路径
42、绝对路径:
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径名:
不以斜杠开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
43、cd 改变目录
使用绝对或者相对路径:
Cd /home/wang
Cd home/wang
切换至父目录: cd..
切换至当前用户的主目录: cd
切换至以前的工作目录:cd –
选项:-p
相关的环境变量: PWD:当前目录路径
OLDPWD :上一次目录路径
44、ls :列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
Ls –a 包含隐藏的文件
Ls –l 显示额外的信息
Ls -R 目录递归通过
Ls -ld 目录和符号链接信息
Ls -d 显示当前目录的详细信息,不显示目录下的内容
Ls -1 文件分行显示
Ls -S 按从大到小排序
Ls -t 按mtime排序
Ls -u 配合-t选项显示并按atime从新到旧排序
Ls -U 按目录存放顺序显示
Ls -X 按文件后缀排序
45、stat :查看文件状态
文件:metadata ,data
三个时间戳 :
Access time :访问时间,atime,读取文件内容
Modify time :修改时间 ,mtime ,改变文件内容(数据)
Change time :改变时间,ctime,元数据发生改变(属性发生改变)
Mtime改变,ctime也会跟着改变
修改文件属性或者权限,则ctime也会跟着改变
Atime 并不会实时发生改变,只有当mtime比atime新的时候才会改变
使用编辑器打开文件可能造成atime的改变
使用 touch –a 修改文件的访问时间也会造成ctime的改变
46、touch : -m 修改mtime,也会造成ctime的改变
-c 修改ctime 如果文件不存在,则不予创建
-a 修改atime ,也会造成ctime的改变
-t [[cc]yy]MMDDhhmm[.ss] 指定atime和mitime的时间戳
结合-m 或-c 或 –a 修改制定的时间
Touch –m -t “time” 文件
47、cp :复制文件和目录
Cp a b :复制一个文件并命名为b
Cp a tmp/ 把多个文件源复制到目录下
Cp -r 目录1 目录2 :如果目录2不存在,则会把目录1重新拷贝一份并命名为目录2
如果目录2已经存在,则直接将目录1拷贝到目录2下
-i:覆盖前提示
-r 或-R :递归复制目录以及内部的所有内容
-d :复制的时候,如果目录有链接文件,则只复制链接文件
-p :–preserv 复制的时候将文件的属性 一起复制
-a :–pdr 把所有的目录以及所有的属性复制过去
-v :复制的时候显示详细过程
-f :强制复制,不管目标文件有没有
Cp -av
Cp -avf 强制复制
48、mv :移动和重命名文件
常用选项: -I 交互式
-f :强制,如果目标已经存在同名文件,则强制移动过去,不提示
Mv a b 将a重名为b a有可能是文件或目录
Mv a bd/ :将源文件a移动到目录bd下
49、rm :删除
常用选项: -i :交互式
-f :强制删除
-r :递归
50、tree :显示目录树
-d :只显示目录
-L 数目 :指定显示的层级数目
-p pattern :只显示由指定pattern匹配到的路径
51、mkdir :创建目录
-p :存在于不报错,且可自动创建所需的各目录(递归创建)
-v :显示详细信息
-m MODE :创建目录是直接指定权限
52、rmdir :删除空目录
-p :递归删除父空命令
-v :显示详细信息
53、inode :索引节点
df -i :查看某个分区inode的使用
ll -i :查看某个文件的inode号
Inode表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:文件类型,权限,UID,GID,链接数(指向这个文件名路径名称个数),该文件的大小和不同的时间戳,指向磁盘上文件的数据块指针,有关文件的其他数据
Inode 根据系统上的inode号去找到对应的文件
Inode 系统上的inode号会满,有可能是磁盘上的小文件过多
Inode 是在磁盘格式化的时候已经确定
为什么空间没满,但是我的数据写不进去,是因为小文件太多,造成inode用完了,解决方法就是把数据拷贝出来,重新格式化分区,重新指定inode
一个文件只能有一个inode
Cp 操作就是生成一个新的inode,然后把源文件的数据复制过去,同时把新的inode指过去
Rm删除的时候只是删除inode,数据还在
Mv的时候如果在同一个分区,那么mv的时候只是修改了文件路径,文件本身的inode没变
如果目标文件和源文件位于不同的分区(文件系统),那么一般执行的是先cp后删除操作
54、链接文件
硬链接 :创建硬链接会增加额外的记录项以引用文件
对于同一个文件系统上的一个物理文件
每个目录引用相同的indoe号
创建时链接数递增
删除文件时: rm命令递减计数的链接
文件要存在,至少有一个连接数
当链接数为零时,该文件被删除
不能跨驱动器或分区
语法 :ln filename 被链接文件
软(符号)链接 :
一个符号链接指向另一个文件
Ls –l 的显示连接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小 为指向的路径字符串的长度;不增加或减少目标文件indoe的引用计数
语法 :ln -s filename 被链接文件
-f :强制链接 ,无论原来的链接是否存在,强制她它指向一个新的位置
-n :把符号链接的目的目录视为一般文件
55、file :用来查看某个文件的文件类型
-b :不显示文件名称
-f a.txt: 列出a.txt文件中所记录的文件对应的文件类型
-F 使用指定分隔符号替换输出文件名后默认“:”分隔符
-L 查看对应软链接对应文件的文件类型
56、tr :转换和删除字符
选项 :-c -C –complement:取字符集的补集
-d –delete :删除所有属于第一字符集的字符
-s –squeeze-repeats :把连续重复的字符以单独一个字符显示
-t –truncate –set1 :将第一个字符集对应字符转化为第二个字符集对应的字符
Tr ‘a-z’’A-Z’ /etc/fstab
Tr –d –c ‘0-9’ foo.patch
71、patch :复制在其他文件中进行的改变
-b :来自动备份改变了的文件
patch -b foo.conf-broken foo.patch
72、grep :文本过滤工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行
Grep ,egrep ,fgrep(不支持正则表达式搜索)
–color=auto :对匹配到的文本着色显示
-v :显示不被pattern匹配到的行,相当于取反
-i :忽略字符串大小写
-n :显示匹配的行号
-c : 统计匹配到的行数
-o :仅显示匹配到的字符串
-q :静默模式,不输出任何信息
-A# :after ,后#行
-B# :before ,前#行
-C# :CONTEXT ,前后各#行
-e :实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w :匹配整个单词
-E :使用ERE
-F :相当于fgrep ,不支持正则表达式
73、netstat -nat : 用来查看系统中正在监听的端口
原创文章,作者:2547221149,如若转载,请注明出处:http://www.178linux.com/73588