Linux基础入门之(常用命令)
1.命令行构成
命令提示符一般有GUI、GLI两种接口
1.1命令行组成:命令提示符、prompt、bash(使用的shell)
1.1.1 提示符格式默认为系统变量设置
使用echo命令输出PS1系统本地变量
[root@mzf testdir]# echo $PS1
[\u@\h \W]\$
1.1.2 用户登录提示符:
$:表示普通用户
#:表示系统用户
pwd 显示当前用户所在目录
[root@mzf testdir]# pwd
/testdir
1.1.3 shell:命令程序翻译,系统调用~kernel 之间 (命令解释器)
同时也是一种高级程序语言
shell有多种分类: sh csh tcsh ksh zsh 一般linux常用为bash
查看shell
查看当前使用的
echo ${SHELL} ----- 解释:调用变量时+$变量名
查看当前支持的所有shell
cat /etc/shells
查看用户的默认shell
getent passwd [username]
提示:bash也是一种程序
2.命令格式
2.1 命令的组成
一般为
command [option] [args]
命令名 选项 参数
<> : 必选
[] : 可选
| : 多选一
{} :分组
2.1.1选项
作用:用于启动后关闭某些或者某个功能
选项分类:
短选项:-c ,例如 -l -h
长选项:--world ,例如 --all --human-readable
2.1.2参数:
命令的作用域对象,常见的有文件名、用户名等
注意事项:
1、多选项,以及多参数和命令之间使用空白字符分隔
2、取消和结束命令执行:Ctrl + C Ctrl + D
3、多个命令可以用;符号分开
4、一个命令可以用\分成多行
3.命令分类
提示: 命令运行在shell下,linux默认为bash
3.1 命令分类内部命令和外部命令
3.1.1
类型区别:
内部命令:操作系统自带的命令,系统内部的格式来执行
外部命令:在当前系统路径下有对应的可以执行的目录以及文件
3.1.2
禁用和启用内部命令: 使用enable 命令
用法: enable - n [command]
例子: 禁用和启用cd 内部命令
默认切换到家目录
[root@mzf testdir]# cd
禁用 cd 命令
[root@mzf ~]# enable -n cd
再次使用cd 命令切换到上次所在目录,提示当前shell找不到此命令
[root@mzf ~]# cd -
-bash: cd: command not found
启用 cd 命令
[root@mzf ~]# enable cd
cd又可以使用了,切换到上次所在目录成功
[root@mzf ~]# cd -
/testdir
3.1.3
判断一个命令的类型: 使用 type 命令
用法: type [command]
例子:
显示cd 为shell内置命令
[root@mzf testdir]# type cd
cd is a shell builtin
显示ls 为命令别名
[root@mzf testdir]# type ls
ls is aliased to `ls --color=auto'
显示 touch 为外部命令,执行文件在/bin/touch
[root@mzf testdir]# type touch
touch is hashed (/bin/touch)
3.1.4
找到外部命令的执行文件: 使用 which
用法: which [command]
例子:
[root@mzf testdir]# which ls
alias ls='ls --color=auto'
/bin/ls
找到外部命令的帮助文件: 使用whereis
用法:whereis [command]
[root@mzf testdir]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
3.1.5
外部命令执行过后会将命令路径缓存到kv(key-value)中
查看和清除外部命令的缓存: 使用hash
hash [option] [args]
例子:
查看当前执行过的命令缓存
[root@mzf testdir]# hash
hits command
4 /usr/bin/tty
1 /bin/hostname
1 /bin/df
注; hits 表示执行的次数
清空所有缓存命令缓存 remove
[root@mzf testdir]# hash -r
[root@mzf testdir]# hash
hash: hash table empty
清除指定命令缓存
[root@mzf testdir]# hash
hits command
1 /sbin/ifconfig
2 /bin/ls
[root@mzf testdir]# hash -d ls
[root@mzf testdir]# hash
hits command
1 /sbin/ifconfig
3.2 自动补全
命令补全
内部命令:会直接调用系统内部shell进行查找
外部命令: 系统会想到hash缓存表中查找,找不到会向bash会操作PATH环境变量中的路径去查找,按从左往右的顺序进行查询
路径补全
把用户给的的字符当作开头,如果唯一将自动补全,多个将列开头符合的文件列表
使用方法: 按一次或2次Tab键,CentOS7中支持命令的长选项自动补全
4.常用命令
系统和硬件时间
系统和硬件时间的区别
硬件时间:主板blos cmos上的时间 (开机工地的纽扣电池)
时间管理
linux : 使用rtc 实时时间
硬件时钟 (比如开机的供电纽扣电池)
hwclock or clock
-w 把系统时间写入硬件
-s 把硬件时间写入系统
系统时钟 (与硬件时钟有点误差)
date
系统时间和硬件时间相互转换 clock 命令
查看当前系统时间
[root@mzf testdir]# date
Sat Jul 23 14:00:38 CST 2016
查看当前硬件时间
[root@mzf testdir]# clock
Sat 23 Jul 2016 01:57:37 PM CST -0.155398 seconds
把系统时间写入硬件时间
[root@mzf testdir]# clock -w
查看当前硬件时间
[root@mzf testdir]# clock
Sat 23 Jul 2016 02:01:13 PM CST -1.056194 seconds
修改系统时间
[root@mzf testdir]# date '100110102001.10'
Mon Oct 1 10:10:10 CST 2001
将硬件时间写入系统时间
[root@mzf testdir]# clock -s
[root@mzf testdir]# date
Sat Jul 23 14:04:00 CST 2016
注: hwclock 的用法和clock的以上用法一样
设置系统时间 date 命令
用法:date [[MMDDhhmm[[CC]YY][.ss]]
例子:设置当前系统时间为2016年7月23号13点55分59秒
[root@mzf testdir]# date '072313552016.59'
Sat Jul 23 13:55:59 CST 2016
显示系统时间 date 命令
例子
显示当前系统时间
[root@mzf testdir]# date
Sat Jul 23 13:23:51 CST 2016
显示当前系统时间为年月日
[root@mzf testdir]# date +%F
2016-07-23
显示当前系统时间为年月日 小时分钟秒
[root@mzf testdir]# date +%Y-%m-%d%t%H:%M:%S
2016-07-23 13:24:59
[root@mzf testdir]# date
Sat Jul 23 13:26:29 CST 2016
显示前10天的年月日
[root@mzf testdir]# date -d '-10 day'
Wed Jul 13 13:27:08 CST 2016
显示后20天的年月日
[root@mzf testdir]# date -d '20 day'
Fri Aug 12 13:27:23 CST 2016
[root@mzf testdir]# date
Sat Jul 23 13:27:40 CST 2016
显示前10天的年月日
显示指定日期格式的前1 天
[root@mzf testdir]# date -d '-1 day' +%F
2016-07-22
显示指定日期格式的后一天
[root@mzf testdir]# date -d '1 day' +%F
2016-07-24
显示指定日期格式的前1 天
[root@mzf testdir]# date -d '1 day ago 20140101' +%F
2013-12-31
显示指定日期格式的后1 天
[root@mzf testdir]# date -d '-1 day ago 20140101' +%F
2014-01-02
date命令
显示日历表 cal 命令
用法:cal [CCYY] 或者 cal [MM] [CCYY]
例子
显示当这个月的日历
[root@mzf testdir]# cal
July 2016
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
显示今年的日历
[root@mzf testdir]# cal 2016
2016
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 1 2 3 4 5
3 4 5 6 7 8 9 7 8 9 10 11 12 13 6 7 8 9 10 11 12
10 11 12 13 14 15 16 14 15 16 17 18 19 20 13 14 15 16 17 18 19
17 18 19 20 21 22 23 21 22 23 24 25 26 27 20 21 22 23 24 25 26
24 25 26 27 28 29 30 28 29 27 28 29 30 31
31
显示指定年月的日历
[root@mzf testdir]# cal 07 2016
July 2016
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
设置多窗口会话 screen 命令
用法:
注:session为自定义的会话名称
screen -S [session] 创建会话
screen -ls 查看打开的会话
screen -x [session] 加入会话
screen -d 远程detach 剥离会话
Ctrl+d,a 剥离当前会话
exit 退出会话
screen -r [session] 恢复某个会话
screen -d -r [session] 退出当前会话并恢复到指定会话
例子
创建一个会话
[root@mzf testdir]# screen -S mysession
查看当前打开的会话
[root@mzf testdir]# screen -ls
There is a screen on:
5544.mysession (Attached)
按Alt+d,a,暂时离开当前会话,然后可以看到
[root@mzf testdir]#
[detached]
然后查看已经打开的会话
[root@mzf testdir]# screen -ls
There are screens on:
7472pxs-0.mzf (Detached)
5575.mysession (Attached)
恢复到刚才创建的会话
[root@mzf testdir]# screen -r mysession
使用另外一个终端登录
[root@mzf testdir]# screen -x mysession
然后会发现输入一些命令的操作和输出结果会同屏显示
这时断开连接
[root@mzf testdir]# screen -ls
There are screens on:
7472pxs-0.mzf (Detached)
5575.mysession (Attached)
然后再次加入并剥离其它会话
[root@mzf testdir]# screen -ls
There are screens on:
7472pxs-0.mzf (Detached)
5575.mysession (Attached)
[root@mzf testdir]# screen -d -r 5575
输出字符 echo 命令
使用方法:echo [opption] [string]
常用选项:
-n 表示不换行输出
-e 特殊处理一些特定意义字符,并不会当成一般字符输出
\a 表示输出是发出警报声
\b 表示退格键
\c 表示压缩换行
\n 换行且光标移至行首
\r 表示光标移至行首不换行
\t 插入制表符
\\ 输出 \ 符号
\0nn 要插入的nnn(八进制)字符ACSII字符
\xHH 插入HH(十六静止)代表的ACSII字符
注意:在模型ssh、telnet终端上可能使用-e 输出ACSII可能出现乱码或者屏幕混乱
使用 reset --- 恢复系统字符界面乱码
例子
输出标准字符串
[root@mzf testdir]# echo "Hello World"
Hello World
不换行输出
[root@mzf testdir]# echo -n "Hello World"
发出警报声
[root@mzf testdir]# echo -e "ssssss\a"
删除\b前面的一个字符
[root@mzf testdir]# echo -e "Hello\b World"
Hell World
压缩换行符
[root@mzf testdir]# echo -e "Hello\c World"
Hello[root@mzf testdir]# echo -e "Hello\c World"
换行且光标移动到行首
Hello[root@mzf testdir]# echo -e "Hello\n World"
Hello
World
不换行移动光标到行首
echo -e "aaa b\rbb"
bba b
echo -e "aaa \rbbb"
bbb
echo -e "aaa \rbbb\r"
bbb
echo -e "aaa bbb\r"
aaa bbb
插入制表符(Tab键)
echo -e "aaa\tbbb"
aaa bbb
插入\符号
echo -e "aaa\\kbbb"
aaa\kbbb
显示红色字体
echo -e "\033[43;31mred hat\033[0m"
输出闪烁的字体
echo -e “033[43;31;5m*******\033[0m”
5.命令调用
“” 表示强引用
‘’ 表示弱引用
`` 表示子命令
调用一个命令的执行结果
例如1: 调用并输出主机名
[root@mzf testdir]# echo "my hostname is $(hostname)"
my hostname is mzf.domain
[root@mzf testdir]# echo "my hostname is `hostname`"
my hostname is mzf.domain
例如2: 使用’’会吧命令调用当作普通字符输出
[root@mzf testdir]# echo 'my hostname is $(hostname)'
my hostname is $(hostname)
6. 分组调用 {}
把字符分组输出
[root@mzf testdir]# echo file{1,2,3}
列出当前目录下的file1 file2 file3
[root@mzf testdir]# ls -l file{1,2,3}
创建多个文件
[root@mzf testdir]# touch file{1,2,3}.{txt,log}
强制删除多个文件
[root@mzf testdir]# rm -f file{1,2,3}
7. 使用命令帮助
whatis简介命令的用途
特性:
1、显示命令的简短描述
2、每晚使用一个数据库更新
3、刚安装后不可立即使用
4、makewhatis (centos6) | madb (centos 7)重新制作数据库
5、举例: whatis cal 或 man -f cal
whereis查看文件的帮助文档路径
whereis <command>
使用帮助文档
内部命令:
help <command>
man bash
外部命令:
1、 command --help 或者 command -h
2、 使用帮助手册
man <command>
3、 查看命令详细信息
info <command>
4、 程序自身的帮助文档
README
INSTALL
ChangeLog
5、 程序官方文档
官方站点:Documentation
6、发行版的官方文档
7、 Google
INSTALL
ChangeLog
(5) 程序官方文档
官方站点:Documentation
(6) 发行版的官方文档
(7) Google
command --help 的使用
作用: 显示命令的总结和参数列表
使用大多数,并不是所有
举例:
date --help
Usage:date[OPTION]...[+FORMAT]or: date[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]
说明:
[] 可选的,可以加
CAPS 或者 <command> 是变量,必须项
... 表示一个分组的参数列表,比如user1,user2
start|status|stop|restart 表示多选一,不可同时选择
-abc同等 -a -b -c
8. 执行过的命令历史记录 history
8.1 常用命令用法
查看命令记录(记录号+命令)
history
清除所有命令历史记录
history -wc
设置记录大小为0
export HISTSIZE=0
删除第几号记录,num为指定记录号
history -d [num]
删除从num号到upnum号的历史记录
history -d [num] [upnum]
关闭和开启历史记录功能
set +o history 关闭history历史记录功能
set -o history 开启history历史记录功能
8.2如何不关闭历史记录功能并不记录输入的命令?
1、 设置HISTCONTROL环境变量
export HISTCONTORL=ignospace
2、 在用输入的命令前面敲一个空格键
[space]echo "this is a top sercet."
注:[space]是指你敲了空格键
3、 查看历史记录是否记录上次命令
history
发令未记录echo 命令表示成功