此文章为linux常见终端命令汇总和一些小问题的解决方法,会不定期更新。

[常见指令]

1. 误按 Ctrl+s 锁住终端。

ubuntu16命令行误按 Ctrl + s 导致终端锁定,Ctrl + q可以解锁。 Ctrl + c 也可以解锁终端锁定。Ctrl + q还可以解锁 vim Ctrl + s 锁定的情况,Ctrl + c不可以。

2. 查看当前目录下所有文件总大小:

du -sh (-sh中的h为自动选择单位K/M/G,想要查看精确大小只需 -s)

3. 查看当前目录下文件数量:

ls |wc -w

4. 查看系统实时资源使用情况:

top

5. 查看CPU个数:

grep 'physical id' /proc/cpuinfo | sort -u

6. 查看CPU核心数:

grep 'core id' /proc/cpuinfo | sort -u | wc -l

7. 查看CPU线程数:

grep 'processor' /proc/cpuinfo | sort -u | wc -l

8. 查看当前登录用户名

whoami

可以用在shell脚本判断当前运行者的身份,以找到用户目录。root-/root; user-/home/username/

9. 树莓派查看系统版本

lsb_release -a

Codename对应的一项就是系统版本

10. zip 文件解压

unzip 压缩包.zip -d 解压路径

11. ubuntu终端粘贴复制

常用的Ctrl+c 和 Ctrl+v 命令在ubuntu终端无法使用,可以使用鼠标右键进行粘贴复制,也可以使用快捷键Ctrl+shift+c 复制,Ctrl+shift+v 粘贴。

12. 时间戳相关

转换指定日期为Unix时间戳:

date -d '2020-12-30 10:23' +%s     (-> 1609294980)

Unix时间戳转换为日期时间:

date -d @1609294980     (->2020年 12月 30日 星期三 10:23:00 CST)

指定格式转换:

date -d @1609294980 +"%Y-%m-%d %H:%M:%S"     (->2020-12-30 10:23:00)

来源:https://www.cnblogs.com/openstack-elk/p/6825888.html

补充:

date 以固定格式输出

date "+%Y-%m-%d %H:%M:%S" (->2022-04-14 09:49:51)

13. 快速清空一个文件

echo -n > 文件名

vim快速清空一个文件:gg(跳转到文件首)+dG(删除光标所在行以及其下所有行的内容,d删除+G文件尾)

14. 向文件中写内容

覆盖:

echo "内容" > 文件名

追加并换行:

echo "内容" >> 文件名

15. iptables

iptables管理规则时需要先使用 -t 选择表(table),如 -t nat;

再选择链(chain) 如-A POSTROUTING选择源地址转换;

最后选择如对象 -j SNAT

POSTROUTING:源地址转换(内网地址转公网地址->发往公网);(和SNAT搭配)

PREROUTING: 目的地址转换(公网地址转内网地址->来自公网);(和DNAT搭配)

policy规则: ACCEPT(接收), REJECT(拒绝), DROP(丢弃)

如果出现错误,可以通过命令dmesg查看具体信息。

详细介绍:iptables入门指南

16. 管道符 "|"

command1|command2

上一条命令的输出作为下一条命令的参数

17. "&"和"&&"

"&" 放在指令的后面,表示让指令后台运行;

"&&" 放在两条指令中间,如 command1 && command2, 实现逻辑与的功能,只有command1执行成功时,才会继续去执行command,类似于C语言或Java中        的逻辑与。

shell执行某个命令时,会返回一个返回值,保存在变量 $? 中,当 $? == 0 时,表示命令执行成功,$? 不为 0时,表示命令执行失败,这个就是上述command1

执行传递的参数,在shell脚本中也可以单独拿出来放在一个语句后面判断命令是否执行成功。

18. "||"

command1 || command2 || command3

逻辑或,只要有一个命令返回真,后面的命令就不再执行

