熟练使用Linux命令,提高开发效率
切换目录
# 切换到主目录,等价于 cd ~
$ cd
# 切换到上一次工作目录
$ cd -
# 切换到当前目录下其他目录
$ cd ./demo
# 切换到上一级目录
$ cd ..
# 切换到其他盘
$ cd E:
# 显示当前目录路径
$ pwd
列表显示
# 显示所有文件
$ ls
# 显示所有文件,包括隐藏文件
$ ls -a
# 列出每个文件更详细的信息
$ ls -l
# 查看当前目录属性
$ ls -ld
# 列出目录中每个文件的大小( K/M/G 单位)
$ ls -lh
# 递归地列出子目录的内容
$ ls -R
# 按最后一次修改时间的顺序显示文件
$ ls -t
# 显示所有以app开头的文件
$ ls app*
结果描述
按列描述:类型及权限 | 引用数 | 用户 | 组 | 大小 | 月 | 日 | 年/时间 | 名称
类型(首字符):
- -: 普通文件、d: 目录文件、b: 块设备、c: 字符设备、l: 链接、s: 套接字
权限:
- r读,w写,x可执行。
权限说明
以-rw-r--r--
为例,第一个-
表示是普通文件,rw-
表示拥有者有读写权限,r--
表示组内用户有读权限,最后一个r--
表示其他用户有读权限
使用 chmod 命令可以修改权限:
+
: 添加权限-
: 去掉权限=
: 设置权限u
: 用户g
: 组o
: 其他
# 给文件添加可执行权限
$ chmod +x file
# 去掉文件的可执行权限
$ chmod -w file
# 给文件所有者添加可执行权限
$ chmod u+w file
# 给文件同组去掉可写权限
$ chmod g-w file
# 所有者读写执行、同组读执行、其他读执行
$ chmod u=rwx, g=rx, o=rx file
除了上面的设置方式,也可以通过八进制设置。读的值是4,写的值是2,执行是1,最高权限是7(4 + 2 + 1)。chmod 755 file
和 chmod u=rwx, g=rx, o=rx file
效果一样
显示文件内容
# 显示file1文件的内容
$ cat file1
# 依次显示file1和file2的内容
$ cat file1 file2
# 把file1和file2文件的内容结合起来,复制到file3。file3原有内容会被清除
$ cat file1 file2 > file3
# 把file1和file2文件的内容结合起来,复制到file3。file3原有内容不会被清除
$ cat file1 file2 >> file3
# 重写file1文件的内容,内容输入完毕后使用 Ctrl+d 保存
$ cat > file1
# 显示file1的开头n行
$ head -n file1
# 显示file1的结尾n行
$ tail -n file1
# 分页显示,每次显示一屏。空格键向下翻一屏(只能向下),回车键向下翻一行,q退出
$ cat file1 | more
# less 和 more 操作方式一样,唯一不同点是less可以通过上下键进行翻行
$ cat file1 | less
说明:more 和 less 参数可以结合其他命令使用,如 ls、find
文件和文件夹
# 新建文件。如果存在同名文件,会修改文件的访问和修改时间
$ touch file
# 新建一个文件夹
$ mkdir folder
# 强制删除一个文件或文件夹
$ rm –rf [file | folder]
# 复制a.txt,副本为b.txt
$ cp a.txt b.txt
# 复制a.txt b.txt,副本保存到test目录
$ cp a.txt b.txt test
# 递归复制test目录,副本保存到test2目录
$ cp -R test test2
# mv命令可以对文件重命名。把a.txt重命名为aa.txt
$ mv a.txt aa.txt
# 把aa.txt文件移动到test目录下
$ mv aa.txt test
# 把aa.txt文件移动到test目录下,并改名为aaa.txt
$ mv aa.txt test/aaa.txt
# 把test目录移动到test2目录
$ mv test test2
文件搜索
find 命令和 grep(General Regular Expression Parser)命令用于查找文件,grep 支持通过正则的方式检索文件
find
格式:find [目录] [条件] [动作]
- 目录:要搜索的目录及其子目录,默认为当前目录
- 条件:搜索文件的筛选方式
-name
: 指定文件名-type
: 指定文件类型(b/c/d/p/l/f)-size
: 指定文件大小,单位可以是K/M/G。+表示大于,-表示小于-user
: 指定用户-group
: 指定组
- 动作:匹配特定的搜索结果,也可以是文件名
# 查找根目录下名字为install.log的文件
$ find / -name install.log
# 查找/etc/目录下,大于20KB的文件
$ find /etc -size +20K
# 查找/etc/目录下,小于50KB的文件
$ find /etc -size -50K
grep
格式:grep [选项] pattern [文件名]
- 选项:-i: 忽略大小写; -n: 显示行号
- pattern: 所要匹配的正则表达式字符串
# 在 /etc/passwd 文件中,查找包含fa字符串的行
$ grep -n fa /etc/passwd
# 过滤ls /bin输出的内容,只显示以m开头的行
$ ls /bin | grep '^m'
压缩命令
# 把a.txt打包成a.tar.gz
$ tar -czvf a.tar.gz a.txt
# 解压a.tar.gz
$ tar -xzvf a.tar.gz
# 显示压缩包的信息
$ tar -tzvf a.tar.gz
-c
: 打包
-z
: 压缩包为.tar.gz格式
-v
: 显示过程
-f
: 指定打包后的文件名
-x
: 解压
快捷键
ctrl+l 清屏
ctrl+c 强制终止当前命令
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索
一次tab 补全
两次tab 提示
shift+pageup 向上翻页
shift+pagedown 向下翻页
用户管理、组管理
Linux 是一个多用户系统,允许创建用户和组,可以把某个用户归属于某个组。可以针对组或者用户单独设置权限
# 创建用户
$ useradd username
# 为用户设置密码,修改密码也是同样命令
$ passwd username
# 彻底删除用户
$ userdel -r username
# 切换用户
$ su username
# 创建用户组
$ groupadd groupname
# 向组中添加用户
$ gpasswd -a username
# 删除组中的用户
$ gpasswd -d username
# 设置文件所属的组
$ chgrp groupname filename
# 设置文件所有者
$ chown username filename
# 删除用户组
$ groupdel groupname
PATH 变量
PATH 指的是环境变量,我们之所以可以在任何目录下执行上面的这些命令,是因为/bin
目录默认添加到了系统的 PATH 中。可以通过echo $PATH
查看当前用户的 PATH 信息:
/root/.nvm/versions/node/v8.12.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
上面的目录以分号分割,执行命令时会依次查找这些目录,直到找到命令为止。用户也可以自己添加环境变量,打开用户目录下的.bashrc
文件,文件末尾添加export PATH=$PATH:dir1[:dir2]
,添加好后需要使用source filePath
命令让配置生效。