前言
Linux文件系统 和 Windows文件系统有一些区别,Windows分C盘、D盘、E盘…,但是在Linux中是有一个最大的目录,称之为根目录,用 / 表示,根目录下面会有很多子目录,这些子目录其实可以理解为windows中C盘、D盘、E盘。
不同的子目录具有不同的含义,存放不同类型的文件信息。
-
bin 存放二进制可执行文件(ls,cat,mkdir等)
-
boot 存放用于系统引导时使用的各种文件
-
dev 存放设备文件
-
etc 存放系统配置文件
-
home 存放所有用户文件的根目录
-
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
-
proc 虚拟文件系统,存放当前内存的映射
-
usr 存放系统应用程序,比较重要的目录/usr/local 管理员软件安装目录
-
var 存放运行时需要改变数据的文件
-
mnt 挂载目录
-
sbin 存储管理级别的二进制执行文件
-
root 超级用户主目录
-
opt额外安装的可选应用程序包安装位置
下面开始正式分析Linux中的基本命令。
1、文件查看
1.pwd 命令【列出当前目录的路径,查看当前所在的路径】
注意: ~ 表示是用户家目录,目前我们登陆的是root用户,root用户的家目录是/root
[root@localhost ~]# pwd
/root
2. ls 命令 【列出当前目录下的所有文件】
[root@localhost ~]# ls
anaconda-ks.cfg
3. ll (ls -l缩写)命令 【列出当前目录下的文件(带文件信息)】
[root@localhost ~]# ls
anaconda-ks.cfg
4. ll (ls -l缩写)命令 【列出当前目录下的文件(带文件信息)】
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
[root@localhost ~]# ls -l
total 4
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
5. ll -a 命令 【列出当前目录下的所有文件(包括隐藏文件)】
[root@localhost ~]# ll -a
total 28
dr-xr-x---. 2 root root 135 Mar 28 21:00 .
dr-xr-xr-x. 17 root root 224 Mar 28 20:58 ..
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-------. 1 root root 8 Mar 28 21:00 .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
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
6. ll --help 命令 【帮助命令】
可以查看一下 ls命令 用法
[root@localhost ~]# ll --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
.............
2、创建、重命名文件\文件夹
1. touch 命令 【创建空文件夹】
创建空文件hello.txt
[root@localhost ~]# touch hello.txt
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
2. mkdir 命令 【创建目录】
创建目录abc
[root@localhost ~]# mkdir abc
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abc
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
3. mkdir -p 命令 【目标目录存在也不报错】
创建目录abc
当我们在创建目录时不确定这个目录是否已存在的时候,可以使用-p参数,就算目录已存在也不会报错,如果不指定-p参数会报错,会提示目录已存在
[root@localhost ~]# mkdir -p abc
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abc
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# mkdir abc
mkdir: cannot create directory ‘abc’: File exists
4. mv 命令 【重命名文件\文件夹】
修改目录abc的名称为abx
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abc
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# mv abc abx
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
3、链接文件
linux两种链接:
1.硬链接
2.符号(软)链接
软链接功能类似类似于windows的快捷方式主要用于节省磁盘空间
硬链接相当于对原始文件的一个复制,不能对目录使用硬链接。
1. ln 命令 【硬链接】
ln hello.txt hlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# ln hello.txt hlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Mar 28 22:21 hello.txt
-rw-r--r--. 2 root root 0 Mar 28 22:21 hlink
2. ln -s 命令 【符号(软)链接:】
如果想使用软连接,需要添加-s,相当于快捷方式,不能删除原文件
ln -s hello.txt vlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Mar 28 22:21 hello.txt
-rw-r--r--. 2 root root 0 Mar 28 22:21 hlink
[root@localhost ~]# ln -s hello.txt vlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Mar 28 22:21 hello.txt
-rw-r--r--. 2 root root 0 Mar 28 22:21 hlink
lrwxrwxrwx. 1 root root 9 Mar 28 22:33 vlink -> hello.txt
3、切换目录
1. cd . 命令 【当前目录】
一个 . 表示当前目录
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd .
[root@localhost ~]# pwd
/root
2. cd .. 命令 【去上一级目录】
两个 .. 表示去上一级目录
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd ..
[root@localhost /]# pwd
/
3. cd / 命令 【去根目录】
通过在cd后面指定目录,可以切换到指定目录
[root@localhost /]# cd /
[root@localhost /]# pwd
/
[root@localhost ~]# cd /bin/
[root@localhost bin]# pwd
/bin
4. cd ~ 命令 【去当前用户主(家)目录】
[root@localhost bin]# cd ~
[root@localhost ~]# pwd
/root
5. cd xxx/xxx 命令 【直接跳转到某个目录】
[root@localhost ~]# cd abx/test/
[root@localhost test]# pwd
/root/abx/test
4、删除文件\文件夹(目录)
rm 命令可以删除文件或者目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉,对于链接文件,只是删除整个链接文件,而原有文件保持不变。
1. rm 命令 【删除文件】
删除文件,但是会有提示确认对话,输入y确认删除!
[root@localhost test]# touch abc.txt
[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 29 13:53 abc.txt
[root@localhost test]# rm abc.txt
rm: remove regular empty file ‘abc.txt’? y
[root@localhost test]# ll
total 0
2. rm -r 命令 【删除目录,需要确定】
删除目录需要指定r参数,否则会提示不能删除,r是给rm加入递归(recursion)特性,也就是目标为文件夹时删除文件夹下所有数据,使用rm -r 在删除目录的时候也会有提示确认对话,输入y确认删除
[root@localhost abx]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 29 14:01 test
[root@localhost abx]# rm test
rm: cannot remove ‘test’: Is a directory
[root@localhost abx]# rm -r test
rm: remove directory ‘test’? y
[root@localhost abx]# ll
total 0
3. rm -f 命令 【强制删除,慎用!!!】
f 给rm加入强制(force)特性,也就是遇到删除时不需要询问即可直接删除,注意:这个操作还是比较危险的,建议慎用,因为删除之后就找不到了,Linux系统中没有回收站
[root@localhost abx]# touch a.txt
[root@localhost abx]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 29 14:03 a.txt
[root@localhost abx]# rm -f a.txt
[root@localhost abx]# ll
total 0
4. rm -rf 命令 【递归删除目录及其文件】
1. Linux中最危险的操作,最具破坏性!
2. rf参数可以强制递归删除任何数据,并且没有任何提示,慎用!慎用!慎用!
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:03 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
[root@localhost ~]# mkdir -p abx/test/aaa
[root@localhost ~]# cd abx/test/aaa/
[root@localhost aaa]# touch a.txt
[root@localhost aaa]# cd ~
[root@localhost ~]# rm -rf abx
[root@localhost ~]# ll
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
5、复制\粘贴\剪切
1. cp 命令 【复制&粘贴文件】
复制hello.txt文件,复制后的文件名为hello-bak.txt
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# cp hello.txt hello-bak.txt
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 29 14:20 hello-bak.txt
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
2. cp -r 命令 【复制&粘贴文件或目录】
复制目录,需要指定r参数
[root@localhost ~]# mkdir abc
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:21 abc
[root@localhost ~]# cp abc xyz 【错误用法,复制目录必须指定-r参数】
cp: omitting directory ‘abc’
[root@localhost ~]# cp -r abc xyz
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:21 abc
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
3. mv 命令 【移动(剪切)文件或目录】
将目录xyz移动到目录abc下面
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:21 abc
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
[root@localhost ~]# ll abc/
total 0
[root@localhost ~]# mv xyz abc
[root@localhost ~]# ll abc/
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
6、远程复制
1. scp 命令 【scp命令在网络不同主机之间复制文件或目录】
1. scp是有Security的文件copy,基于ssh登录,如果没有配置免密码登陆,需要输入主机密码
2. 从本地复制(192.168.182.131)到远程主机 (192.168.182.130)
3. scp /root/hello.txt 192.168.182.130:/root
[root@localhost ~]# scp /root/hello.txt 192.168.182.130:/root/
The authenticity of host '192.168.182.130 (192.168.182.130)' can't be established.
ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
Are you sure you want to continue connecting (yes/no)? yes 【第一次会提示此信息,输入yes即可,以后就不提示了】
Warning: Permanently added '192.168.182.130' (ECDSA) to the list of known hosts.
root@192.168.182.130's password: 【在这里输入192.168.182.130机器的密码即可】
hello.txt 100% 0 0.0KB/s 00:00
4.登录到192.168.182.130机器,确认文件是否成功复制过去
[root@localhost ~]# cd /root/
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 29 14:30 hello.txt
[root@localhost ~]#
提示:
1.显示进度在scp后添加-v
2.复制目录在scp后添加-r
3.静默复制模式在scp后添加-q
scp -rq /root/abc 192.168.182.130:/root
[root@localhost ~]# scp -rq /root/abc/ 192.168.182.130:/root/
root@192.168.182.130's password:【在这里输入192.168.182.130机器的密码即可】
登录到192.168.182.130机器,确认目录是否成功复制过去
[root@localhost ~]# ll
total 4
drwxr-xr-x. 3 root root 17 Mar 29 14:33 abc
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 29 14:30 hello.txt
7、文件属性
2.jpg黑带七段
第一段:权限
第一个字符代表文件(-)、目录(d),链接(l)其余字符每3个一组(rwx),读(r)、写(w)、执行(x
第一组:文件所有者的权限是读、写和执行
第二组:与文件所有者同一组的用户的权限
第三组:不与文件所有者同组的其他用户的权限,也可用数字表示为:r=4,w=2,x=1,如:权限6可以表示为r+w=6
第二段:目录/链接个数
对于目录文件,表示它的第一级子目录的个数,注意:此处的值要减2才等于该目录下的子目录的实际个数(目录下默认包含.和…这两个目录)对于其他文件,默认是1
第三段:所属用户
第四段:所属组
第五段:文件大小(字节)
第六段:最后修改时间
第七段:文件\文件夹名称
8、chmod-分配权限
1.chmod u+x xxx.txt 命令 【为当前所有者添加执行权限】
x:是执行权限
为hello.txt文件,给当前用户添加执行权限
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# chmod u+x hello.txt
[root@localhost ~]# ll
-rwxr--r--. 1 root root 0 Mar 28 22:21 hello.txt
2.chmod 777 xxx.txt 命令 【添加rwxrwxrwx权限】
给hello.txt添加777权限
[root@localhost ~]# chmod 777 hello.txt
[root@localhost ~]# ll
-rwxrwxrwx. 1 root root 0 Mar 28 22:21 hello.txt
3.chmod -R 777 xxx 命令 【指定目录递归添加rwxrwxrwx权限】
给abc目录及其子目录中的所有内容添加777权限
[root@localhost ~]# ll
drwxr-xr-x. 3 root root 17 Mar 29 14:24 abc
[root@localhost ~]# cd abc/
[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
[root@localhost abc]# cd ..
[root@localhost ~]# chmod -R 777 abc
[root@localhost ~]# ll
drwxrwxrwx. 3 root root 17 Mar 29 14:24 abc
[root@localhost ~]# cd abc/
[root@localhost abc]# ll
total 0
drwxrwxrwx. 2 root root 6 Mar 29 14:21 xyz
9、内容查看
1.cat 命令 【显示文本内容】
类似windows中的type(顺序输出)
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# chmod u+x hello.txt
[root@localhost ~]# ll
-rwxr--r--. 1 root root 0 Mar 28 22:21 hello.txt
2.cat -b 命令 【显示行号输出】
类似windows中的type(顺序输出)
[root@localhost ~]# cat -b anaconda-ks.cfg
1 #version=DEVEL
2 # System authorization information
3 auth --enableshadow --passalgo=sha512
4 # Use CDROM installation media
........
3.more命令 【分屏显示】
用一次显示一屏,没有显示完时最后一行显示进度。回车显示下一行,按b显示上一页,空格显示下一页,q退出。根据当前屏幕大小显示一屏内容
[root@localhost ~]# more anaconda-ks.cfg
#version=DEVEL
#System authorization information
auth --enableshadow --passalgo=sha512
#Use CDROM installation media
cdrom
#Use graphical install
graphical
#Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
#Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
#System language
lang en_US.UTF-8
#Network information
network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network --hostname=localhost.localdomain
#Root password
rootpw --iscrypted $6$sx2fOWF8AMiHgQTV$ExkpEX6Sq1EfZVHaP4RxfYls3B0o
dX2ouFfaTX2S0TttzWz7tX3L3cWRFeb1M4qfGUA2FGzrkylhlGfp4psze.
--More--(48%)
10、压缩、解压
常见用法:压缩和解压
参数:
- -z 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -c 创建一个压缩文件的参数指令(create 的意思);
- -x 解开一个压缩文件的参数指令!
- -v 压缩的过程中显示文件!
- -f 使用档案名字,这个参数是最后一个参数,后面只能接档案名!
注意:特别注意,在参数的下达中, c/x 仅能存在一个!不可同时存在!
1.tar -zcvf 命令 【打包及压缩(gzip方式)】
将abc目录的内容打包压缩为abc.tar.gz
[root@localhost ~]# ll
drwxrwxrwx. 3 root root 17 Mar 29 14:24 abc
[root@localhost ~]# tar -zcvf abc.tar.gz abc
abc/
abc/xyz/
[root@localhost ~]# ll
drwxrwxrwx. 3 root root 17 Mar 29 14:24 abc
-rw-r--r--. 1 root root 130 Mar 29 15:24 abc.tar.gz
2.tar -zxvf 命令 【解压(gzip包)】
先把abc.tar.gz移动到test目录下,再解压缩
[root@localhost ~]# ll
drwxrwxrwx. 3 root root 17 Mar 29 14:24 abc
-rw-r--r--. 1 root root 130 Mar 29 15:24 abc.tar.gz
[root@localhost ~]# mkdir test
[root@localhost ~]# cd test/
[root@localhost test]# mv ../abc.tar.gz .
[root@localhost test]# ll
total 4
-rw-r--r--. 1 root root 130 Mar 29 15:24 abc.tar.gz
[root@localhost test]# tar -zxvf abc.tar.gz
abc/
abc/xyz/
[root@localhost test]# ll
total 4
drwxrwxrwx. 3 root root 17 Mar 29 14:24 abc
-rw-r--r--. 1 root root 130 Mar 29 15:24 abc.tar.gz
11、输出及显示
echo:将内容输出到设备,类似java里面的system.out.println()
1.echo “hello\t\t world! 命令 【不解析转义字符】
2.echo -e “hello\t\t world! 命令 【解析转义字符】
3.echo $PATH 命令 【输出环境变量】
注意:在打印变量信息的时候,使用echo ${PATH} 也可以,效果是一样的
[root@localhost ~]# echo "hello\t\t world!"
hello\t\t world!
[root@localhost ~]# echo -e "hello\t\t world!"
hello world!
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
12、软件安装和卸载
- 第一种:压缩包安装方式,直接解压,配置相应的环境变量即可使用
- 第二种:在线安装,使用yum
yum集成了连接网络,软件安装,删除,更新等功能,yum在配置好repo后,机器只要连网,就能智能化安装软件,使用yum 安装的好处在于可以自动安装软件需要的依赖包
1. yum install -y 命令 【安装】
2. yum update 命令 【不跟则更新全部】
3. yum info 命令 【显示包信息】
4. yum list 命令 【不跟则显示已安装或可安装包】
5. yum list 命令 【删除程序】
6. yum remove 命令 【删除程序】
7. yum clean all 命令 【清除所有缓存(包含文件、旧软件)】
13、查看操作历史
history保留了最近执行的命令记录,默认可以保留1000。历史清单从0开始编号到最大值。
1. history N 命令 【显示最近N条命令】
2. history -c 命令 【清除所有的历史记录】
3. history -w xxx.txt 命令 【保存历史记录到文本xxx.txt】
[root@localhost ~]# history 10
142 ll
143 tar -zxvf abc.tar.gz
144 ll
145 cd .
146 ll
147 echo "hello\t\t world!"
148 echo -e "hello\t\t world!"
149 env
150 echo $PATH
151 history 10
[root@localhost ~]# history -w his.txt
[root@localhost ~]# ll
-rw-------. 1 root root 1395 Mar 29 15:41 his.txt
[root@localhost ~]# more his.txt
ip addr
ls /
pwd
ls
ll
..........
14、磁盘使用情况
1. df 命令 【查看磁盘使用情况】
这里显示一共17G,已使用1.2G,还剩余16G
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.5M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.2G 16G 7% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
15、清屏
1. clear 命令 【清空屏幕内容】
在控制台操作一会以后,屏幕上就显示了一屏内容,看起来乱成一团,可以使用clear命令清屏,类似于widows中的cls命令。
[root@localhost ~]# clear
16、查看内存使用情况
1. free 命令 【查看内存和交换空间的使用情况】
2. free -m 命令 【显示内存单位为MB】
3. free -h 命令 【根据值的大小,显示易于识别的单位】
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1819 169 1509 9 140 1501
Swap: 2047 0 2047
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 169M 1.5G 9.5M 140M 1.5G
Swap: 2.0G 0B 2.0G
网友评论