Linux常用shell命令详解(一)
一、常用命令
(1)tab键命令补全
按一下tab键可以补全命令,如果有多个命令可以匹配,那么按两下tab键可以提示匹配的命令。
比如要查看某个文件dm_exit.c,输入cat dm按两次tab键出现提示,直到唯一匹配的时候,tab键会把命令自动补全。
(2)查询历史命令
查询历史命令有两种方法,一个是使用history命令,第二个方法是直接按上下键。history会列出所有的历史命令,上下键是一条一条的列出上一条或下一条命令(按一次显示一条)。
(3)清屏
clear
clear命令可以清除当前屏幕,如果使用鼠标往上滚动还是可以看到以前的输出的。
(4)echo输出变量或字符串
直接输出一个字符串:
输出一个变量:$代表的是环境变量,下面的命令用于查看当前使用的shell是什么。
(5)ls命令、Linux的目录结构、绝对/相对路径
1° ls命令
ls查看目录下的文件(Linux中一切皆文件)。
① ls -al 显示所有文件及详细信息,隐藏文件也会显示, -l 表示显示详细信息(用户、权限、大小、时间等,将在后面命令中介绍), -a表示显示所有文件。
其中 . 表示当前目录 .. 表示上一级目录,前面带一个 . 的文件都是隐藏文件,如果不加 -a 选项就无法看到,比如下面我们建一个隐藏文件,分别用不带 -a 选项和带 -a 选项查看
② ls -R 选项,递归显示子目录,他会把子目录和子目录的子目录全部显示出来。
③ ls -lrt 按时间顺序显示,且显示详细信息,文件会按照最后访问时间进行排序显示出来。
④ 使用通配符 * 和 ?
*号可以代表任意个字符,下面命令表示显示所有.c文件
ls *.c
?只能表示一个字符
更多的选项可以通过man命令查看, man ls
2° Linux目录结构
目录 | 用途 |
/ | 根目录 |
bin | 存放了系统可执行程序 |
boot | 存放了内核和启动程序的相关文件 |
lib | 库目录,存放了系统的动态共享库 |
media | 挂载设备媒体、U盘、光驱等,比如我们插入U盘拷贝数据的时候,U盘就会被自动识别为media |
usr | 一般会将很多应用安装在此目录,/usr/local 用户自己安装文件的目录 |
sbin | 超级管理员root的执行程序 |
proc | 系统内存映射,会保留一些进程运行信息 |
etc | 系统软件启动和配置目录 |
dev | 设备文件目录 |
home | 用户家目录,其实就是 ~ |
3° 绝对路径与相对路径
绝对路径是指 ==/==开头的路径,比如 /home/qq/dm01_cmd/
使用绝对路径,不管当前目录是什么,都能根据绝对路径到达目的路径。
相对路径就是以 . 开头以及 . . 开头的路径,前面说过,一个点表示当前目录,两个点表示上一级目录,比如现在dm01_cmd目录下有aa和bb两个目录,当前在aa目录中,通过 cd …/bb 就以相对路径(上一级目录的bb目录中)的方式进入了bb目录。
(6)pwd查看当前目录
通过pwd命令可以查看当前在那个目录。
(7)man查看帮助手册
man man 查看man的帮助手册,进入man帮助手册后,可以按上下键一行一行的移动,enter键和下键一样,也是按行滚动,使用空格键可以一页一页(一个屏幕)的滚动翻页。按q就可以退出man帮助手册。
上面几个数字是比较有用的,比如 2 System Calls 代表系统调用,当我们查找系统调用函数的帮助手册时可以加这个参数,比如 man 2 fork 查看fork函数的帮助手册。
(8)date查看系统时间,以及时间校准方法
可以直接date获取时间,也可以按照自己需要的格式获得系统时间,各种格式的说明可以通过man date获得。
如果你的时间不准确可以通过下面方法解决:
首先安装时间同步服务,执行下面的命令
yum install ntp -y
然后执行下面命令即可同步网络时间
ntpdate cn.ntp.org.cn
再次查看时间,如果发现时间和实际时间还是不一致,应该考虑时区设置问题,查看系统时区是不是本地时区,使用vim编辑器打开 /etc/sysconfig/clock
vim /etc/sysconfig/clock
ZONE后面显示的就是时区
我们把之前的时区屏蔽,修改为本地时区,比如我所在位置为"Asia/Shanghai",然后关闭硬件时钟与UTC时间一致功能
ZONE="Asia/Shanghai"
UTC=false
ARC=false
设置linux时区为上海,在命令行输入
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
同步时间,如果没有ntpdate需要根据前面介绍先安装ntp服务
ntpdate time.nist.gov
然后在根目录下执行命令设置硬件时间和系统时间一致
./sbin/hwclock --systohc
再次执行date查看时间并对比本地时间,可以发现时间正常。
(9)alias命令重命名或自定义命令
这个命令可以帮助我们把一个很长的命令自定义为一个简短的名字,或者把一些常用的复杂操作重命名为一个方便使用的命令。
查看当前已有的命令别名:
自定义一个命令,比如我们学习Linux的时候,每次开机都要进入到一个存放自己练习文件的目录,我是在下面路径中,所以每次开机都要敲一遍这个路径
cd /home/qq/dm01_cmd
通过alias可以把它命名为一个简单的命令
alias gotest='cd /home/qq/dm01_cmd'
直接执行gotest就可以达到 cd /home/qq/dm01_cmd的效果
这里 cd ~ 是回到家目录的意思。
使用unalias可以删除命令别名
可以看到别名gotest没有了。
另外也可以在家目录(~目录,通过 cd ~进入)下的 .bashrc文件中进行配置
(10)bc计算器
bc命令可以进入计算器,进行一些简单计算,输入要计算的表达式后,按回车输出结果
按 quit 退出,不能简写为q
二、目录操作相关命令
(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
tree命令可以看到目录的层级结构,非常好用。
(2)cd切换目录
① 有关目录的一点小知识
一般来说我们在命令中写路径的时候都会在后面加一个 / ,比如我们写一条切换到某路径的命令
cd /home/qq/dm/dm_gcc/main/
对这条命令中的目录进行分析,首先第一个 / 代表根目录, home/ 代表家目录, qq/ 代表qq目录,dm/ 代表dm目录,dm_gcc/ 代表dm_gcc目录, main/ 代表main目录,这条命令就是切换到main目录中的意思。
如果我们要去上一级目录中的某个目录,应该这样
cd ../header/
代表去上一级目录下的header目录,其中 …/ 就表示上一级目录,如果是当前目录用 ./ ,说这些的目的是为了告诉大家,我们在写目录的时候会在后面加一个 / 来表示这是目录,大家不要写了这么多命令还不知道命令中的 / 是什么意思。有时候,如果路径只有一层,可以不加 /
② 回到家目录home的4种方式
cd ~
cd -
cd /home
cd $HOME
(3)mkdir创建目录
mkdir cc/dd 在已有目录cc下创建dd,如果当前cc目录不存在就要加一个 -p 选项,该选项的意思是递归创建目录。
(4)rmdir删除目录
rmdir命令只能删除空目录(只有 .. . 的目录),不能删除非空目录,非空目录要加 -p 选项递归删除子目录。
如果子目录太多(目录层次太深)这个命令就不好用了,可以用rm命令删除
一般使用rm比较好,因为他还用于删除文件,在后面会详细介绍。
(5)which查看路径
which可以查看一个命令所在的路径
可以看到这些命令都在 /bin 目录下,但是也有例外
这是因为 cd命令是BASH shell本身自带的命令,不在任何目录中。
- 点赞
- 收藏
- 关注作者
评论(0)