Bash Shell常用命令备忘录

看到一个很基础的Linux下常用命令和参数集合,加了一些说明。都是很基础的命令和用法,可能很多人都会了,大佬请无视,给自己留了备忘!


说明

< > 内的任何东西 都需要被替换掉,比如: <fileName> –> iLoveChina.txt,不要在你的命令中包含 =

.. 意味着在一个命令后面可以提供很多的文件,比如 rm file.txt file2.txt file3.txt .. ..

常用终端快捷键

  • Ctrl + L = 清空终端面板
  • Ctrl + D = 退出登录
  • Shift + PageUp = 回到当前终端面板的顶部
  • Shift + PageDown = 回到当前终端面板的底部
  • Ctrl + A = 将光标移动到当前命令行的开头(不过我一般都是Home键…)
  • Ctrl + E = 将光标移动到当前命令行的末尾
  • Ctrl + U = 删除光标的左边输入内容
  • Ctrl + K = 删除光标的右边输入内容
  • Ctrl + W = 删除光标左边的单词(注意这个和+U的区别,是删除左右的单词 遇到空格会停止,+U的时候会删除全部回到命令行最开头)
  • Ctrl + Y = 粘贴(Ctrl + U,K,W的内容)
  • Tab = 自动补全文件或者命令行
  • !! = 执行最后一次命令
  • Ctrl + C/Z = 终止正在执行的命令

