linux常用命令

man

man command
查看命令的详细说明(command --help的说明较man的更简短)

ls

ls 查看当前目录下的文件
ls -a 查看当前目录下的文件(包含隐藏文件)
ls -la以详细列表方式查看当前目录下的文件(包含隐藏文件)
ls -lh 以详细列表方式查看当前目录下的文件(包含隐藏文件),并将文件大小以mb的方式显示。

ll

ll
ll -a
ll -la
ll -lh

scp

scp filename user@host:path
通过scp传输文件

ssh

ssh user@host
(生成rsa秘钥:ssh-keygen -t rsa)
通过ssh登录到服务器

cd

目录跳转

pwd

打印当前目录

cat

  1. 查看文件内容
  2. cat a>>b将a文件内容写入b中(如果b不存在则等同于复制a文件并重命名为b,若b存在,则会将a的内容append到b中)

touch

创建一个当前不存在的文件(新建空白文件)
与cat不同的是touch只会创建空白文件,而cat >filename可以在创建的时候指定文件内容(使用cat >filename <时以EOF作为内容结束标记,使用cat >filename是以ctrl+d为文件结束标记)。

chmod

sudo chmod 775 filename
修改文件权限

ps

ps -ef|grep xxx
通过正则表达式xxx在当前任务管理器中查找匹配到的任务

top

任务管理器

kill

kill -9 pid
关闭指定pid的任务

tar

tar -zvxf xxx.tar.gz -C path

x : 从 tar 包中把文件提取出来。
z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压。
v : 显示详细信息。
f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz

mkdir

创建文件夹

vim

:wq:x大部分情况等同。但是wq相当于重写文件,即时没有修改任何内容,也会将文件上一次修改时间进行更新。而x则会判断是否修改了文件,如果没有任何操作,则只是相当于关闭文件。

环境变量

bash_profile文件在~目录下,为隐藏文件。通过vim等工具打开,修改后通过source命令使更新生效。
其实$符号指代上面已有路径的别名,在linux中通过冒号分割多个路径,通过export导出。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
JAVA_HOME=/home/wqzjk393/hadoop_learning/app/jdk1.8.0_241/
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH

如上述配置中,可以通过echo \$PATH,echo \$HOME,echo \$JAVA_HOME打印当前配置的环境变量

rm

删除文件
rm -rf
r表示recursive,即递归删除文件目录下的所有文件
f表示force,即强制性删除,即时是只读文件也会进行删除
其他参数:
i,表示每个文件都进行删除操作的确认
d,表示将空白文件夹删除

可以使rm命令alias为mv操作,避免误删导致的数据丢失:
具体的方法如下:

首先建立一个脚本remove.sh并编辑:
touch remove.sh

NOW=`date +%Y-%m-%d_%H:%M:%S` 
for i in $*;
do
   fileName=`basename $i`
  mv -v $i /tmp/delete/$fileName.$NOW
done

