Linux常用shell命令详解(一)

举报
mindtechnist 发表于 2023/05/11 15:23:17 2023/05/11
【摘要】 一、常用命令(1)tab键命令补全按一下tab键可以补全命令,如果有多个命令可以匹配,那么按两下tab键可以提示匹配的命令。比如要查看某个文件dm_exit.c,输入cat dm按两次tab键出现提示,直到唯一匹配的时候,tab键会把命令自动补全。(2)查询历史命令查询历史命令有两种方法,一个是使用history命令,第二个方法是直接按上下键。history会列出所有的历史命令,上下键是一条...

一、常用命令

(1)tab键命令补全

按一下tab键可以补全命令,如果有多个命令可以匹配,那么按两下tab键可以提示匹配的命令。

image

比如要查看某个文件dm_exit.c,输入cat dm按两次tab键出现提示,直到唯一匹配的时候,tab键会把命令自动补全。

(2)查询历史命令

查询历史命令有两种方法,一个是使用history命令,第二个方法是直接按上下键。history会列出所有的历史命令,上下键是一条一条的列出上一条或下一条命令(按一次显示一条)。

(3)清屏

clear

clear命令可以清除当前屏幕,如果使用鼠标往上滚动还是可以看到以前的输出的。

(4)echo输出变量或字符串

直接输出一个字符串:

image

输出一个变量:$代表的是环境变量,下面的命令用于查看当前使用的shell是什么。

image

(5)ls命令、Linux的目录结构、绝对/相对路径

1° ls命令

ls查看目录下的文件(Linux中一切皆文件)。

ls -al 显示所有文件及详细信息,隐藏文件也会显示, -l 表示显示详细信息(用户、权限、大小、时间等,将在后面命令中介绍), -a表示显示所有文件。

image

其中 . 表示当前目录 .. 表示上一级目录,前面带一个 . 的文件都是隐藏文件,如果不加 -a 选项就无法看到,比如下面我们建一个隐藏文件,分别用不带 -a 选项和带 -a 选项查看

image

ls -R 选项,递归显示子目录,他会把子目录和子目录的子目录全部显示出来。

image

ls -lrt 按时间顺序显示,且显示详细信息,文件会按照最后访问时间进行排序显示出来。

image

④ 使用通配符 *?

*号可以代表任意个字符,下面命令表示显示所有.c文件

ls *.c

?只能表示一个字符

image

更多的选项可以通过man命令查看, man ls

image

2° Linux目录结构

目录 用途
/ 根目录
bin 存放了系统可执行程序
boot 存放了内核和启动程序的相关文件
lib 库目录,存放了系统的动态共享库
media 挂载设备媒体、U盘、光驱等,比如我们插入U盘拷贝数据的时候,U盘就会被自动识别为media
usr 一般会将很多应用安装在此目录,/usr/local 用户自己安装文件的目录
sbin 超级管理员root的执行程序
proc 系统内存映射,会保留一些进程运行信息
etc 系统软件启动和配置目录
dev 设备文件目录
home 用户家目录,其实就是 ~

3° 绝对路径与相对路径

绝对路径是指 ==/==开头的路径,比如 /home/qq/dm01_cmd/

image

使用绝对路径,不管当前目录是什么,都能根据绝对路径到达目的路径。

相对路径就是以 . 开头以及 . . 开头的路径,前面说过,一个点表示当前目录,两个点表示上一级目录,比如现在dm01_cmd目录下有aa和bb两个目录,当前在aa目录中,通过 cd …/bb 就以相对路径(上一级目录的bb目录中)的方式进入了bb目录。image

(6)pwd查看当前目录

通过pwd命令可以查看当前在那个目录。

(7)man查看帮助手册

man man 查看man的帮助手册,进入man帮助手册后,可以按上下键一行一行的移动,enter键和下键一样,也是按行滚动,使用空格键可以一页一页(一个屏幕)的滚动翻页。按q就可以退出man帮助手册。

image

上面几个数字是比较有用的,比如 2 System Calls 代表系统调用,当我们查找系统调用函数的帮助手册时可以加这个参数,比如 man 2 fork 查看fork函数的帮助手册。

(8)date查看系统时间,以及时间校准方法

可以直接date获取时间,也可以按照自己需要的格式获得系统时间,各种格式的说明可以通过man date获得。

image

如果你的时间不准确可以通过下面方法解决:

首先安装时间同步服务,执行下面的命令

yum install ntp -y

然后执行下面命令即可同步网络时间

ntpdate cn.ntp.org.cn

