一、新建外部命令
- type
区别当前命令是外部命令还是内部命令
内部命令区别于bash类型
type -a cmd:显示所有命令存放路径(内部和外部命令)
type -P cmd:显示外部命令的存放路径
内部命令优先级高于外部命令
- which:显示外部命令的路径
-a 显示命令的所有路径
which --skip-alias cmd:查找cmd存放路径但忽略别名信息
- whereis cmd:显示外部命令本身及帮助文档的存放路径
内部命令存放在系统内存中,而外部命令存放在各个不同的路径下,echo $PATH显示出外部命令的存放的所有路径,当把一个可执行程序存放在任意一个命令路径下即可执行,当我们需要新建一个可执行程序时,有以下两种方法:
- 复制命令路径到已经存在的某个路径下
a. 先显示所有的路径,然后我需要查找一个已存在的命令路径来完成我需要的实验,在这我选择的是who命令
b.现在我想新建一个new命令,首先将who命令的路径/usr/bin/who复制并重命名为/usr/local/bin/new,然后执行new命令,发现new命令已经可以执行
二、将新命令的路径添加到系统的PATH路径
-
将who命令的路径复制到/root/new,并重命名为new
- 新添加/root命令路径到PATH下
PATH中的路径为目录不能直接为可执行文件,必须把执行放到PATH路径目录下方可执行 - 若需永久生效,则将PATH路径存放到/etc/profile全局配置文件中,但前提是该新添加的路径目录已经存在
编辑/etc/profile文件,将PATH=$PATH:/root /root路径添加到PATH中,并. /etc/profile刷新生效
二、screen
- 需安装screen包
不同的用户窗口远程控制同一台设备所
建立的会话窗口,将会同步操作
新建screen会话
screen -S [SESSION]
加入screen会话
screen -x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
- 用户1首先创建一个screen的会话dan
显示用户1的所有的screen会话
2、用户2加入screen的会话dan
显示用户2的screen会话
所有加入screen的会话,将会同步显示所有的操作
ctrl+a,d退出d当前的screen会话
三、屏幕录制
-
开始屏幕录制
-t:表示将时间放入time.log文件中,记录了所有时间相关的记录
-a:表示将屏幕上的信息存放到dan.log文件中,即记录了屏幕上的所有操作和显示信息
第二次录制时若不修改时间文件和数据记录文件,则在显示的时候会因为时间问题瞬间飘过,即我们的视觉将不会看到上次的信息回放,但在time.log的时间文件和dan.log的记录文件中还保存着上次的数据记录
- 录制的屏幕信息进行回放
四、nc:监听打开sock文件
- 用户在/tmp目录下,新建一个nc文件
nc -Ul /tmp/danran
- 另外一个终端上,在tmp目录下,可以看到有一个danran的sockt文件
3、第二个终端打开danran socket文件,然后二个终端就可以愉快的进行会话了
5、修改时区
6、只显示隐藏文件
7、大文件删除
当我们需要删除一个大文件时,如果文件没有被其他文件占用,使用rm删除文件即可释放空间
但是如果删除的文件正在被某用户使用,rm虽然可以删除文件,但是空间不会立即释放,因此我们可以使用 > wnejian 此命令清空文件,然后在使用rm删除文件,则可以立即释放空间
rm 删除空间不释放
> :若文件已存在,则覆盖原文件,若文件不存在,则创建新文件
8、用户之间发送邮件
-s指明邮件主题,邮件内容编辑完毕之后 . 结束,邮件保存在/var/mail/邮件目录下
9、rename 批量更改文件名
rename ‘.txt’ '.txt.bak' *.txt 将txt后缀名更改为txt.bak
rename '.txt.bak' '' *.txt 将txt.bak后缀名清除
10、备份配置文件
-a,文件属性信息完全复制,等同于备份
cp -a /etc/passwd{,.bak}
cp -a /etc/passwd /etc/passwd.bak
11、大批量创建文件,从而导致节点被占用完吗,但是磁盘还有剩余空间
echo file{1..20000} | xargs touch
for i in {1..10};do touch file$i;echo file$i is create;done
当系统节点数被占用完时,再创建新文件会提示报错
ls file* 会因为参数过多无法显示报错,故使用ls命令即可
xargs 逐一的传递参数,从而解决参数过多的问题,将ls列出的参数逐一的传递给rm从而删除
ls |xargs rm 批量删除大量文件
11、彻底销毁文件
彻底删除文件
shred -u file
shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。
如果想清除的更彻底一点可以加-z 参数,意思是先用随机数据填充,最后再用0填充。shred -u -z file
另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:
shred /dev/sdb1 (注意不要加-u参数)
shred的详细参数:
-f, --force 更改权限允许写入(如有必要)
-n, --iterations=N 重写N次,默认为3次
--random-source=FILE 从指定文件读取数据
-s, --size=N 将文件粉碎为固定大小 (可使用后缀如K、M、C等)
-u, --remove 重写后截短并移除文件
-v, --verbose 显示进度
-z, --zero - add 用0覆盖数据
–help 显示帮助
–version 显示版本信息
12、复制设备文件
cp不能复制设备文件,复制设备文件用mknod
创建设备文件/app/sda
mknod /app/sda b 8 0 b表示设备文件,8表示设备的主设备号,0表示设备的次设备号
创建设备文件时,应制定文件类型b,以及主设备和次设备号
创建空设备文件
13、修改用户密码
echo dan | passwd --stdin danran 修改danran用户的密码为dan
14、清空文件内容
重定向和cat /dev/null > a 读空设备文件数据到文件,都可实现清空文件的目的,因为空文件数据为空
/dev/zero 设备文件都是零数据
15、win文件和linux文件的区别
win文件比linux文件的回车换行符多一个字节
16、误删除了用户wangcai 的家目录,请重建并恢复该用户家
目录及相应的权限属性
cp -r /etc/skel/ /home/dan 复制/etc/skel下的用户环境文件家目录下,并重命名
chmod 700 dan 修改家目录的访问权限
chown -R dan:dan dan 递归修改家目录及目录下文件的所属主和所属组
17、批量创建用户
newusers passwd 格式文件 批量创建用户
chpasswd 批量修改用户口令
但这种批量创建的用户没有相关的环境配置文件,需手动复制/etc/skel目录下的配置文件到家目录下
18、取随机数
cat /etc/urandom | tr -dc '0-9a-z' | head -c10
19、跟踪查看日志
tail -n0 -f /var/log & &放入后台运行
20、判断变量是不是整数或负数
[[ "$num" =~ ^-?[0-9]+$ ]] && echo digit
21、修改系统提示符颜色高亮显示
PS1=\033[34m[\u@\h \W]$\033[0m