命令行接口
[root@node1 ~]# COMMAND
prompt:
root: 当登录的用户
node1: 当前主机的主机名,非完整格式;此处的完整格式为:node1.magedu.com
~:用户当前所在的目录(current directory),也称为工作目录(working directory);相对路径;
#:命令提示符;
#:管理员账号,为root; 拥有最高权限,能执行所有操作;
$:普通用户,非root用户;不具有管理权限,不能执行系统管理类操作;
文件名命名规则
1.严格区分字符大小写:file1, File1, FILE1
2.目录也是文件,在同一路径下,两个文件不能同名;
3.支持使用除/以外的任意字符;
4.最长不能超过255个字符;
命令语法
通用格式:
# COMMAND OPTIONS ARGUMENTS
COMMAND:
发起一命令:请求内核将某个二进制程序运行为一个进程;
程序 --> 进程
静态 --> 动态(有生命周期)
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/bin
管理命令:/sbin, /usr/sbin, /usr/local/sbin
共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库:/lib, /usr/lib, /usr/local/lib
64bits的库:/lib64, /usr/lib64, /usr/local/lib64
命令分为两类:
由shell程序的自带的命令:内置命令(builtin)
独立的可执行程序文件,文件名即命令名:外部命令
shell程序是独特的程序,负责解析用户提供的命令;
环境变量:
PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件;
echo $PATH 查找次序:自左而右;
查看命令类型:
type COMMAND
type type --- type is a shell builtin
type ls ---ls is aliased to `ls --color=auto`
OPTIONS:
指定命令的运行特性;
选项有两种表现形式:
短选项:-x, 例如-l, -d
注意:有些命令的选项没有-;
如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
长选项:--word, 例如--help, --human-readable
注意:长选项不能合并;
注意:有些选项可以带参数,此称为选项参数;
ARGUMENTS:
命令的作用对象;命令对什么生效;
注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
例如:ls -ld /var /etc
命令使用帮助
内部命令:
help COMMAND
外部命令:
(1) 命令自带简要格式的使用帮助
# COMMAND --help
(2) 使用手册:manual
手册位置:/usr/share/man
# man COMMAND
SECTION:
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS:选项
EXAMPLES:使用示例
AUTHOR: 作者
BUGS: 报告程序bug的方式
SEE ALSO: 参考
...
SYNOPSIS:
[]:可选内容;
<>:必须提供的内容;
a|b|c:多选一;
...:同类内容可出现多个;
使用手册:压缩格式的文件,有章节之分;
/usr/share/man
man1, man2, ...
1:用户命令;
2:系统调用;
3:C库调用;
4:设备文件及特殊文件;
5:文件格式;(配置文件格式)
6:游戏使用帮助;
7:杂项;
8:管理工具及守护进行;
# man CHAPTER COMMAND
注意:并非每个COMMAND在所有章节下都有手册;
查看命令所处章节:
# whatis COMMAND
注意:其执行过程是查询数据库进行的;
手动更新数据库: # makewhatis
man命令打开手册以后的操作方法:
翻屏:
空格键:向文件尾翻一屏;
b: 向文件首部翻一屏;
Ctrl+d:向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏;
回车键:向文件尾部翻一行;
k: 向文件首部翻一行;
G:跳转至最后一行;
#G: 跳转至指定行;
1G:跳转至文件首部;
文本搜索:
/keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
?keyword:从文件尾部向文件首部依次查找;
n: 与查找命令方向相同;
N: 与查找命令方向相反;
常用命令
cd ~:切换回自己的家目录
cd ~USERNAME:切换至指定用户的家目录;
cd -:在上一次所在目录与当前目录之间来回切换;
相关的环境变量
$PWD:当前工作目录
$OLDPWD:上一次的工作目录
ls: list, 列出指定目录下的内容
ls [OPTION]... [FILE]...
-a: 显示所有文件,包括隐藏文件;
-A:显示除.和..之外的所有文件;
-l: --long, 长格式列表,即显示文件的详细属性信息;
-rw-r--r--. 1 root root 8957 10月 14 19:34 boot.log
-:文件类型,-, d, b, c, l, s, p
rw-r--r--
rw-:文件属主的权限;
r--:文件属组的权限;
r--:其它用户(非属主、属组)的权限;
1:数字表示文件被硬链接的次数;
root:文件的属主;
root:文件的属组;
8957:数字表示文件的大小,单位是字节;
10月 14 19:34 :文件最近一次被修改的时间;
boot.log:文件名
-h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值;
-d:查看目录自身而非其内部的文件列表;
-r: reverse, 逆序显示;
-R: recursive,递归显示;
cat:concatenate
文件文本查看工具;
cat /etc/fstab
cat /etc/passwd
cat [OPTION]... [FILE]...
-n:给显示的文本行编号;
-E: 显示行结束符$;
tac(文本逆序显示):
文件文本查看工具;
tac /etc/fstab
tac /etc/passwd
tac [OPTION]... [FILE]...
-n:给显示的文本行编号;
-E: 显示行结束符$;
file:查看文件内容类型;
file [FILE]...
echo:回显
echo [SHORT-OPTION]... [STRING]...
-n: 不进行换行;
-e:让转义符生效;
\n:换行
\t:制表符
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
# echo '$SHELL'
双引号:弱引用,变量引用会被替换;
# echo "$SHELL"
注意:变量引用的正规符号 ${name}
shutdown:关机或重启命令
shutdown [OPTIONS...] [TIME] [WALL...]
OPTIONS:
-h: halt
-r:reboot
-c:cancel
TIME:
now (+0)
hh:mm
+m
WALL
日期相关的命令:
Linux:系统启动时从硬件读取日期和时间信息;读取完成以后,就不再与硬件相关联;
系统时钟
硬件时钟
date:系统时钟
显示日期时间:date [OPTION]... [+FORMAT]
FORMAT:格式符
%F
%T
%Y
%m
%d
%H
%M
%S
%s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;
...
设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]
hwclock, clock:硬件时钟
显示或设定硬件时钟
-s, --hctosys:以硬件为准,把系统调整为与硬件时间相同;
-w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;
cal:日历
cal [[month] year]
alias(命令别名):
获取所有可用别名的定义:
# alias
定义别名:
# alias NAME='COMMAND'
注意:仅对当前shell进程有效
撤销别名:
# unalias NAME
which命令:
which - shows the full path of (shell) commands
which [options] programname [...]
--skip-alias:忽略别名
whereis命令:
whereis - locate the binary, source, and manual page files for a command
whereis [options] name...
-b: 仅搜索二进制程序路径;
-m:仅搜索使用手册文件路径;
who命令:
who - show who is logged on
who [OPTION]...
-b: 系统此次启动的时间;
-r: 运行级别;
w命令:
w - Show who is logged on and what they are doing.
创建目录: mkdir /tmp/{t1, t2} 相当于 /tmp/t1 /tmp/t2
more命令:
more FILE
特点:翻屏至文件尾部后自动退出;
less命令:
less FILE
head命令:
查看文件的前n行;
head [options] FILE
-n #
-#
tail命令:
查看文件的后n行;
tail [options] FILE
-n #
-#
-f:查看文件尾部内容结束后不退出,跟随显示新增的行;
stat命令:
stat - display file or file system status
stat FILE...
stat table_config.log
File: ‘table_config.log’
Size: 535 Blocks: 8 IO Block: 4096 regular file
Device: 810h/2064d Inode: 579626 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1241/zhang.xl) Gid: ( 1154/ cdh_etl)
Access: 2019-08-02 11:42:48.290646319 +0800
Modify: 2019-08-02 11:42:35.681366551 +0800
Change: 2019-08-02 11:42:35.681366551 +0800
Birth: -
touch命令:
touch - change file timestamps
touch [OPTION]... FILE...
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]
cp命令:copy
源文件;目标文件;
单源复制:cp [OPTION]... [-T] SOURCE DEST
多源复制:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
单源复制:cp [OPTION]... [-T] SOURCE DEST
如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
如果DEST存在:
如果DEST是非目录文件:则覆盖目标文件;
如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
多源复制:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
如果DEST不存在:错误;
如果DEST存在:
如果DEST是非目录文件:错误;
如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
常用选项:
-i:交互式复制,即覆盖之前提醒用户确认;
-f:强制覆盖目标文件;
-r, -R:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件;
-a:-dR --preserve=all, archive,用于实现归档;
--preserv=
mode:权限
ownership:属主和属组
timestamps: 时间戳
context:安全标签
xattr:扩展属性
links:符号链接
all:上述所有属性
mv命令:move
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE..
常用选项:
-i:交互式;
-f:force
rm命令:remove
rm [OPTION]... FILE...
常用选项:
-i:interactive
-f:force
-r: recursive
删除目录:rm -rf /PATH/TO/DIR
危险操作:rm -rf /*
IO重定向及管道
程序的数据流有三种:
输入的数据流;<-- 标准输入(stdin),键盘;
输出的数据流:--> 标准输出(stdout),显示器;
错误输出流: --> 错误输出(stderr),显示器;
fd: file descriptor,文件描述符
标准输入:0
标准输出:1
错误输出:2
IO重定向:
输出重定向:>
特性:覆盖输出
输出重定向:>>
特性:追加输出
# set -C
禁止覆盖输出重定向至已存在的文件;
此时可使用强制覆盖输出:>|
# set +C
关闭上述特性
错误输出流重定向:2>, 2>>
合并正常输出流和错误输出流:
(1) &>, &>>
(2) COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
特殊设备:/dev/null
输入重定向:<
快捷键
调用上一条命令的最后一个参数:
快捷键:ESC, . (先按ESC松开,再按.)
字符串:!$
eg:cat vi /etc/belle/bdc_aomp_api/app.cfg
vi ESC, .或!$ 会使用 /etc/belle/bdc_aomp_api/app.cfg 参数
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符;
Ctrl+k:删除光标所在处至行尾的所有字符;
Ctrl+l:清屏,相当于clear
Shylin