常用终端导航

  • ls -a = 列出所有的文件和文件夹
  • ls <文件夹名> = 列出该文件夹下的所有文件
  • ls -lh = 用更适合阅读的方式列出文件详情和大小
  • ls -l *.jpg = 仅仅列出此后缀的文件
  • ls -lh <文件名> = 仅仅列出该文件的详情
  • cd <folderName> = 切换目录
  • cd / = 前往root
  • cd ../ = 返回上一层目录,提示:../../../
  • cd ~ = 返回当前登录用户的家目录
  • du -h = 用更适合阅读的方式显示 当前文件夹总共占用的硬盘空间
  • du -ah = 用更适合阅读的方式显示 当前文件夹内所有文件各自占用的硬盘空间
  • pwd = 显示当前的工作路径
  • man <command> = 显示指定命令的帮助文档(十级推荐多看这个

常用的文件操作

  • cat <filename> = 显示文件内容
  • head = 显示文件的前几行(可以加 -n 参数来控制具体行数)
  • tail = 显示文件的后几行(可以加 -n 参数来控制具体行数)
  • mkdir = 创建新的文件目录
  • mkdir floderName floderName2 .. = 创建多个文件夹
  • mkdir one/two/three .. = 创建多层级文件夹
  • cp image.jpg newimage.jpg = 复制并重命名一个文件
  • cp image.jpg <folderName>/ = 把文件复制到指定文件夹下
  • cp -R stuff otherStuff = 复制并重命名一个文件夹
  • cp *.txt stuff/ = 复制所有.txt后缀的文件到 stuff目录下
  • mv file.txt Documents/ = 把file.txt文件移动到 Documents文件夹下
  • mv <folderName> <folderName2> = 把前一个文件夹移动到后一个文件夹里面
  • mv file.txt file2.txt = 把file.txt文件重命名为file2.txt
  • rm <fileName> .. = 删除一个或多个文件
  • rm -i fileName = 询问用户是否确认删除文件
  • rm -f fileName = 强制删除文件
  • rm -r folderName/ = 删除文件夹
  • touch fileName = 创建或修改文件(主要看文件是否存在)
  • ln file1 file2 = 硬链接,对其中一个修改其结果都会同步反应到另一个文件中
  • ln -s file1 file2 = 软连接 相当于windows下创建了个快捷方式 删除的话会同步删除关联文件

搜索文件

  • locate <fileName> = 搜索一个文件
  • locate <content> = 在所有的文件中搜索内容
  • find -name <fileName> = 查找该名称的文件
  • find -name <fileName*> = 查找包含该名称的文件
  • find <path> -name <fileName> = 在指定path路径下查找文件
  • find -size +10k = 按文件大小大于10kb的来搜索 (常用单位有:b,k,M,G 注意大小写)
  • find -type <d/f> = 按文件类型来搜索 d是目录 f是文件
  • 更多用法可以使用 man find 来获取

提取排序和过滤数据

  • grep <content> <fileName> = 在文件中查询指定内容
  • grep -i <content> <fileName> = 使用忽略大小写的方式在文件中查找内容
  • grep -r <content> <folderName>/ = 在指定目录下的所有文件中搜索内容
  • grep -E <正则表达式> <fileName> = 使用正则来匹配文件内容
  • grep -E ^aaa file.txt = 在file.txt中查询以aaa开头的行
  • grep -E [0-9] file.txt = 在file.txt中查询包含了数字0-9的行
  • grep -E [a-zA-Z] file.txt
  • sort <fileName> = 对文件内容进行排序
  • sort -o <file> <sortFile> = 把对sortFile文件的排序结果输入到前面的file文件中
  • sort -r <fileName> = 倒着输出文件内容
  • sort -R <fileName> = 随机排序
  • sort -n <fileName> = 把内容按数据排序
  • wc <fileName> = 文字统计,结果为 行数 - 字数 - 占用空间;-l 是行数, -w 是字数, -c 是大小, -m 是字符统计
  • cut = 截断文件的一部分
  • cut -c 2-4 <fileName> = 截取文件中每一行的 第2-4个字符
  • 更多详细使用 man cut 查询

时间设置

  • date = 查看或者修改你的时间
  • date +%H = 如果当前是上午9点就会显示 09
  • date +%H:%M:%S = 查看当前时间的时分秒
  • date +%Y-%m-%d = 查看当前的年月日
  • date 031423421997 = 修改当前时间为 1997年3月14日23点42分,他的格式是 Month | Day | Hours | Minutes | Year => MMDDhhmmYYYY

  • crontab = 计划任务
  • crontab -l = 查看当前已有的计划任务设置
  • crontab -e = 编辑计划任务
  • crontab -r = 删除你的计划任务

crontab 的语法是:

minute hour day month week(0-6来表示,0是周日) command 顺序:分 时 日 月 周 命令

其中:

  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

示例:

  • 47 15 * * * touch /home/bob/movies.txt = 在每天的15:47分创建文件movies.txt
  • * * * * * = 每分钟
  • 30 5 1-15 * * = 在每月的1-15号每天早上的5:30分
  • 0 0 * * 1,3,4 = 在每周的周一,周三周四午夜0点0份执行
  • 0 */2 * * * = 每2小时执行
  • */10 * * * 1-5 = 周一到周五每10分钟执行

后台执行命令

  • cp bigFile.mp4 & = 后台执行命令(在每个命令的最后面加 & 符号就可以了)
  • nohup cp bigFile.mp4 = 即使关掉了终端面板命令也在执行
  • jobs = 查看后台又那些任务在执行
  • fg process1 process2 process3 .. = 把后台任务放到前台来

进程管理

  • w = 查看谁登录了和正在做什么
  • tload = 查看系统负载的平均值 使用 Ctrl+C 可以结束掉命令
  • top = 查看动态进程列表
  • 在top命令下 可以通过输入 q来关闭命令 h来获取帮助 k来杀掉进程
  • kill = 杀掉进程,不过你需要知道进程的 PID 可以通过 ps -u <AccountName> | grep <Application> 来获取
  • kill -9 PID = 强制杀掉进程
  • killall = 杀掉相关的所有进程 比如 killall locate
  • halt = 关闭电脑
  • reboot = 重启电脑
  • ps = 显示进程列表
  • ps -aux | grep process = 查看相关进程

用户管理

  • sudo useradd bob = 使用root创建新用户
  • sudo passwd <cccountName> = 修改指定用户的密码
  • sudo userdel <accountName> = 删除用户
  • groupadd <groupName> = 新建一个用户组
  • groupdel <groupName>= 删除用户组
  • groupmod -n <newGroupName> <groupName> = 修改用户组名
  • usermod -g <groupName> <Account> = 把account用户添加的指定组
  • usermod -l <newAccountName> <accoutName> = 变更账户名称

文件管理

  • chown bob hello.txt = 更改hello.txt文件的所有者为bob
  • chown user:group hello.txt = 把hello.txt文件的所有者变为user,所属组变为group
  • chown -R bob:bob /home/deil = 把目录下的所有目录权限都变掉
  • chmod = 更改文件或者目录的访问权限
  • chmod <权限范围>+<权限设置> = 使权限范围内的目录或文件具有指定权限
  • chmod <权限范围>-<权限设置> = 删除权限范围内的目录或文件具有指定权限
  • chmod <权限范围>=<权限设置> = 设置权限范围内的目录或者文件的权限为指定的值
  • chmod 常用快捷参数 u = user; g = group; o = other; d = 目录; l = 连接; r = read(读取); w = write(写入); x = excute(执行)
  • chmod g+w someFile.txt = 给someFile.txt的所属组添加写入的权限

重定向

  • 在命令行的末尾加上 > 符号可以把命令的结果写入到一个文件
  • cat file.txt > file2.txt = 把file.txt的结果写入到file2.txt

连接命令

  • 在命令行的末尾加上 | 符号就可以连接另一个命令
  • ps -aux | grep docker = 在前面的结果中检索 docker相关进程(具体要看前面的命令是做什么的)

存档和压缩文件

  • 压缩

1.把所有你想压缩的文件都放到同一个目录 mv *.txt <folderName>/
2.压缩tar文件tar -cvf mytar.tar <folderName>/
3.解压tar文件 tar -xvf mytar.tar <folderName>/
3.参数解释:-c = 创建一个.tar的文件;-v = 输出执行过程;-f = 将存档都压缩到一个文件中
4.创建 gzip 压缩文件:gzip mygzip.tar; 解压 gunzip mygzip.tar.gz
5.创建bzip2压缩文件:bzip2 mybip2.tar; 解压 bunzip2 mybip2.tar

  • 在不解压的情况下显示压缩文件的内容

1.gzip -ztf archive.tar.gz
2.bzip2 -jtf archive.tar.bz2
3.tar -tf archive.tar

安装软件

当软件包的仓库是可访问的时候:sudo apt-get/yum install <name>

如果你是从网络上下载了软件的安装包(后缀是 .g 或者 .biz2)你可以这样安装
第一步:创建一个目录来存放它 mkdir /xx/xx/src, 然后进入这个目录 cd /xx/xx/src
第二步:把软件包移动进去 mv ../xx.tar.gz /xx/xx/src
第三步:解压软件包,然后你会看到一个新的目录 同名上面的软件包名字,然后进入这个新目录中
第四步:找到安装文件 一般会有个 configure 文件
第五步:执行安装文件 ./configure,查看日志信息 是否有报错
第六步:如果一切正常 make && make install 等待安装完成


-------------The End-------------