你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

linux常用命令)

2021/12/31 1:07:46

linux常用命令

    • 路径切换和显示:cd、ls、pwd
    • 创建:touch、mkdir
    • 复制、移动和删除:cp、mv、rm
    • 跑路命令?千万不要作死自己!
    • 完整的日志清理 shell 脚本如下:
    • 小结

路径切换和显示:cd、ls、pwd

cd (全称 Change directory) 命令在 Linux 中是所有命令的基础依赖。
ls 是离不开 cd 的基友,用来查看当前文件夹下有哪些文件和目录,ls (全称 List files)。
pwd 看看自己身在何处。cd 切来切去,忘了自己身在何处,那就打印下当前的所在的工作路径,
这就是 pwd (Print working directory)。

[cd]

cd / 进入主机根目录。
cd ~ 进入用户根目录。
cd … 返回爸爸(上级)目录,注 . 代表当前目录。
cd …/… 返回爷爷(上级的上级)目录,可以以此类推。
cd – 返回上次目录。来回在两个目录中切换时很好用。
cd /home/root/temp 使用绝对路径,从根目录开始,到temp目录。

[ls]

ls 显示当前目录下所有文件和目录。
ls -l 显示文件详情(文件名称、文件类型、权限、拥有者、文件大小等详细列出)。ll # 等同 ls -l。
ls -al 等同 [ll -a] 显示所有文件及详情(ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)。
ls -lh 等同 [ll -h] 以适合的单位显示文件大小,如kb、Mb、Gb。-h 这个参数在linux中很有用,基本所有需要统计大小的命令中都可以用它,如df -h, du -h,free -h。
ls -lrt 按照文件修改时间升序

详细解释:
-l use a long listing format 以长列表方式显示(详细信息方式)
-t sort by modification time 按修改时间排序(最新的在最前面)
-r reverse order while sorting (反序)
ls-lt 按照时间降序(默认:最新修改的排在前面)

[pwd]

pwd 查看当前所在路径。
pwdx pid 可配合查找应用的安装路径。如查找 zookeeper 的安装路径 ,[ps–ef|grep zookeeper],
找到 pid (进程号),接着 [pwdx pid],即可找到 zookeeper 安装路径。

创建:touch、mkdir

touch (含义触碰)创建一个空文件。
mkdir (全称 Make directory) 建立目录,创建一个空目录。

[touch]

touch info.log 在当前目录下创建一个 info.log 的空文件。
touch {01…10}info.log 注:是两个点号。批量创建文件,01info.log、02info.log、…、10info.log

[mkdir]

mkdir dirs 在当前目录下创建空目录 dirs。
mkdir log temp data 同时创建多个同级目录,目录名以空格分开。
mkdir -p parent/child/logs 一次性创建多级目录,在当前目录下创建parent 目录,
在 parent 目录下创建 child 目录,在 child 目录下创建 logs 目录。

复制、移动和删除:cp、mv、rm

cp (全称 copy)复制。
mv (全称 move)移动。
rm (全称 remove)删除。

[cp]

cp info.log tempInfo.log 将 info.log 文件拷贝一份,拷贝后的文件名为 tempInfo.log。
cp -R parent tempParent将 parent 目录拷贝一份,拷贝后的目录名为 tempParent。
一般加参数 -R(或参数-r,-r/R 表示递归),因为目录下一般会有子目录,否则无法成功拷贝。

[mv]

mv /home/docker/info.log /home/temp/info.log 这个示例里文件名没变,就是搬移下文件位置。
mv /home/docker/info.log /home/temp/tmp.log 这个示例里,搬移了文件位置且变更了文件名。
mv info.log tmp.log 这个示例里等同于对文件进行了重命名。
mv a b c /tmp 一次移动多个文件或到某个目录下

[rm]

rm[文件名] 删除文件,文件不存在会有报错提示。
rm -f [文件名] (常用命令)删除文件,-f,忽略报错信息,不提示。
rm -rf [目录名] (常用命令)递归删除目录。
rm -rf [文件1] [文件2] [目录1] [目录2] (常用命令)删除多个文件和目录。
rm -rf .log 删除当前目录所有.log后缀结尾的文件, 是匹配符表示匹配所有字符。
rm-i .log 删除所有以结尾log文件时,会逐一询问按 y 确认删除,n 不删除。

跑路命令?千万不要作死自己!

rm -rf / 这个命令绝逼不能操作 ,删除根目录下的文件,就是系统中的所有文件都要被删除。如果是线上服务机器操作了,那就悲剧了!误操作了怎么办?赶快ctrl+c、ctrl+z
能保住多少是多少吧。
rm -rf / home/apps/logs/ 这也是个天坑命令!目的是删除日志文。结果书写时“多了一个空格”的bug,看懂了么?这就变成了 [rm -rf /] !
埋藏隐患的日志清理shell 脚本!脚本关键内容如下。
cd ${log_path}
rm -rf
目的是:进入到日志目录,然后把日志都删除。隐患:当目录不存在时,悲剧就发生了!

不跑路,有啥规避方案?

在生产环境把 [rm -rf] 命令替换为 [mv],再写个脚本程序定期清理,模拟回收站的功能。
把日志清理 shell 脚本,改用逻辑与&& 进行连接。
cd ${log_path}
rm -rf *
改用逻辑与 && 进行连接,合并成一句,前半句逻辑失败,后半句命令不执行:
cd ${log_path} && rm -rf *

完整的日志清理 shell 脚本如下:

#!/bin/bash
base_home="/home/apps"
log_path=${base_home}/logs
cd ${log_path} && rm -rf *

小结

1 总结了文件及目录的路径切换、显示、创建、复制、移动和删除操作的常用姿势。

2 cp、rm都用到了-r/R参数,即 recursion,递归的意思,如果不加这个参数,好多时候操作会失败。

3 在操作 cd 、ls、cp、mv、touch、mkdir、rm 等命令时,如果没有指定路径,默认在当前目录下进行操作。如果指定目录,则脱离不了以下几类目录符号:

	 / 主机根目录 
	 ~ 用户目录 
	./ 相对目录,本级目录 
	../ 相对目录的上级目录
	../.. 相对目录,爷爷目录,其他类推
 	- 上次目录
	/xxx/xx2/xx3 绝对目录,从根目录开始

4 删库跑路命令【rm -rf】,以及如何规避!