1.cd 切换目录
格式
cd + 路径名(绝对/相对)
举例
cd / ## 跳转到根目录
跳转后可以用pwd 查看当前路径
当前路径和上级路径
. 表示当前路径
.. 表示上一级路径
一些实际举例
cd ../../../ 跳转表示上一级目录的上一级目录的上一级目录
cd . 跳转当前目录
根的上一级目录依旧是根
cd ~ 切换到当前用户的家目录
cd - 切换到上一次去过的目录(可来回切换)
2.file 查看文件类型
语法
file + 文件名
举例
file /etc
一些文件类型讲解
其中可以看下块设备和字符设备,块是随机的,字符设备是有顺序的
ELF linux 可执行程序
window 可执行程序是 exe,msl,叫pe32
3.type 查看命令类型
可知拢共只有两种类型,说下这两种文件的含义
/usr/bin/passwd
单独的程序,搞坏了就没功能了,系统在环境变量PATH不断寻找这个命令在什么地方
shell builtin
shell内置命令,系统知道它在哪里
shell 的含义
在应用层,人无法直接操纵app,需要通过shell来操作操作系统
如这里,也可以叫它命令解释器,它行走江湖带着一些工具如“cd”,就是它的内置命令非常常用。
可以在 etc/shells 目录下查看有多少个shell
如cat /etc/shells
有多个不同的shell可以操作计算机
同样可以用echo $ 符号引用PATH变量来查看它
echo $PATH
系统就会在/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 这些目录里面找外置命令,找到后会记录下来路径位置,直到路径更改,或内存重启。
所以重启能解决内存问题,windows卡住的问题
保存命令过多会增加查询时间,这时候会用1hash表
hash表这种东西,查询时间不会随内容增加而增加,所以shell喜欢用hash表找
所以执行命令过程如下:
passwd -> 从hash表里面查 -没找到->去PATH变量中找–>扔进hash表,下次好用
4.hash 命令hash
添加hash表
-p /bin/ls haha 添加哈希表
hash -p /bin/ls d
haha 作为键值对对应hash目录
查看指定命令的哈希表
-t ls 查看指定命令的哈希表
hash -t passwd
删除指定命令的哈希表
-d ls 删除指定命令的哈希表
hash -d passwd
清空所有的哈希表
-r 清空所有的哈希表
很常用 需要操作一个主机时一般会把哈希表全数干掉,
防止有人在哈希表中加恶意指令。(比如rm)
hash -r
5.alias 添加指定命令别名
用法
alias 目标命令名称=“”
alias chakan ="ll /"
(别名只能在当前会话有效,除非写入磁盘 在/root/.bashrc 里面)
~/.bashc 也就是这里
unalias + 别名 可以做到删除别名
6.date,clock 修改和查看时间
一般不会手动改,强烈不建议在工作时修改,如果领导让你改,记得让他立字据,盖章,按手印…还是绝对不要改了,让他自己改
更改日期格式 月日时分年.秒 ntp 时间同步
date //查看时间
date -s //设置当前时间 只有root权限才能设置
date -s 20160813 //设置成20160813,具体时间会设置为空00:00:00
date -s 01.01.01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2016-08-13" //
date -s "01:01:01 20160813" //这样可以设置全部时间
date -s "2016-08-13 01:01:01" //这样可以设置全部时间
date -s "20160813 01:01:01" //这样可以设置全部时间
date
Sat Apr 23 04:03:36 CST 2022
cst指的是北京时间
clock 查看时间 硬件
hwclock 查看硬件时间
-r or hwclock --show
-w or hwclock --systohc
-s or hwclock --hctosys
7.cal 查看日历
如果只有一个参数表示年份,如果两个表示月份、年份
cal [参数][月份][年份]
-1 显示一个月的月历
-3 显示系统前一个月,当前月,下一个月的月历
-s 显示星期天为一个星期的第一天,默认的格式
-m 显示星期一为一个星期的第一天
-j 显示在当前年份中第几天
-y 显示当前年份的日历
1752年9月为什么少了11天的问题,别人可能会问你,所以这里百度复制了一下原因。
丢失十一天是改变历法的预期结果。
在1752年9月2日之前,英国使用的是朱利安历,
而大部分邻国已经改用更精确的格里高利历。
在提出近70年后,英国发现自己逐渐与世界其他国家脱节。
为了解决这个问题,议会通过了《1750年历法(新式)》。
我们调时间最多只能调到1970年,原因是1970出现了 unix
而 linux 是照着unix搞的
所以1970为unix元年
之后unix 发展为
freebsd
openbsd macos
netbsd
所以Windows也只能调到那段时间
8.man手册 命令使用帮助
使用方式
man 命令名
随便查看一个命令后进入man界面
man界面移动方式
回车 一行一行往下翻
空格 一页一页往下翻
b 上翻一页
k 上翻一行
man界面各个项的含义
CAL(1)表示第一章节
User Commands 表示用户指令
NAME 名称和功能描述
SYNOPSIS 语法
DESCRIPTION 描述
OPTIONS 选项描述
PARAMETERS 案例
man手册 章节问题:
系统会从从1~9章节找该命令,先在那个章节出现哪个就判断为难个,如man cal 中可以看到cal(1),mount(8)
man 8 cal
man 5 passwd
.
1 用户命令,/bin,/usr/bin,/usr/local/bin
2 系统调用,系统调用和命令有可能重名,但是不是一回事,程序员用的
3 库调用,只有库才有库调用,程序员用的
4 特殊文件,如设备文件,系统上的设备文件只是设备的访问入口,文件中不存储任何内容
5 文件格式,配置文件的格式说明,举例passwd
6 games,游戏,休闲益智类游戏
7 杂项,不便归类的杂项,Miscellaneous
8 管理命令,/sbin,/usr/sbin,/usr/local/sbin
9 内核相关文件
手册符号说明
[] 可省略
<> 必选
... 多选多
{} 分担
手册查找
/查找 只能找当前光标以后的 向后匹配
?查找 向前匹配
n 下一个
N 前一个
q 退出
9.touch 命令
touch创建文件
touch 文件名
文件命名规则
1、文件名不能超过255字符 username_table
2、不能使用“/”来当文件名,为什么?/是做根的,也是用来作路径分隔符的
3、严格区分大小写
touch改变时间
默认三个时间都发生改变
-a 只改变access 时间
-m 只改变modify 时间
-t 指定时间
时间类型含义
atime access time 被访问时间
mtime modify time 内容被改变
ctime change time 元数据被改变 随m变化而变化
一个完整的系统有如下行为
3A认证
认证
授权
审计
所以偷偷改了时间其实也是会被看到的
10.stat 查看文件元数据详细信息
11.rm 删除文件
rm [参数] 文件名
-i 提示默认是有的(因为存在一个别名 alias rm = "rm -i")
不想用别名的话可以在命令前加上“\”
\rm 不用命令别名
-f force 强行删除不提示
-r recursive 递归删除来删除目录
rm -rf / 传说中的删库跑路
(会要求让你--no-preserve-root表示已慎重考虑)
但存在通配符*
ls hehe/* 通配符
rm -rf /* 所以就不会有任何提示,想试试的话,记得先给虚拟机存快照
12.mkdir 创建目录
mkdir [参数] 目录名
mkdir
-p parent 父目录 先创建父目录再创建子目录
mkdir -p a/b/c/d/e/f/g
-verbose 详细信息
13.rmdir 删除空目录
rmdir 目录名
没什么用,一般都会用rm
14.cp拷贝
cp [参数] 被拷贝文件 拷贝文件
参数
-r 复制目录 这个常用一点
-p 复制的时候保留文件原有的属性,时间戳等信息
-a 归档复制,常用于备份
一些运用
cp
cp a f 把a数据复制位f
cp a A 把a复制到A目录
cp a b c A 把a复制到A目录
一般最后视为拷贝路径
15.mv 移动
mv 语法和cp一样但移动目录不用加参数r
不是很常用的选项
-i 提示
-f 强制覆盖
-t 先写目标,后写源
16.cat 文本查看
cat [参数] 文件名
cat 连接并显示文件到标准输出
-n 显示行号,不是文件内容
cat 单独一个 连接标准输入和标注输出(屏幕敲啥输啥)
17.tac 查看文本
tac [参数] 文件名
与cat的区别是按行逆序显示
18.more 查看文本
more [参数] 文件名
主要用于显示大文件空格向下翻,b上翻一页,下翻完结束
19.less 查看文本
less [参数] 文件名
man就是用less打开的,所以less和man操作方式相同
20.head 查看文本
查看文本前n行,默认是10行
head [参数] 文件名
head -3 /etc/passwd 查看前三行
head -数字 看行数查看文件前n行
-n制定多上行
-LINE NUMBER 直接用行数作为选项
21.tail 查看文本
tail [参数] 文件名
tail -3 /etc/passwd 查看前三行
查看文件后n行,默认是10行
-n 指定多少行
-f follow,查看文件后并不退出,滚动显示追加内容,跟踪文件的变化
-f需要两台虚拟机,一台看一台修改
22.cut 文本处理
cut [参数] 文件名
cut -d : -f 7 passwd 用“:”分割数据,选择分割后的第七列
d 分隔符 -f 保留区域 passwd 操作文件
-f 1,3 保留1和3
-f 1-3 保留1到3
23.sort 文本排序
sort [参数] 文件名
sort 默认根据字符在ASCII码中的升序排序
-n 指定数值排序,否则按位排如(6>1000)
-r reverse,逆序排
-t 指定字段分隔符
-k key,指定字段进行排序
-u unique,去重
-f 排序是忽略字符大小写
24.uniq 文本排序
uniq [参数] 文件名
等同于sort -u 报告重复的行,注意,重复的行必须相邻
-d 只显示重复的行
-D 显示所有重复的行
-c 显示重复行重复的次数
25.wc 文本统计
uniq [参数] 文件名
wc word count 显示顺序为 行-单词书-字节数
-w 单词
-c 字节
-l (小写字母l)
-m 字符
-L 最长一行有多少字符