再次查看时间,如果发现时间和实际时间还是不一致,应该考虑时区设置问题,查看系统时区是不是本地时区,使用vim编辑器打开 /etc/sysconfig/clock

vim /etc/sysconfig/clock

ZONE后面显示的就是时区

image

我们把之前的时区屏蔽,修改为本地时区,比如我所在位置为"Asia/Shanghai",然后关闭硬件时钟与UTC时间一致功能

ZONE="Asia/Shanghai"
UTC=false
ARC=false

image

设置linux时区为上海,在命令行输入

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步时间,如果没有ntpdate需要根据前面介绍先安装ntp服务

ntpdate time.nist.gov

然后在根目录下执行命令设置硬件时间和系统时间一致

./sbin/hwclock --systohc

image

再次执行date查看时间并对比本地时间,可以发现时间正常。

image

(9)alias命令重命名或自定义命令

这个命令可以帮助我们把一个很长的命令自定义为一个简短的名字,或者把一些常用的复杂操作重命名为一个方便使用的命令。

查看当前已有的命令别名:

image

自定义一个命令,比如我们学习Linux的时候,每次开机都要进入到一个存放自己练习文件的目录,我是在下面路径中,所以每次开机都要敲一遍这个路径

cd /home/qq/dm01_cmd

通过alias可以把它命名为一个简单的命令

alias gotest='cd /home/qq/dm01_cmd'

image

直接执行gotest就可以达到 cd /home/qq/dm01_cmd的效果

image

这里 cd ~ 是回到家目录的意思。

使用unalias可以删除命令别名

image

可以看到别名gotest没有了。

另外也可以在家目录(~目录,通过 cd ~进入)下的 .bashrc文件中进行配置

image

(10)bc计算器

bc命令可以进入计算器,进行一些简单计算,输入要计算的表达式后,按回车输出结果

image

quit 退出,不能简写为q

image

二、目录操作相关命令

(1)tree命令安装及使用

Linux中的目录都是树状的,一层一层的,使用tree命令可以树形显示目录,并递归显示子目录。如果没有安装过tree的话需要使用yum命令安装一下(我用的CentOS操作系统)

yum install tree

如果是Ubuntu系统应该使用apt-get命令

sudo apt-get install tree

这里提示一下,如果你使用的是CentOS 6,那么你的yum命令可能会报错

错误:Cannot find a valid baseurl for repo: base

这是因为CentOS 6已经停止更新了,我曾因为yum这个错误疯狂尝试各种方法,最后查资料看到CentOS 6已经停止更新,这里有一个解决方法,在shell下输入下面的命令

sed -i.old -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\//baseurl=http:\/\/vault.centos.org\/centos\/6\//g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all

然后再次使用yum命令就发现yum可以正常使用了。这时可以安装tree了

yum install tree

image

tree命令可以看到目录的层级结构,非常好用。

(2)cd切换目录

① 有关目录的一点小知识

一般来说我们在命令中写路径的时候都会在后面加一个 / ,比如我们写一条切换到某路径的命令

cd /home/qq/dm/dm_gcc/main/

对这条命令中的目录进行分析,首先第一个 / 代表根目录, home/ 代表家目录, qq/ 代表qq目录,dm/ 代表dm目录,dm_gcc/ 代表dm_gcc目录, main/ 代表main目录,这条命令就是切换到main目录中的意思。

image

如果我们要去上一级目录中的某个目录,应该这样

cd ../header/

代表去上一级目录下的header目录,其中 …/ 就表示上一级目录,如果是当前目录用 ./ ,说这些的目的是为了告诉大家,我们在写目录的时候会在后面加一个 / 来表示这是目录,大家不要写了这么多命令还不知道命令中的 / 是什么意思。有时候,如果路径只有一层,可以不加 /

image

② 回到家目录home的4种方式

cd ~  
cd - 
cd /home
cd $HOME

(3)mkdir创建目录

mkdir cc/dd 在已有目录cc下创建dd,如果当前cc目录不存在就要加一个 -p 选项,该选项的意思是递归创建目录。

image

(4)rmdir删除目录

rmdir命令只能删除空目录(只有 .. . 的目录),不能删除非空目录,非空目录要加 -p 选项递归删除子目录。image

如果子目录太多(目录层次太深)这个命令就不好用了,可以用rm命令删除

image

一般使用rm比较好,因为他还用于删除文件,在后面会详细介绍。

(5)which查看路径

which可以查看一个命令所在的路径

image

可以看到这些命令都在 /bin 目录下,但是也有例外

image

这是因为 cd命令是BASH shell本身自带的命令,不在任何目录中。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。