Linux常用命令
linux常用命令
linux终端快捷键
1 | ctrl+alt+n 新建一个终端 |
常用命令
查看系统内核和架构
uname -a
命令行访问网页
DOS下的网页都是纯文本的,而且都不支持javascript、flash,甚至不支持CSS
mysql -u root -p 和直接在控制台下运行的mysql是两个不同的数据库
ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option
su root
输入密码 切换至root用户
如何删除root用户才能拥有权限的文件
rm -r 文件夹名
网络校对时间
ntpdate 时间同步命令
apt-get install ntpdate
sudo nptdate 210.72.145.44(国家授时中心)
ntpdate -u ntp.api.bz :网络时间同步命令
注意:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found
有时候时间并不准确还需要手动设置
sudo date -s 17:20:30
解压文件到指定文件目录
sudo tar -C /home/jhshz/Program/MyGo/ -xzvf go1.13.4.linux-amd64.tar.gz
而且这部操作必须是进入到待解压文件所在目录下进行操作
chmod +x的意思是赋予执行权限
chmod a +X 文件或者目录
给与所有用户增加执行权限
SSH
ssh 远程控制工具默认端口号是22,linux
服务器可以配置成ssh服务器客户可以通过ssh进行远程登录
查看本地ip
ip addr show
ifconfig
安装软件
sudo dpkg -i 所要安装的软件名
uname -a
显示内核和架构
80端口占用
netstat -lnp|grep 80
debian 安装的是iptables
查看已打开的端口 # netstat -anp
iptables -A INPUT -ptcp –dport 8099 -j ACCEPT
查看想开的端口是否已开 # firewall-cmd –query-port=666/tcp
若此提示 FirewallD is not running
表示为不可知的防火墙 需要查看状态并开启防火墙查看防火墙状态 # systemctl status firewalld
running 状态即防火墙已经开启
dead 状态即防火墙未开启开启防火墙,# systemctl start firewalld 没有任何提示即开启成功
开启防火墙 # service firewalld start
关闭防火墙 # systemctl stop firewalld
centos7.3 上述方式可能无法开启,可以先#systemctl unmask firewalld.service 然后 # systemctl start firewalld.service查看想开的端口是否已开 # firewall-cmd –query-port=666/tcp 提示no表示未开
开永久端口号 firewall-cmd –add-port=666/tcp –permanent 提示 success 表示成功
重新载入配置 # firewall-cmd –reload 比如添加规则之后,需要执行此命令
再次查看想开的端口是否已开 # firewall-cmd –query-port=666/tcp 提示yes表示成功
若移除端口 # firewall-cmd –permanent –remove-port=666/tcp
修改iptables 有些版本需要安装iptables-services # yum install iptables-services 然后修改进目录 /etc/sysconfig/iptables 修改内容
ls
ls 命令 -l 长模式输出,-l的用法非常常用能够输出很多的有用信息
-t 按照修改时间的先后顺序进行排序
-S 输出结果按照文件的大小来进行排序
ls ~ 代表访问家目录
会列出家目录下所有文件目录
file filename
打印文件内容的简单描述
less
less 浏览文本文件的内容
less运行起来后可以查看文件的内容,page up向上翻滚一页
page down 或者space 向下翻动一页
q 退出less程序
cp
复制文件和目录
1 | -a --archive 复制文件的目录,包括他们的属性,权限等 |
通配符及其意义
/* 匹配任意字符(包括零个或者一个)
/? 匹配任意一个字符(不包括0个)
/[/] 匹配任意一个属于字符集中的字符
/[/!/] 匹配任意一个不是字符集中的字符
/[/:class:/] 匹配任意一个属于指定字符类中的字符
最常用的通配符
1 | [:alnum:] 匹配任意一个字母或者数字 |
下面主要是最常使用的字符类
1 | /* 所有文件 |
rm
1 | -r 递归删除 |
ln
创建链接
硬链接
ln fun dir1/funhard
软连接
ln -s fun dir1/fun-sym
linux关闭一个窗口
ctrl+w 关闭当前窗口
alt+F4
关闭所有应用程序
新建窗口
ctrl+alt+T
grep
强大的正则表达工具
cat
cat -n 也能够打印行号
awk
利用cat去打印某一列
1 | cat name.txt | awk '{print $4}' |
set命令
如果命令行下不带任何参数,直接运行set,会显示所有的环境变量和 Shell 函数
set -u
执行脚本的时候,如果遇到不存在的变量,Bash 默认忽略它,set -u
遇到不存在的变量就会报错,并且立即停止执行
例子
1 | #!/usr/bin/env bash |
echo $a输出了一个空行,Bash 忽略了不存在的$a,然后继续执行echo bar。大多数情况下,这不是开发者想要的行为,遇到变量不存在,脚本应该报错,而不是一声不响地往下执行。
1 | #!/usr/bin/env bash |
-u还有另一种写法-o nounset,两者是等价的
1 | set -o nounset |
set -x
默认情况下,脚本执行后,屏幕只显示运行结果,没有其他内容。如果多个命令连续执行,它们的运行结果就会连续输出。有时会分不清,某一段内容是什么命令产生的。
set -x用来在运行结果之前,先输出执行的那一行命令
1 | #!/usr/bin/env bash |
还有另一种写法-o xtrace
1 | set -o xtrace |
错误处理
如果脚本里面有运行失败的命令(返回值非0),Bash 默认会继续执行后面的命令
1 | #!/usr/bin/env bash |
上面脚本中,foo是一个不存在的命令,执行时会报错。但是,Bash 会忽略这个错误,继续往下执行
可以看到,Bash 只是显示有错误,并没有终止执行。
这种行为很不利于脚本安全和除错。实际开发中,如果某个命令失败,往往需要脚本停止执行,防止错误累积。这时,一般采用下面的写法。
1 | command || exit 1 |
上面的写法表示只要command有非零返回值,脚本就会停止执行。
如果停止执行之前需要完成多个操作,就要采用下面三种写法
1 | # 写法一 |
set -e
1 | #!/usr/bin/env bash |
set -e从根本上解决了这个问题,它使得脚本只要发生错误,就终止执行。
但是,某些命令的非零返回值可能不表示失败,或者开发者希望在命令失败的情况下,脚本继续执行下去。这时可以暂时关闭set -e,该命令执行结束后,再重新打开set -e
1 | set +e |
set +e 表示关闭-e选项, -e表示重新打开
set -e有一个例外情况,就是不适用于管道命令。所谓管道命令,就是多个子命令通过管道运算符(|)组合成为一个大的命令。Bash 会把最后一个子命令的返回值,作为整个命令的返回值。也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set -e就失效了。
例子
1 | #!/usr/bin/env bash |
set -o pipefail用来解决这种情况,只要一个子命令失败,整个管道命令就失败,脚本就会终止执行
1 | #!/usr/bin/env bash |
tree命令
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 583614868@qq.com
文章标题:Linux常用命令
文章字数:2.2k
本文作者:钟帅豪
发布时间:2019-11-29, 11:38:47
最后更新:2020-11-24, 10:41:17
原始链接:http://jhshz520.github.io/2019/11/29/Linux常用命令/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。