[16, 17, 18来源: https://www.jb51.net/article/136261.htm]

19. 路由跟踪

traceroute www.baidu.com

[参考:https://blog.csdn.net/sinat_33442459/article/details/75126149]

(在windows 终端上,使用 tracert 指令)

20. 小火车

apt install sl

sl

运行sl, 可以在屏幕上跑过一列火车~

21. 环境变量

(1). 指定二进制文件依赖库的路径:

export $LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH

(这句话的意思是把当前路径下的lib文件夹添加到软件依赖库的最前面)

也可以新建一个文件,如ld.txt,内容写作:

export $LD_LIBRAYR_PATH=./lib:$LD_LIBRARY_PATH

运行时使用:source ld.txt

注意:(1)中设置为临时环境变量,仅对当前终端有效,退出终端时会清空此临时环境变量

(2). 查看当前环境变量(以LD_LIBRARY_PATH为例)

echo $LD_LIBRARY_PATH

(3). 重置当前环境变量(以LD_LIBRARY_PATH为例)

unset LD_LIBRARY_PATH

22. md5sum sha1sum

计算文件的md5值和sha1值

md5sum file
sha1sum file

23. base64

使用base64计算标准输入输出的加解密

base64对字符串 HelloWorld

base64加密

echo HelloWorld | base64

输出:SGVsbG9Xb3JsZAo=

base64解密

echo SGVsbG9Xb3JsZAo= | base64 -d

输出:HelloWorld

对于文件,如 test.txt,可以将字符串 HelloWorld直接写入 test.txt,然后执行 base64 test.txt,就可以获得 SGVsbG9Xb3JsZA==

将SGVsbG9Xb3JsZA==写入test.txt,执行 base64 -d test.txt 就可以获得 HelloWorld,即 base64直接对文件内容进行加解密操作

把一段byte类型数据base64加密:

echo "ab61caf1cc7cd1ef38d27dbbb89c5ce4a690dd89"|xxd -r -p|base64

输出:q2HK8cx80e840n27uJxc5KaQ3Yk=

base64解密后,将解密出的byte类型转换为string:

echo q2HK8cx80e840n27uJxc5KaQ3Yk=|base64 -d|xxd -p

输出:ab61caf1cc7cd1ef38d27dbbb89c5ce4a690dd89

[参考 Shell - 如何在Bash中将String转换为Byte数组linux base64加密解密]

24. 命令行快速格式化json字符串

安装:

centos: yum install -y jq

ubuntu: sudo apt-get install jq

使用:

echo '{"a":"1","b":"2","c":{"aa":"1","bb":"2"}}' | jq

25. wget

wget -c 下载文件的url -O  文件重命名

-c 断点续传

-O 重命名下载好的文件

26. watch

监听端口3306,每1秒刷新一次

watch -n 1 -d 'netstat -ant|grep 3306'

27. ulimit -n xxx

ulimit -n 65535 将每个进程可以打开最大文件数修改为 65535

参考:ulimit -n 修改

28. iftop

一个流量实时监控工具,安装:

sudo apt install iftop

简单使用:

# 简单显示

sudo iftop

# 指定单位为 bytes

sudo iftop -B

# 指定网卡

sudo iftop -i eth0

更多可以参考博客:iftop 使用

29. openssl

  (1). aes-cbc-128加解密

  

# 加密:
openssl enc -aes-128-cbc -salt -in test_aes.txt -out test_aes_enc.txt -k 1122334455667788 -pbkdf2 -iter 10 # 解密:
openssl enc -d -aes-128-cbc -in test_aes_enc.txt -out test_aes_dec.txt -k 1122334455667788 -pbkdf2 -iter 10 # -pbkdf2 选项来指定使用 PBKDF2 密码派生算法
# -iter 迭代次数
# 迭代次数越高,派生密钥的计算成本越高,从而提高了安全性 # 以上结果由chatgpt生成,本人验证后放到此处

[centos]

1. 查看centos版本

cat /etc/redhat-release

[问题解决]

1.windows和linux文件格式不兼容。在windows上创建了文件,再在linux上打开,经常会提示如"aaa^M,未识别的符号"等问题。

解决:使用vi编辑器打开文件,输入":set ff=unix",之后保存退出":wq",就不会报错了。

2. vim实现字符串全局替换

输入":%s/原字符串/新字符串/g",之后保存退出":wq"。

3. 备用工具 atitude,自动解决依赖问题,可当作apt的备用版本

安装:sudo apt-get install atitude

使用:sudo atitude install 应用

sudo atitude remove 应用

4. ubuntu桌面卡死

ctrl+alt+F1(F2/F3..)切换tty终端

命令行输入:sudo pkill Xorg 或 sudo restart lightdm

解决方案来源:https://www.cnblogs.com/mrcharles/p/11879734.html

5. Ubuntu apt更换国内镜像

如果是有桌面版本的,完全可以在设置中修改镜像服务器到任意,如果想要手动设置,参考下方:

参考:https://www.cnblogs.com/lynn-z/p/12874504.html

就是修改/etc/apt/sources.list

(1). sudo -i

(2). cd /etc/apt/

(3). mv sources.list sources.list-org (备份原文件)

(4). 查看系统版本:lsb_release -c

返回:Codename:       focal (focal就是当前版本的代号)

(5). 复制镜像源到新文件

touch sources.list

vi sources.list (我这个是桌面版本的ubuntu,有桌面的完全可以使用gedit编辑)

输入 -i 切换编辑器到编辑模式,然后把下面的镜像源(我只粘贴的阿里的,清华的可以看上面的参考文档)内容粘贴到sources.list中:

(如果版本号不是focal , 可以提前在notepad++中替换focal为你的版本号再粘贴过来,如果不想调用notepad++替换,也可以参考下文直接只用vi指令替换)

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

vi模式下替换版本号参考:按ESC退出编辑模式,shift+:,%s/原字符串/变更为的字符串/g,即%s/focal/你的版本/g,回车,shift+:, wq,回车

(6). sudo apt update

sudo apt upgrade

6. 安装gcc

sudo apt install gcc build-essential

7. 安装sqlite3(sqlite3管理工具)

sudo apt install sqlite3

打开文件:

sqlite3 test.db

更多详细信息: Ubuntu下使用sqlite3的基本指令

8. 安装ssh

主要是用于ssh远程登录

先 ps -ef|grep ssh|grep -v grep

如果没有记录,则说明系统没有安装ssh server

执行 sudo apt-get install openssh-server

安装完毕后,再执行 ps -ef|grep ssh|grep -v grep,发现 sshd 已经开启了

netstat -ant|grep 22, 发现负责sshd 的22端口已经开始监听了

参考:ubuntu16.04安装ssh服务

9. 修改交换分区大小

参考:swapfile修改Ubuntu虚拟机的交换内存

linux常见终端命令和一些小问题的解决的更多相关文章

  1. Linux命令格式及7个常见终端命令

    Linux命令格式 Linux常见的7个终端命令

  2. linux常用终端命令

    01. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也 ...

  3. linux常用终端命令(三)用户和权限

    三.用户权限相关命令 用户 和 权限的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 1.用户和权限的基本概念 1.1.基本概念 用户管理包括 用户 与 组 管理 linux系统中 ...

  4. linux常用终端命令(三)远程管理命令

    三.远程管理常用命令 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 1.关机/重启 序号 命令 对应英文 作用 01 shutdow ...

  5. linux常用终端命令(一)终端命令格式(二)文件和目录常用命令

    一.linux终端命令格式 1.终端命令格式 command  [-options]  [parameter] 说明: command :命令名,相应功能的英文单词或单词的缩写 [-options] ...

  6. Linux在终端命令行模式下智能补全功能以及组合键

    linux命令行下也有很多热键(快捷键).先来看看tab键 1.如果想看看linux下以c开头的命令可直接在命令行下敲入c然后连续敲两次tab,再选择y,会显示所有以c开头的命令. 2.涉及到文件时, ...

  7. 【转】linux下终端命令快捷键

    原文网址:http://daaoao.blog.51cto.com/2329117/554177 linux下使用终端不可避免. 使用终端快捷键,当然会使你如虎添翼.记住他们吧 终端快捷键 tab=补 ...

  8. Linux常见文件管理命令

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示.(1)目录管理命令——ls:列出指定目录下的内容格式:ls [OPTION]... [FILE]... -a:显示所有文件包 ...

  9. Linux 通过终端命令行切换系统语言

    通过命令的形式修改系统的语言,比较详细的讲解了来龙去脉: 文章目录 0 前言 1 locale 文件 2 查找相关文件 3 解决方案 4 相关信息 4.1 locale属性的含义 4.2 LANGUA ...

  10. Linux 常见文件管理命令

    Linux文件系统 根目录:/ 从根目录开始,下面有一堆小目录 root:根用户的目录 bin:可执行文件命令 etc:配置文件 var:日志 lib:安装包或头文件,库文件 home:所有用户的家目 ...

随机推荐

  1. Linux查看文件指定行数内容与查找文件内容

    Linux查看文件指定行数内容 1.tail date.log 输出文件末尾的内容,默认10行 tail -20 date.log 输出最后20行的内容 tail -n -20 date.log 输出 ...

  2. uniAPP Android平台完整更新与热更新

    一.概述 1.uni-app打包成apk或wgt文件,使用plus.runtime.getProperty方法获取本地应用资源版本号.2.调用后端接口,拿到与后端规定好的版本号,与前面获取的版本号进行 ...

  3. 抽丝剥茧:详述一次DevServer Proxy配置无效问题的细致排查过程

    事情的起因是这样的,在一个已上线的项目中,其中一个包含登录和获取菜单的接口因响应时间较长,后端让我尝试未经服务转发的另一域名下的新接口,旧接口允许跨域请求,但新接口不允许本地访问(只允许发布测试/生产 ...

  4. 4G LTE/EPC UE 的业务请求流程

    目录 文章目录 目录 UE 发起业务请求(Service Request)流程 UE 侧发起的业务请求流程 网络侧发起的业务请求流程 UE 发起业务请求(Service Request)流程 作用:附 ...

  5. docker应用基础

    docker相关 镜像 镜像仓库使用的Docker默认的Docker Hub. 搜索仓库的镜像 docker search 默认按评分排序,offical [ok] 表示是官方镜像 $ docker ...

  6. mews/captcha 验证码组件

    /** * 图像验证码 */ public function captcha(CaptchaBridge $captcha, $type = 'default') { $api_captcha = $ ...

  7. SQL 分析与优化神器,验证了真相定律

    引言 今天要分享的是一个 SQL 语句分析的神器,它是一个基于 Soar 的开源 sql 分析与优化的 Web 图形化工具.我们在平常分析 SQL 语句,使用最多的方式就是 Explain 工具.了解 ...

  8. .net Core中实现SHA加密

    #region 用SHA1加密字符串 /// <summary> /// 用SHA1加密字符串 /// </summary> /// <param name=" ...

  9. 记一次 .NET某工控视觉自动化系统 卡死分析

    一:背景 1. 讲故事 今天分享的dump是训练营里一位学员的,从一个啥也不会到现在分析的有模有样,真的是看他成长起来的,调试技术学会了就是真真实实自己的,话不多说,上windbg说话. 二:WinD ...

  10. proteus 器件名称被软件篡改bug的解决方案

    proteus v7.8 器件名称被软件篡改bug 的解决方案 BUG描述 在做单片机实验时,发现从某一个时间保存的设计图文件开始,在添加新的电子元件时会出现部分旧元件的名称被捆绑替换为新元件的名称, ...