Linux基本命令的使用

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中的基本命令。

文件查看

pwd 列出当前目录的路径

查看当前所在的路径

注意,~表示是用户家目录,目前我们登陆的是root用户,root用户的家目录是/root

[root@localhost ~]# pwd
/root

ls 列出当前目录下的所有文件

[root@localhost ~]# ls
anaconda-ks.cfg

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

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

ll --help 查看ls用法,--help是一个帮助命令

[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 .
.............

创建、重命名文件\文件夹

touch filename 创建空文件

创建空文件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

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

mkdir -p 目标目录存在也不报错

当我们在创建目录时不确定这个目录是否已存在的时候,可以使用-p参数, 就算目录已存在也不会报错,如果不指定-p参数会报错,会提示目录已存在

创建目录abc

[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

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

链接文件

linux有两种链接:硬链接、符号(软)链接

软链接功能类似类似于windows的快捷方式,主要用于节省磁盘空间

首先看硬链接:硬链接相当于对原始文件的一个复制,不能对目录使用硬链接。

命令如下:

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

再看符号(软)链接:

如果想使用软连接,需要添加-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

切换目录

cd . 当前目录

一个.表示当前目录

[root@localhost ~]# pwd
/root
[root@localhost ~]# cd .
[root@localhost ~]# pwd
/root

cd .. 去上一级目录

两个..表示上一级目录

[root@localhost ~]# pwd
/root
[root@localhost ~]# cd ..
[root@localhost /]# pwd
/

cd / 去根目录

通过在cd后面指定目录,可以切换到指定目录

[root@localhost /]# cd /
[root@localhost /]# pwd
/
[root@localhost ~]# cd /bin/
[root@localhost bin]# pwd
/bin

cd ~ 去当前用户主(家)目录

[root@localhost bin]# cd ~
[root@localhost ~]# pwd
/root

cd xxx/xxx 直接跳转到某个目录

[root@localhost ~]# cd abx/test/
[root@localhost test]# pwd
/root/abx/test

删除文件\文件夹(目录)

rm命令可以删除文件或者目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉

对于链接文件,只是删除整个链接文件,而原有文件保持不变。

常见用法:

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

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

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

rm -rf 递归删除目录及其文件

Linux中最危险的操作,最具破坏性

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

复制\粘贴\剪切

常见用法:

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

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

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

远程复制

scp命令用于在网络中不同主机之间复制文件或目录。scp是有Security的文件copy,基于ssh登录,如果没有配置免密码登陆,需要输入主机密码。

常见用法:

从本地复制(192.168.182.131)到远程主机 (192.168.182.130)

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

登录到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 ~]#

提示:

显示进度在scp后添加-v

复制目录在scp后添加-r

静默复制模式在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

文件属性

图片描述

黑带七段

第一段:权限

第一个字符代表文件(-)、目录(d),链接(l)

其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

第一组:文件所有者的权限是读、写和执行

第二组:与文件所有者同一组的用户的权限

第三组:不与文件所有者同组的其他用户的权限

也可用数字表示为:r=4,w=2,x=1,如:权限6可以表示为r+w=6

第二段:目录/链接个数

对于目录文件,表示它的第一级子目录的个数

注意:此处的值要减2才等于该目录下的子目录的实际个数(目录下默认包含.和..这两个目录)

对于其他文件,默认是1

第三段:所属用户

第四段:所属组

第五段:文件大小(字节)

第六段:最后修改时间

第七段:文件\文件夹名称

chmod 分配权限

常见用法:

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

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

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

内容查看

cat 显示文本内容,类似windows中的type(顺序输出)

[root@localhost ~]# cat anaconda-ks.cfg 
#version=DEVEL
#System authorization information
auth --enableshadow --passalgo=sha512
......

cat -b 显示行号输出

[root@localhost ~]# cat -b anaconda-ks.cfg 
     1  #version=DEVEL
     2  # System authorization information
     3  auth --enableshadow --passalgo=sha512
     4  # Use CDROM installation media
........

分屏显示 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%)

压缩、解压

常见用法:压缩和解压

参数:

-z 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

-c 创建一个压缩文件的参数指令(create 的意思);

-x 解开一个压缩文件的参数指令!

-v 压缩的过程中显示文件!

-f 使用档案名字,这个参数是最后一个参数,后面只能接档案名!

注意:特别注意,在参数的下达中, c/x 仅能存在一个!不可同时存在!

压缩:

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

解压:

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

输出及显示

echo:将内容输出到设备,类似java里面的system.out.println()

常见用法:

echo "hello\t\t world!" 不解析转义字符

echo -e "hello\t\t world!" 解析转义字符

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

软件安装和卸载

第一种:压缩包安装方式,直接解压,配置相应的环境变量即可使用

第二种:在线安装,使用yum

yum集成了连接网络,软件安装,删除,更新等功能,yum在配置好repo后,机器只要连网,就能智能化安装软件,使用yum 安装的好处在于可以自动安装软件需要的依赖包

安装

yum install -y 安装

升级

yum update 不跟则更新全部

查找和显示

yum info 显示包信息

yum list 不跟则显示已安装或可安装包

删除程序

yum remove

清除缓存

yum clean all 清除所有缓存(包含文件、旧软件)

在这里大家先了解yum的基本语法,等后面具体使用到的时候我们再演示。

查看操作历史

history保留了最近执行的命令记录,默认可以保留1000。

历史清单从0开始编号到最大值。

常见用法:

history N 显示最近N条命令

history -c 清除所有的历史记录

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
..........

磁盘使用情况

使用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

清屏小命令

在控制台操作一会以后,屏幕上就显示了一屏内容,看起来乱成一团,可以使用clear命令清屏,类似于widows中的cls命令。

[root@localhost ~]# clear

查看内存使用情况

free 查看内存和交换空间的使用情况

常见用法:

free -m:显示内存单位为MB

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

关机重启快捷命令

shutdown -h now 关机

reboot -h now 重启

exit 退出当前登录状态

results matching ""

    No results matching ""