这里是将要删除的文件(夹)移动到了/tmp/delete文件夹并输出提示
文件(夹)名字加入了删除时间的后缀防止了重名的出现
然后alias rm指令到我们写的remove.sh脚本,~/.bashrc中最后一行添加:
alias rm='sh ~/你的remove.sh的位置'
使环境变量立即生效:source ~/.bashrc
如果是使用在服务器上,永不关机,就需要移动到指定的目录下,计划crontab定期清理了,比如:crontab -e最后一行添加:
0 3 * * * rm -rf /你的删除存放目录/*
表示每天凌晨3点定期清理指定目录下的文件

mv

移动或重命名文件
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

rename

rename [options] expression replacement file...
“mv命令只能对单个文件重命名”,这实就是mv命令和rename命令的在重命名方面的根本区别。

EXAMPLES
Given the files foo1, ..., foo9, foo10, ..., foo278, the commands
rename foo foo0 foo?
rename foo foo0 foo??
will turn them into foo001, ..., foo009, foo010, ..., foo278.
And
rename .htm .html *.htm
will fix the extension of your html files.
仅修改单个文件的名称:rename 修改前的文件名 修改后的文件名 修改前的文件名
因为rename可以批量修改,并通过正则表达式的方式只修改文件名中的某一部分,所以比mv要复杂一些。

查看端口

1、lsof -i:端口号

2、netstat -tunlp|grep 端口号

都可以查看指定端口被哪个进程占用的情况

sudo -i和su

su 切换为某用户,默认为root
sudo -i 切换为root用户

防火墙

centos7系统为代表的的firewalld防火墙
查看防火墙软件状态

systemctl status firewalld
sudo firewall-cmd --state

开启防火墙

systemctl start firewalld

关闭防火墙

systemctl stop firewalld

添加防火墙规则

首先通过firewall-cmd --get-active-zones查看所属区域,
再通过firewall-cmd --zone=public --add-port=80/tcp --permanent开放public区域tcp流量的80端口且持续生效。
也可以使用firewall-cmd --zone=public --add-port=5000-10000/tcp --permanent开放某个范围的全部端口。
重新载入使配置生效firewall-cmd --reload
查看当前配置的端口firewall-cmd --zone=public --query-port=80/tcp
查看当前全部TCP规则firewall-cmd --zone=public --query-protocol=tcp
查看当前全部端口规则firewall-cmd --zone=public --list-ports
删除配置firewall-cmd --zone=public --remove-port=80/tcp --permanent

以centos6为代表的iptables防火墙
查看防火墙软件状态

service iptables status

开启防火墙

systemctl start iptables

关闭防火墙

systemctl stop iptables

添加防火墙规则

iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
其中-A代表APPEND,即在配置文件的末尾添加配置规则。由于iptables是链式(chain)过滤,因此过滤的顺序可能会影响到实际的效果。如果使用-I的话,表示INSERT,即在指定位置(如iptables -I 3 ......)添加规则,如果不指定位置,则会添加至起始位置。如果使用-D,则表示的是删除某一规则。
-p表示需要过滤的协议,后跟--dport 8000表示对8000端口的tcp协议流量进行过滤
-j表示要执行的操作,常用的包括ACCEPT即允许流量通过、DROP即丢弃(拒绝)该流量、FORWARD即对该流量进行转发操作。

查看已配置的防火墙规则列表

iptables -nvL --line-number

使防火墙配置生效

systemctl restart iptables

安装软件

centos等:yum install
Ubuntu等:apt-get install
mac:brew install
wget "url" (主要是通过url下载包,但是并不会安装下载下来的包)

统计文件行数

wc -l

vim

vi/vim是linux下一款非常好用的文本编辑工具。
以下为vim常用的命令及操作

三种模式

通过esc按键进入普通模式
在普通模式中通过i进入编辑模式
在普通模式中通过:进入命令模式
在普通模式中,使用/可以直接内容查找模式,类似于notepad中的ctrl+f,但是vim的查找是具有正则匹配功能的

删除

x 删除一个字符
dd 删除一行
dw 删除一个单词
d 通用删除,但是需要通过shift v或其他方式(如鼠标)选中了要删除的部分,再使用d才有效。
delete、backspace按键

移动

hjkl移动 类似于上下左右移动,依个人习惯使用
w 前进一个单词
b 后退一个单词
^ 跳转到当前行的第一个字符
$ 跳转到当前行的最后一个字符
gg 跳转到第一行
shift+g,或大写字母G 跳转到最后一行
行数 gg直接在普通模式输入命令,跳转到指定行

退出

:wq 保存并退出(一定会修改文件时间戳)
x 保存并退出(会自行判断是否修改文件的时间戳)
:q 不保存文件退出(在未进行任何操作的情况下,否则会要求你使用强制退出)
:q! 不保存文件强制退出

配置

:set command

配置文件

不同操作系统有不同的位置,一般windows下为C:\Program Files (x86)\vim\vim80_vimrc,而linux下为~/.vimrc

查找和替换

通过/:/进行查找(可加入\c参数表示查找时大小写不敏感)

通过:{作用范围}s/{from}/{to}/{替换标志}进行替换。

作用范围包括全局、当前行、选区等。
全局 :%s/{from}/{to}/{替换标志}
当前行 :s/{from}/{to}/{替换标志}
视图模式选中的行 :'<,'>s/{from}/{to}/{替换标志}(在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。)
1到10行 :1,10s/{from}/{to}/{替换标志}
当前行与接下来的2行 :.,+2s/{from}/{to}/{替换标志}(.表示当前行)
当前行与上面的2行 :.,-2s/{from}/{to}/{替换标志}(.表示当前行)

替换标志
全局(全部)替换标志 g
空替换标志则会在作用范围内查找,并在当前光标后面找到第一个匹配到的进行替换,并结束查找/替换过程。
大小写不敏感 i 等同于在查找语句的from中加入\c后缀
确认替换标志 c在匹配到后提示是否确认进行替换操作

大小写敏感和敏感
默认大小写是敏感的,可以通过\c指定非敏感查找,或通过\C指定敏感查找。如:%s/foo\c/bar

正则匹配
:{作用范围}s/正则表达式/替换后的内容/{替换标志}

行起始结束标识
^表示匹配行首,$表示匹配行尾
匹配内容
.表示匹配任意字符
[xxxxxx]表示匹配方括号内的字符(集),如匹配abc中的字符:[abc]、匹配abc1234中的字符:[abc1234]、匹配a到z0和到9中的字符:[a-z0-9]、匹配不在abc中的字符:[^abc]
\d 匹配阿拉伯数字,等同于[0-9]
\D 不匹配阿拉伯数字,等同于[^0-9]
\w 匹配单词字母,等同于[0-9A-Za-z_]
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\s 匹配空白字符,等同于[ \t],或[ ]。
\S 匹配非空白字符,等同于[^ \t]。
匹配次数
* 前面的表达式匹配到任意次数
+ 前面的表达式匹配到最少1次
? 前面的表达式匹配到0次或1次
{n,m} 前面的表达式匹配到n到m次
{n} 前面的表达式匹配到n次
{n,} 前面的表达式至少匹配到n次(n到任意次)
{,m} 前面的表达式最多匹配到m次(0到m次)
?贪心匹配 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。例如,对于字符串“oooo”,“o+”将尽可能多地匹配“o”,得到结果[“oooo”],而“o+?”将尽可能少地匹配“o”,得到结果 ['o', 'o', 'o', 'o']
保留字符的匹配
由于类似于*.等字符(或字符串)是属于正则表达式中的元字符,即本身代表了一些其他的匹配含义,因此当要匹配这些字符本身时,需要进行转义操作,即在前面加反斜线\表示这是一个普通字符,而不是元字符。如:\*\+\.\?\\\/\[
注意,在python等其他语言的正则表达式中,是有小括号匹配方式的,即匹配到以后只修改小括号中的内容。如replace aaa(bbb)ccc mmm,匹配到aaabbbccc后只会对小括号中的bbb进行修改操作。这一功能在vim的正则表达式中是不存在的。

修改文件编码

在普通模式下使用:set fenc=xxxx表示当前文件以xxxx编码(重新)打开。
使用set fencs=aaa,bbb...对配置文件进行修改,则下次打开任意文件时,会首先以aaa编码进行打开,如果打开失败则以bbb进行打开。一般默认即可,有需要的话可以修改为set fencs=utf8,gb18030,unicode,ascii....

你可能感兴趣的:(linux常用命令)