Linux命令全解

本文详细介绍了Linux命令的三大类别:文件目录类、进程控制类和用户及权限管理类。重点讲解了常用命令如ls、cd、mkdir、rm、cp、mv、find、locate、grep、tar以及权限管理的chmod。还提到了envsubst命令在配置文件模板替换中的应用,简化了批量修改配置文件的流程。
摘要由CSDN通过智能技术生成

Linux命令大致可以分为三类:

  • 文件目录类命令
  • 进程控制类命令
  • 用户及权限管理类命令

命令格式:

命令名称  --选项  参数
ls --all /etc
命令名称  -选项缩写 参数
ls -a /etc

文件目录操作

浏览目录

ls 浏览目录子文件

命令英文原意:list

ls 选项[-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性

pwd 展示当前所在的路径

命令英文原意:print working directory

pwd

目录操作命令

cd 切换目录

命令英文原意:change directory

cd /
cd ..

mkdir 创建目录

命令英文原意:make directory

mkdir [目录名]
mkdir newdir

rmdir 删除空目录

命令英文原意:remove directory

rmdir [目录名]
rmdir newdir

文件操作命令

cp 拷贝文件或者目录

英文原译, copy

cp [参数] <源文件路径> <目标文件路径>
-p :连同文件的属性一起复制,而非使用默认方式,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为
-u :目标文件与源文件有差异时才会复制

将test1.txt复制成test2.txt:
cp test1.txt test2.txt

将test3.txt复制到/tmp目录中:
cp test3.txt /tmp (目录)

目录拷贝:
cp –r test1(目录) test2(目录)

rm 删除文件或者目录

英文原意,remove

rm [参数] <目标文件路径>
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数

删除某个文件: rm myfiles(文件名)
删除当前目录下的所有文件:rm *
递归删除某个目录(包含该目录下所有文件及子目录): rm -r myfolder(目录名)
强迫删除所有后缀名为txt文件:rm –f *.txt
删除当前目录下的所有文件:rm –i * (删除文件时会询问,可按Y或N键表示允许或拒绝删除文件)

mv 移动文件和目录

mv 文件1 文件1新位置(新位置如果是目录则移入目录,如果是文件名则移动并改名)

find(文件搜索命令)

find [搜索范围] [搜索条件]

  1. 避免大范围搜索,会非常消耗系统资源
  2. 可以使用通配符匹配
    • *匹配任意内容
    • ?匹配任意一个字符
    • []匹配任意一个括号内的字符
  3. 完全匹配
  4. 时间
    • -mtime +10:查找10天前修改的文件
    • -mtime 10:查找10天前当天修改的文件
    • -mtime -10:查找10天内修改的文件
  5. 类型
    • -atime 文件访问时间
    • -ctime 改变文件属性
    • -mtime 修改文件内容
  6. 其他选项
    • -iname test:不区分要搜索的test大小写格式
    • -user root:搜索属于root用户的文件
    • -nouser:搜索没有所属者的文件,liunx中,每个文件都有所属者,如果没有,有可能有以下几种情况:垃圾文件、内核产生的文件(proc/,sys/)、外来文件(U盘拷入)
    • -size:文件大小用小写k和大写M
    • -a 表示and
    • -o 表示or

find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-exec {} \; 固定格式,表示直接对前面的搜索结果进行后面的命令处理

locate(在数据库中搜索文件)

locate : 定位

locate [文件名]

  1. 因为搜索数据库,所以搜索速度非常快
  2. 数据库文件的位置在/var/lib/mlocate,这个数据库中包含了所有的文件名
  3. 该数据库文件每天更新一次,当我们作新建文件,或是其他等操作,系统不会主动更新数据库,需要 使用updatedb 命令更新
  4. locate命令搜索遵循/etc/updatedb.conf配置文件
    #是否开启搜索限制
    PRUNE_BIND_MOUNTS="yes"
    # 搜索时,不搜索的文件类型
    # PRUNENAMES=".git .bzr .hg .svn"
    # 搜索时,不搜索的文件路径
    PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"
    # 搜索时,不搜索的文件系统
    PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts  ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb  devtmpfs"

grep 在文件中搜索匹配的字符并进行输出

英文原译:Globally search a Regular Expression and Print

grep[参数] <要找的字串> <要寻找字串的源文件>
-a :将binary文件以text文件的方式查找数据
-c :计算找到“查找字符串”的次数
-i :忽略大小写的区别,即把大小写视为相同
-v :反向选择,即显示出不包含‘查找字符串’内容的那
一行

tar 打包或者压缩

英文原译:tape archive

tar [参数] <文件>
-t :查看打包文件的内容含有哪些文件名
-c :新建打包文件
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同
一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir

将当前目录的所有文件打包成test.tar:tar -cvf test.tar *
将当前目录的所有文件打包成test.tar,再用gzip命令压缩: tar -czvf test.tar.gz *
查看test.tar文件中包括了哪些文件: tar -tf test.tar
将test.tar解打包:tar -xvf test.tar
将foo.tar.gz解压缩并解打包:tar -xzvf foo.tar.gz

浏览文件

cat 连接文件并打印到标准输出设备上

命令英文原意:concatenate and display files

-E 在每一行的末尾显示$
-n 为显示行添加行号

cat m1 (在屏幕上显示文件ml的内容)
cat m1 m2 (同时显示文件ml和m2的内容)

more 分页显示文件内容

more [文件名]

(空格) 或f 显示下一页
(Enter) 显示下一行
q或Q 退出

less 分页显示文件内容

less [文件名]

(空格) 或f 显示下一页
(Enter) 显示下一行
q或Q 退出

除此之外,还可以使用方向键上下滚动文件

head 显示文件前几行的内容

head [参数] <文件名>
-n:显示前n行,不指定此参数显示前10行

tail 显示文件后几行的内容

tail [参数] <文件名>
-n:显示后n行,不指定此参数显示后10行
+n:从第n行显示到文件尾
-F:用于跟踪显示不断增长的文件结尾内容

命令搜索命令

whereis(命令搜索命令)

  1. 用于搜索命令所在的路径以及帮助文档所在的位置,不能搜索用户自己创建的文件等信息。
  2. 不能看到shell命令(自带的命令,比如cd命令),只能看到外部安装的命令(环境变量中的命令)
  • -b:只查找可执行文件
  • -m:只查找帮助文件

which(命令搜索命令)

  1. 与whereis命令类似,但是还可以看到命令文件的所在位置

进程控制命令

ps 查看进程信息

英文原意:process status

ps命令是用来显示系统瞬间的进程信息,它可以显示出在用户输入ps命令时系统的进程及进程的相关信息。

ps [参数]
l 长格式输出
u 按用户名和启动时间的顺序来显示进程
j 用任务格式来显示进程
f 用树形格式来显示进程
a 显示所有用户的所有进程(包括其它用户)
e 显示所有用户的所有进程(包括其它用户)
x 显示无控制终端的进程
r 显示运行中的进程

权限和chmod命令

-rw-r--r--:

rw-r–r–
文件类型(-文件 d目录 l软连接)u(user)所有者g(group)所属组o(other)其他人

r 读取权限 read
w 写入权限 write
x 执行权限 excute

所有者,当前登陆用户所拥有的权限
所属组,当前登陆用户所在的用户组的拥有的权限
其他,非当前用户,用户组,即其他用户所拥有的权限

chmod命令

change mode, 修改权限

chmod [选项] 模式 文件名

选项:
-R 递归

模式:
[ugoa][+-=][rwx]
[mode=421]

修改权限:

chmod u+x cangls.av #给文件所有者添加执行权限
chmod g+w,o+w furong.av #给文件添加所属组和其他人的修改权限
chmod u=rwx,g=rw fengjie.av  #直接设置权限,比较方便
chmod a=rwx fengjie.av #设置所有人的权限为读写执行,通常不用

使用数字代表权限修改文件的权限:

权限代表数字
r4
w2
x1

如果要设置如下权限,则可以使用如下命令rwxr-xr-x:

rwx=4+2+1=7
r-x=4+1=5

即
chome 755 文件名

常用的权限:
777 最高权限
755 执行权限
644 文件权限,所有者可更改,其他只可读取

权限对文件的作用

读取:cat、more、head、tail
写入:vi、echo,不包含删除权限
执行:可执行

注: echo 111 >> test.txts echo也是一个写入操作

权限对目录的作用

读:可以查看目录下的文件 (ls)
写: 具有修改目录结构的权限 (touch rm mv cp)
执行:可以进入目录(cd)

envsubst(配置文件模板替换)

假设应用程序下有如下配置文件application.properties:

db.name=mysql
db.user=root
db.password=root

此时如果我想修改数据库用户和密码,需要使用vim打开文件,然后修改值再保存重启。但是如果当前目录下有100个类似的文件,这样的操作就很繁琐了(建议使用配置中心)。

所以,可以使用envsubst命令,统一替换所有的配置文件,步骤如下:

# 建立application.properties的模板配置文件:application.template
db.name=${dbname}
db.user=${dbusername}
db.password=${dbpassword}

# 建立unified-config.conf文件,用于存放变量值
export dbname=mysql
export dbusername=root
export dbpassword=root

# 执行source unified-config.conf,将这些之定义为环境变量,这是环境变量中就会拥有这些值了
source unified-config.conf

# 执行envsubst命令
# 1. 加载application.template
# 2. 然后处理后再从管道流输出到application.properties中
envsubst < application.template > application.properties
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值