一、系统和硬件
无论是Linux、OS X、Windows操作系统,他们都是由以下部分组成(分层结构):
最底层:硬件 底层之上:将硬件的接口抽象成为系统调用(kernel) 再之上:库 再此之上为:应用程序
程序的运行可以有两种方式:
1、开机自动启动运行 2、用户通过交互式接口登陆或者连接系统上去,来手动运行程序
二、终端:
1、物理终端:我们可以将显示器、键盘鼠标直接接在主机的接口之上,这样的终端称之为物理终端,即本机自带的,直接连入的,也称之为:物理控制台console表示/dev/console。 2、虚拟终端:除了物理终端,系统会提供给我们6个虚拟终端,这些虚拟终端是附加在物理终端之上的,用软件方式虚拟实现的终端centos默认启用6个虚拟终端,可以通过使用快捷键来切换进来。
切换方式:Ctrl-Alt-F[1-6]
表示:/dev/tty# 3、图形终端:也是附加在物理终端之上,用软件方式虚拟实现的终端,但额外会提供桌面环境。也是虚拟终端的一种切换方式:Ctrl-Alt-F7 4、伪终端(模拟终端):图形界面下打开的命令行接口,还有基于ssh协议或telnet协议等远程打开的命令行界面。
表示:/dev/pts# 查看当前的终端设备命令:tty
终端实际上一个设备,一个设备要想与系统交互,必须有交互接口,当我们开启一个终端时,系统会自动的在终端上运行(附加)一个交互式程序。
交互式程序有两类:
GUI和CLI GUI:图形化界面,是基于X协议实现的窗口管理器(桌面、按钮的作用等)
Linux桌面系统有:
GNOME(C程序开发,gtk(开发库))
KDE(C++程序开发,qt(开发库))
XFCE(轻量级桌面) CLI:命令行界面
对应的叫shell程序,用户要想与系统交互,必须通过shell,不同的程序员开发的程序不一样,但是都可以实现同样的功能(就是交互式功能),所以说shell程序也有很多种,如Sh,csh,Ksh,Bash,zsh。
查看当前环境使用的shell:
echo $SHELL 显示当前系统使用的所有shell cat /etc/shells
echo nihao > /dev/tty2 向tty2这个终端发送nihao
三、命令提示符
靠环境变量定义
[root@centos6 ~]# echo $PS1 [\u@\h \W]\$ 修改:PS1="\[\e[32m\][\u@\h(Eric) \W]\\$\[\e[0m\]"
提示符有两种:
1、#表示管理员登陆
2、$表示普通用户登陆
可以通过命令提示符来判断时管理员还是普通用户登陆。
在shell中可执行的命令有两类:
1、内建命令:由shell自带的,而且通过某命令形式提供。 2、外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件;可通过which,whereis命令来查找到可执行程序文件
whereis command
查看命令的路径(外部命令)和 帮助文档的路径
model:
[root@centos6(Eric) ~]#whereis ntpd
ntpd: /usr/sbin/ntpd /usr/share/man/man8/ntpd.8.gz which command 显出命令的路径
model:
[root@centos6(Eric) ~]#which ntpd
/usr/sbin/ntpd
查看命令是外部还是内建命令:
type command
model:
[root@centos6(Eric) ~]#type ntpd
ntpd is /usr/sbin/ntpd
[root@centos6(Eric) ~]#type echo
echo is a shell builtin
运行命令格式:command [options...] [arguments...]
命令 选项 参数
选项:用于启用或关闭命令的某个或些功能。
参数:命令的作用对象(就是向命令提供数据的)
命令的参数可以有多个
四:文件系统
文件有两类数据:
元数据:metadata,文件名、大小属性等
数据:data
Linux文件系统的特性: 1、文件名严格区分字符大小写 2、文件名可使用除了/以外的任意字符,但不建议使用特殊字符 3、文件名长度最长不能超过255个字符 4、所有.开头的文件都为隐藏文件
路径:绝对路径和相对路径
绝对路径:从根目录起始的路径
相对路径:从当前位置起始的路径 enable 管理内部命令 enable command 激活一个内部命令 enable -n command 禁用一个内部命令 enable 显示所有已激活的内部命令
配合 | wc -l 可查看已激活的内部命令的数量 enable -a 显示所有的内部命令(无论激活与否)
配合 | wc -l 可查看所有的内部命令数量 help 内部命令 查看指定内部命令的帮助信息 hash: hash的作用就是记录或显示程序的位置(可执行程序的位置) hash 外部命令的路径缓存 hash 查看被缓存的外部命令 hash -l 详细查看,包含别名 hash -d 别名 删除指定别名的缓存路径 hash -p 路径 别名 手动添加一条缓存路径 hash -r 删除所有的hash hash -t 别名 指定别名,显示被hash的路径
PATH 用来指定外部命令的搜索路径,以:为间隔,由左至右的顺序
命令执行的优先顺序 alias——> 内部命令——> hash ——> PATH alias 别名 alias 别名='原命令 [-options] [arguments]' alias 查看别名 unalias 别名 删除别名
model: alias editnet="vim /etc/sysconfig/network-scripts/ifcfg-eth0" 注:通过命令行定义的别名只对当前shell有效;如果想永久有效,需要定义在配置文件中。
仅对当前用户有效:~/.bashrc
对所有用户有效:/etc/bashrc
bash进程重新读取配置文件: source /path/to/config_file
或者./path/to/config_file
临时使别名不生效可用以下方法
使用路径执行
\命令 '命令' "命令"
中断命令
ctrl+C 强制中断
ctrl+d 正常中断
命令连接符
当前一个命令执行结束,再执行下一条命令 command1 ; command2 ; command 3 ……
\ 命令换行符,可使一条命令加选项和参数 换行执行
关机
halt
poweroff
init 0
重启
reboot
init 6
shutdown
shutdown -r 重启
shutodwn -h 关机
shutdown -c 取消计划关机
shutdown +0 马上关机
+1 一分钟后关机
-X X分钟后关机 20:00 今天20:00关机
date
查询时间 date 显示当前时间 date +%F 以 年-月-日 显示 date +%T 以 时-分-秒 显示 date +%Y 年 date +%m 月 date +%d 日 date +%H 时 date +%M 分 date +%S 秒 date +%a 英文的星期缩写 date +%A 英文的星期全拼 date +%w 数字方式显示星期
设置时间
date 082914132017.10 月日时分年[.秒] date -s "2018-1-20 13:50:11"
hwclock 或 clock
-s 将硬时间写入软时间。 -w 将软时间写入硬时间。
cal
cal [-1]显示当月日历
-y 显示当前年的全年日历
数字 显示某年的日历(1-9999)
-3 显示上个月、当月、下个月的日历
cal 月份 年份 显示指定年指定月的日历
cal 9 1752 365.25 365.24219 365 365.24219 1280年3月 元朝 郭守敬 授时历 1585 365.2425
screen
光盘挂载
在vmware确定dvd设备是“已连接”状态
mount /dev/cdrom /media/dvd cd /media/dvd/Packages
rpm -ivh screen-4.0.3-19.el6.x86_64.rpm
screen 的用法
screen -ls 列出当前所有的screen会话
screen -S 名称 创建一个指定名称的screen会话
screen -x 名称 加入指定名称的screen会话
screen 创建一个会话,名称为当前的终端名-主机名前缀如pts-2.centos6
echo
-n 不换行
-E 不支持解释(默认)
-e 支持解释功能 "\a" 发出警告声 "\b" 退格 "\c" 不换行 "\n" 换行且光标移至行首 "\r" 移至行首但不换行 "\t" 插入tab Model:
echo -e "\a"可以用于报警
[root@centos6(Eric) ~]#echo -e hell"\b"o
helo
[root@centos6(Eric) ~]#echo -e hello"\c" hello[root@centos6(Eric) ~]#
[root@centos6(Eric) ~]#echo -e 'Hello My sy"\n"stem is MAC Os.'
Hello My sy"
"stem is MAC Os.
[root@centos6(Eric) ~]#echo -e 'Hello My sy"\r"stem is MAC Os.'
"stem is MAC Os.
[root@centos6(Eric) ~]#echo -e 'Hello My sy\t\nstem is MAC Os.'
Hello My sy stem is MAC Os.
[root@centos6(Eric) ~]#echo -e my "\t\n"name "\t\n"is "\t\n"eric
my
name
is
eric
$(command) 或 `command` 引用命令执行的结果
$[] 或 $(()) 运算
${变量名} 或 “$变量名” 引用变量
{}的用法
{a,b,c} 分别引用其中的每个字符
{1..10} 或 seq 1 10 {a..z}
TAB
唯一时则补出,不唯一时,两次TAB显示列表
history
~/.bash_history 当用户退出时,会将当前终端的history写入文件,当用户登录时,从文件中读取到history history 显示当前终端的历史记录 history -a 将当前终端的历史写入.bash_history history -n 从文件中读取未加载的历史 history -r 从文件中读取历史追加到history的最后 history -c 清空history HISTSIZE 当前history保留的数量,默认1000 修改方法:
vim /etc/profile
HISTSIZE=10000 HISTFILESIZE 文件中最多存的数量
快捷键
ctrl+a 光标跳到行首
ctrl+e 光标跳到行尾
alt+num a 输入指定数量的字符
whatis 显示命令描述信息
基于数据库的查找方式,数据文件位置/var/cache/man/whatis 可使用makewhatis建立
优点:查询快
缺点:没有实时性
help用法:
help 内部命令
外部命令 --help
man
1、用户命令章节,所有用户都可以使用 2、系统调用命令章节 3、C库调用 4、设备及特殊文件 5、配置文件的格式及相关参数 6、游戏 7、杂项 8、管理命令
手册段落含义:
NAME:命令的名称和简要说明
DESCRIPTION:命令功能的详细描述 OPTIONS:所支持的选项的相关说明
SYNOPSIS:使用格式
EXAMPLES:使用示例
NOTES:相关注意事项 FILES:相关的配置文件
SEE ALSO:相关参考
通过man命令获得命令帮助信息页中有一些用符号标记的内容,符号意义:
[]:可选内容 <>:必选内容
|:二选一
...:同类内容可以有多个
快捷键
d向下翻半屏 u向上翻半屏
f向下翻整屏
b向上翻整屏 G跳到尾页 g跳到首页
j向下跳一行
k向上跳一行
/关键字 n向下找N向上找
?关键字 n向上找N向下找
q退出man
-k 关键字 查询某个关键字有哪些章节
man -k passwd man 5 passwd man passwd
[root@centos6(Eric) ~]#getent passwd Eric
Eric:x:500:500::/home/Eric:/bin/bash
一个备份命令:cp /etc/fstab{,.orig}
文件类型
- :普通文件 d :目录文件 l :软链接文件 b :块设备文件 c :字符设备文件 s :socket文件 p :管道文件
pwd
显示当前的工作目录
-P 当前目录为软链接时,则显示源目录的路径
-L 当前目录为软链接时,则显示链接目录的路径(默认)
model:
[root@centos6(Eric) ~]#pwd /root
相对路径与绝对路径
.当前目录
..上一级目录
cp /etc/passwd .
./test.sh
basename 取基名
[root@centos6(Eric) ~]#basename /etc/sysconfig/network
network
dirname 取目录名
[root@centos6(Eric) ~]#dirname /etc/sysconfig/network
/etc/sysconfig
cd 进入目录
-P 如果目标目录是个软链接目录,则直接进入其源始目录
.. 进入上一级目录
cd 进入家目录
cd ~或直接 cd 进入家目录
cd - 进入上一次的工作目录
model:
[root@centos6(Eric) etc]#pwd /etc
[root@centos6(Eric) etc]#cd [root@centos6(Eric) ~]#pwd /root
[root@centos6(Eric) ~]#cd -
/etc
[root@centos6(Eric) etc]#pwd /etc
ls 列出目录的内容
ls 列出目录的内容
-a 列出所有文件(包含隐藏文件) -A 列出所有文件(包含隐藏文件但不包含.和..) -l 长列出(即显示属性信息)
-R 递归 -ld 查看指定目录的属性 -1 竖显示 -S 按文件大小降序排列 -t 按mtime的时间从新到旧排列 -ut 按atime的时间从新到旧排列
-U 按目录存放顺序 -X 按文件后缀的顺序排列 -Z 显示selinux的context -i 显示文件的inodes [root@centos6(Eric) ~]#ll
-rw-------. 1 root root 1020 Aug 29 01:00 anaconda-ks.cfg -rw-r--r--. 1 root root 9617 Aug 29 01:00 install.log -rw-r--r--. 1 root root 3161 Aug 29 01:00 install.log.syslog 最左侧第一位为文件类型
后面9位:
访问权限perm
数字:文件被硬链接的次数
左root:文件的owner
右root:文件的group
1020/9617/3161:文件的size
Aug 29 01:00:文件最近一次被修改的时间
后面就是文件名
文件查看:
cat、tac
-A:--show-all equivalent to -vET 显示所有非正常的所有符号 -E:--show-ends 显示行结束符 -T:--show-tabs 显示制表符 -v:--show-nonprinting 显示其他的非打印字符 -n:对显示的行进行编号,与文件内容没有关系 -b:打印出行号(空白行不标行号)
文件内容类型查看命令:
file
[root@centos6(Eric) ~]#file install.log install.log: ASCII text [root@centos6(Eric) ~]#file /usr/bin/less /usr/bin/less: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
whoami 显示当前的登录用户名
who am i 显示当前的登录用户名 终端名 登录时间
who 显示当前所有的登录用户名 终端名 登录时间
w 显示当前所有的登录用户名 终端名 登录时间 登录的来源 当前在做什么
[root@centos6(Eric) ~]#whoami root
[root@centos6(Eric) ~]#who am i root pts/0 2017-08-30 07:15 (172.16.99.1)
[root@centos6(Eric) ~]#who root pts/0 2017-08-30 07:15 (172.16.99.1)
[root@centos6(Eric) ~]#w 08:51:15 up 9:02, 1 user, load average: 0.01, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 172.16.99.1 07:15 0.00s 0.07s 0.00s w
原创文章,作者:泰谷子,如若转载,请注明出处:http://www.178linux.com/85907