Linux常见命令
1. 打印命令
- echo
echo hello linux
echo hello linux > a.txt #覆盖
echo hello linux1 >> a.txt #追加
[root@v1 data]# echo hello linux
hello linux
[root@v1 data]# echo hello linux > a.txt
[root@v1 data]# cat a.txt
hello linux
[root@v1 data]# echo hello linux1 >> a.txt
[root@v1 data]# cat a.txt
hello linux
hello linux1
[root@v1 data]# echo hello linux > a.txt
[root@v1 data]# cat a.txt
hello linux
2. ls命令
ls #查看文件和目录
ls -l #(long)详细列表
ls -a #查看所有文件和目录(包括隐藏的)
ll #等同于ls -l
[root@v1 ~]# ls
anaconda-ks.cfg post_install.log
[root@v1 ~]# ls -l
total 4
-rw-------. 1 root root 1475 Jan 27 2016 anaconda-ks.cfg
-rw-r–r–. 1 root root 0 Jan 27 2016 post_install.log
[root@v1 ~]# ll -a
total 40
dr-xr-x—. 5 root root 4096 Jul 6 11:44 .
dr-xr-xr-x. 18 root root 4096 Jul 6 16:40 …
-rw-------. 1 root root 1475 Jan 27 2016 anaconda-ks.cfg
-rw------- 1 root root 45 Jul 5 15:06 .bash_history
-rw-r–r–. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r–r–. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r–r–. 1 root root 176 Dec 29 2013 .bashrc
-rw-r–r–. 1 root root 100 Dec 29 2013 .cshrc
drwxr-xr-x 2 root root 39 Jul 6 11:44 .oracle_jre_usage
drwxr----- 3 root root 18 Jan 27 2016 .pki
-rw-r–r–. 1 root root 0 Jan 27 2016 post_install.log
drwx------ 2 root root 28 Jul 6 10:57 .ssh
-rw-r–r–. 1 root root 129 Dec 29 2013 .tcshrc
-rw------- 1 root root 511 Jul 5 15:04 .viminfo
[root@v1 ~]# ll
total 4
-rw-------. 1 root root 1475 Jan 27 2016 anaconda-ks.cfg
-rw-r–r–. 1 root root 0 Jan 27 2016 post_install.log
[root@v1 ~]#
3. man命令
man ls #查看ls的帮助文档
4. vim命令
vim a.txt #进行文本编辑
进入文档中可以使用如下命令:
- i: 在当前光标的前面插入字符
- o: 在当前光标的下一行行首插入字符
点击esc后输入如下可以退出:
- :q 若文件没有修改,直接退出
- :q! 文件已经被修改,放弃修改退出
- :wq 文件已经被修改,保存修改并退出
5. cd 进入目录
cd ~ #进入用户的宿主目录
cd .. #进入上级目录
cd ./ #当前目录
cd #等同于 cd ~
cd - 进入上一个历史目录
[root@v1 ~]# cd /opt/software/
[root@v1 software]# cd …
[root@v1 opt]# cd ~
[root@v1 ~]# cd -
/opt
[root@v1 opt]# cd ./
[root@v1 opt]# cd
[root@v1 ~]#
6. pwd 显示当前工作目录
[root@v1 software]# pwd
/opt/software
[root@v1 software]#
7. su 切换用户
[root@v1 software]# su vagrant
[vagrant@v1 software]$ su root
Password:
[root@v1 software]#
8. mkdir 创建目录
mkdir data #创建目录
mkdir -p data/d0706/t1 #-p自动产生父目录
- -p 父目录不存在情况下先生成父目录 (parents)
[root@v1 software]# mkdir data
[root@v1 software]# mkdir -p data/d0706/t1
[root@v1 software]# tree data
data
└── d0706
└── t1
2 directories, 0 files
[root@v1 software]#
9. tree 以树列表目录
#使用root用户进行下载
yum install -y tree
tree #展示当前所在目录
tree 目录名或目录路径
[root@v1 data]# tree
.
└── d0706
└── t1
2 directories, 0 files
[root@v1 data]# tree /opt/software/data/
/opt/software/data/
└── d0706
└── t1
2 directories, 0 files
[root@v1 data]#
10. touch 创建空文件
[root@v1 data]# touch b.txt
[root@v1 data]# ll
total 0
-rw-r–r-- 1 root root 0 Jul 6 17:12 b.txt
drwxr-xr-x 3 root root 15 Jul 6 17:06 d0706
[root@v1 data]#
11. cp 拷贝文件,目录
cp a.txt ../ # 将a.txt拷贝到上一级目录中
cp -r opt/software/data/d0706 ../
- -r:递归拷贝
[root@v1 d0706]# cp a.txt …/
[root@v1 d0706]# tree …/
…/
├── a.txt
├── b.txt
└── d0706
├── a.txt
└── t1
2 directories, 3 files
[root@v1 d0706]#
12. rm 删除文件或者目录
rm a.txt #删除a.txt
rm -r d0706 # 递归删除
rm -rf d0706 #强制删除
- -r:递归删除
- -f:强制删除
[root@v1 d0706]# ll
total 0
-rw-r–r-- 1 root root 0 Jul 6 17:14 a.txt
drwxr-xr-x 2 root root 6 Jul 6 17:06 t1
[root@v1 d0706]# rm a.txt
rm: remove regular empty file ‘a.txt’? y
[root@v1 d0706]# ll
total 0
drwxr-xr-x 2 root root 6 Jul 6 17:06 t1
[root@v1 d0706]# cd …/
[root@v1 data]# rm -rf d0706/
[root@v1 data]# ll
total 0
-rw-r–r-- 1 root root 0 Jul 6 17:14 a.txt
-rw-r–r-- 1 root root 0 Jul 6 17:12 b.txt
[root@v1 data]#
13. mv 移动文件和目录或文件重命名
[root@v1 data]# ll
total 0
-rw-r–r-- 1 root root 0 Jul 6 17:14 a.txt
-rw-r–r-- 1 root root 0 Jul 6 17:12 b.txt
drwxr-xr-x 2 root root 6 Jul 6 17:22 d0706
[root@v1 data]# mv a.txt d0706/c.txt
[root@v1 data]# tree
.
├── b.txt
└── d0706
└── c.txt
1 directory, 2 files
[root@v1 data]#
14. cat 显示文本文件内容
cat a.txt
cat a.txt > b.txt #把a.txt内容覆盖到b.txt
cat a.txt >> b.txt #吧a.txt追加到b.txt
[root@v1 data]# cat a.txt
hello linux
[root@v1 data]#
15. more、less 分页显示文本文件内容
more /etc/profile # 看完直接退出
less /etc/profile # 看完需要手动退出
分页显示中可用的快捷键:
- ctrl + f
16. head 显示前几行内容
[root@v1 data]# head -n 5 a.txt
hello linux
hello linux
hello linux
hello linux
hello linux1
[root@v1 data]#
17. tail 显示后几行数据
tail -n 10 a.txt
- -n 显示后几行数据
- -f b.log 循环读取(fellow,即时读取)
18. wc 统计文本的行数、字数、字符数
wc -w -l -m a.txt
- -m 统计文本字节数
- -w 统计文本字数(空格相隔的单词个数)
- -l 统计文本行数
19. find 查找文件
find -name a.java
[root@v1 /]# find -name a.txt
./opt/software/data/a.txt
[root@v1 /]#
20. grep 查找文本
grep java a.txt -n #提示在第几行
grep java a.txt -i #不区分大小写查找
grep java a.txt -o #显示所有查找结果
[root@v1 data]# grep java a.txt -o
java
java
java
[root@v1 data]# grep java a.txt -n
11:hello java
12:hello java1
13:hello java2
[root@v1 data]# grep JAVA a.txt -i
hello java
hello java1
hello java2
[root@v1 data]#
21. ln
ln -s 目标地址 文件名 #创建软连接
[root@v1 opt]# ln -s /opt/software/data/a.txt a1
[root@v1 opt]# ll
total 0
lrwxrwxrwx 1 root root 24 Jul 6 18:44 a1 -> /opt/software/data/a.txt
drwxr-xr-x 7 root root 76 Jan 27 2016 puppetlabs
drwxr-xr-x 4 root root 28 Jul 6 17:06 software
drwxr-xr-x 2 root root 6 Jul 4 16:16 VBoxGuestAdditions-4.3.30
drwxr-xr-x 8 root root 127 Jul 4 16:17 VBoxGuestAdditions-6.1.16
[root@v1 opt]# cat a1
hello linux
hello linux
hello linux
hello linux
hello linux1
hello linux2
hello linux3
hello linux4
hello linux5
hello linux6
hello java
hello java1
hello java2
[root@v1 opt]#
只是一部分简单常用的命令,并不完整和全面,后续会持续更新所学内容
1.系统命令
1.1 du
显示指定的文件(目录)已使用的磁盘空间
- -h 显示单位
- -s 显示总的大小
[root@v1 software]# cd
[root@v1 ~]# du -s -h
52K .
[root@v1 ~]#
1.2 free
显示当前内存和交换空间的使用情况
[root@v1 ~]# free
total used free shared buff/cache available
Mem: 8011464 120428 7651720 8780 239316 7693252
Swap: 1023996 0 1023996
[root@v1 ~]#
1.3 netstat
显示网络状态信息,查看端口占用情况
- -a 显示所有连接和监听端口
- -t (tcp)仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化成数字。
- -p 显示建立相关链接的程序名
sudo yum install net-tools -y
#sudo:得的管理员权限执行命令
1.4 ifconfig
网卡网络配置详解
1.5 ping
测试网络的连通性
1.6 top
显示当前系统中耗费资源最多的进程 (实时)
1.7 ps
显示瞬间的进程状态(快照)
- -e /-A 显示所有进程,环境变量
- -f 全格式
- -a 显示所有用户的所有进程(包括其它用户)
- -u 按用户名和启动时间的顺序来显示进程
- -x 显示无控制终端的进程
ps -aux
#管道 命令1 | 命令2 把命令1的结果给命令2作为参数
cat a.txt | grep java
ps -aux | grep tail
1.8 kill
根据进程ID(pid)杀死进程
[root@v1 ~]# ps -aux | grep tail
root 9656 0.0 0.0 107932 624 pts/2 S+ 18:45 0:00 tail -f -n 10 a.txt
root 11333 0.0 0.0 112644 948 pts/0 S+ 18:46 0:00 grep --color=auto tail
[root@v1 ~]# kill -9 9656
[root@v1 ~]# ps -aux | grep tail
root 11871 0.0 0.0 112644 948 pts/0 R+ 18:46 0:00 grep --color=auto tail
[root@v1 ~]#
3.压缩和打包命令
3.1 gzip
把文件压缩成gz格式
[root@v1 data]# gzip a.txt
[root@v1 data]# ll
total 8
-rw-r–r-- 1 root tom0 82 Jul 7 14:47 a.txt.gz
-rw-r–r-- 1 root tom0 0 Jul 6 17:12 b.txt
-rw-r–r-- 1 root tom0 165 Jul 7 10:19 c.txt
drwxr-xr-x 2 root tom0 18 Jul 7 14:47 d0706
[root@v1 data]# gzip -d a.txt.gz
[root@v1 data]# ll
total 8
-rw-r–r-- 1 root tom0 175 Jul 7 14:47 a.txt
-rw-r–r-- 1 root tom0 0 Jul 6 17:12 b.txt
-rw-r–r-- 1 root tom0 165 Jul 7 10:19 c.txt
drwxr-xr-x 2 root tom0 18 Jul 7 14:47 d0706
[root@v1 data]#
3.2 bzip2
以bzip2格式压缩和解压
[root@v1 data]# bzip2 a.txt
[root@v1 data]# ll
total 8
-rw-r–r-- 1 root tom0 95 Jul 7 14:47 a.txt.bz2
-rw-r–r-- 1 root tom0 0 Jul 6 17:12 b.txt
-rw-r–r-- 1 root tom0 165 Jul 7 10:19 c.txt
drwxr-xr-x 2 root tom0 18 Jul 7 14:47 d0706
[root@v1 data]# bzip2 -d a.txt.bz2
[root@v1 data]# ll
total 8
-rw-r–r-- 1 root tom0 175 Jul 7 14:47 a.txt
-rw-r–r-- 1 root tom0 0 Jul 6 17:12 b.txt
-rw-r–r-- 1 root tom0 165 Jul 7 10:19 c.txt
drwxr-xr-x 2 root tom0 18 Jul 7 14:47 d0706
[root@v1 data]#
3.3 tar(推荐)
打包目录成tar文件
整合gzip和bzip2压缩
- -c 建立一个压缩文件的参数指令(create)
- -x 解开一个压缩文件的参数指令(extract)
- -z 是否需要用 gzip 压缩
- -j 是否需要用 bzip2 压缩
- -v 压缩的过程中显示文件(verbose)
- -f 使用档名,在 f 之后要立即接档名(file)
打包和解包
以gzip方式压缩和解压
以biz2方式压缩和解压
解压到指定目录
3.vim命令
vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。
vim的模式
3.1 底行命令
- :wq保存退出
- :q! 不保存退出
- :q 退出,如果内容有改变不能退出
- :set number 显示行号
- :set nonumber 隐藏行号
- :w filename 另存为文件
- :e!撤销所有操作
- :行号:调到指定的行
3.2 移动命令
- w b 下一个,上一个单词
- 0, $ 行首,行尾
- gg 第一行
- G 最后一行
- xG到x行
3.3 替换命令
- :1,$s/private/public/g 将第一行到追后一行的private替换为public
- :1,$s/public/protected/c 将第一行到追后一行的public替换为protected(有提示)
3.4 编辑命令
- x删除一个字符
- dd 删除一行
- yy复制一行
- p粘贴
- 输入v进入选择模式,选择内容,输入y复制,调到要黏贴的位置输入p粘贴
- 输入u 撤销操作
- 在一般模式中输入/8080查找8080,输入n查找下一个
- 在一般模式输入r+替换的字符,执行替换
4.用户管理
linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰
4.1 用户管理的配置文件
- 保存用户信息的文件:/etc/passwd
- 保存密码的文件:/etc/shadow
- 保存用户组的文件:/etc/group
- 保存用户组密码的文件:/etc/gshadow
- 用户配置文件:/etc/default/useradd
4.2 /etc/passwd格式用户名 用户登陆系统的用户名
用户名 | 登陆系统的用户名 |
密码 | 密码位 |
UID | 用户标示号 |
GID | 默认组标示号 |
描述信息 | 存放用户的描述信息 |
宿主目录 | 用户登陆系统的默认目录,默认是在/home/下 |
命令解析器 | 用户使用的Shell,默认是bash |
4.3 用户的组
- 每个用户至少属于一个用户组
- 如果创建用户,没有指定组,此用户指定跟用户名同名组
- 每个用户组可以包含多个用户
- 同一个用户组的用户享有该组共有的权限
组名 | 用的所在的组 |
组密码 | 密码位,一般不使用 |
GID | 主标示号 |
组内用户列表 | 属于改组的用户列表 |
3.5 用户和组管理命令
3.5.1 用户管理命令
- useradd:添加用户
- -u 指定组ID(uid)
- -g 指定所属的组名(gid)
- -G 指定多个组,用逗号“,”分开(Groups)
- -c 用户描述(comment)
- -e 失效时间(expire date)
- usermod:修改用户
- -l 修改用户名 (login)usermod -l a b(b改为a)
- -g 添加组 usermod -g sys tom-G添加多个组 usermod
- -G sys,root tom–L 锁定用户账号密码(Lock)
- –U 解锁用户账号(Unlock)
- userdel:删除用户
- -r 删除账号时同时删除目录(remove)
3.5.2 组管理的命令
- 添加组:groupadd
- -g 指定gid
- 修改组:groupmod
- -n 更改组名(new group)
- 删除组:groupdel
- groups 显示用户所属组
3.5.3 案例:
添加一个jack用户,设置它属于users组,并添加注释信息
useradd jack
usermod -g users jack
usermod -c "hr jack" jack
#等于上面三个命令
useradd -g users -c "hr jackson" jackson
设置密码
passwd jack
将jack添加到sys和root组中
usermod -G sys,root jack
把jack从sys组中删除
gpasswd -d jack sys
添加一个hr组
groupdd hr
修改hr组为sale组
groupmod -n sale hr
vagrant添加到sale组
usermod -g sale vagrant
1.权限管理
1.1权限表示符号
执行 ll 命令
- 第1位:文件类型(d 目录,- 普通文件,l 链接文件)
- 第2-4位:所属用户权限,用u(user)
- 表示第5-7位:所属组权限,用g(group)表示
- 第8-10位:其他用户权限,用o(other)表示
- 第2-10位:表示所有的权限,用a(all)表示
三种基本权限
- r 读权限(read)4
- w 写权限(write)2
- x 执行权限 (execute)1
1.2 chmod命令
chmod修改文件权限命令(change mode)
- 参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)
- 两种方式
- 例如:chmod u+x a.txt,给a.txt增加当前用户的执行权限
- 用数字来表示权限(r=4,w=2,x=1,-=0) 例如:chmod 750 b.txt :表示b.txt的权限当前用户是rwx,当前用户的组rx,其他用户没有权限
案例:
su vagrant
#设置~/vagrant目录让其他人可以进入
chmod o+x vagrant
#这时我们切换tom,可以执行(进入)~/vagrant
su tom
cd /home/vagrant
#设置~/vagrant的目录的其他用户有读写执行权限
su vagrant/root
chmod o+rwx ~/vagrant
#修改a.txt的权限,让所有人有读写执行
su root/vagrant
chmod 777 ~/a.txt
#修改a.txt的权限,当前用户
#设置a.txt文件
当前用户(u)
- rwx
当前组(g)
- rx
其他用户(o)
- 没有权限
所有用户(a)
xxx
#方式1
chomod u+rwx,g-w,o-rwx ~/a.txt
#方式2
chmod 750 a.txt
1.3 chown命令
改变文件所属用户,文件所属的组
- -R:递归
chown root:users a.txt
#使用tom查看a.txt文件,因为tom属于users,所以可以查看
cat a.txt