欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Shell基本命令

程序员文章站 2022-06-03 11:51:08
...

Shell基本命令

1.查看目录和文件

1.1 显示当前目录:pwd

pwd				# 显示当前所在的位置,即工作目录

1.2 改变目录:cd

cd命令是在Linux文件系统的不同部分之间移动的基本工具。当登录系统之后,总是处在用户主目录中。这个目录有一个名字,也就是“路径名”,它是由home/开头,后面跟着登录的用户名。

输入cd命令,后面跟着一个路径名作为参数,就可以直接进入另外一个子目录中去。

举例:

cd /usr/bin		# 进入/usr/bin中
cd ..			# 返回上一级目录
cd /			# 直接进入根目录,即 “/” 目录
cd .. / ..		# 直接进入根目录,即 “/” 目录
cd 				# 回到用户主目录
cd ~			# 回到用户主目录
cd -			# 回到上一次访问的目录

在Shell中,“…” 代表当前目录的上一级目录,而 “." 则代表当前目录,”~“ 代表用户主目录,”/“ 代表根目录

1.3 列出目录内容:ls

ls 				# 查看当前目录下的所有目录和文件
ls -F			# 在每个目录后加上/,在可执行文件后加*,在链接文件后加上@
ls -a			# 查看当前目录下的所有目录和文件,包括隐藏文件
ls -l			# 查看文件的各种属性,可以用ll代替
ls /etc/default/# 查看子目录的内容

1.4 查看文本文件:cat 和 more

cat file		# 查看文本文件file
cat file1 file2 # 查看多个文本文件
cat -n file		# 查看文本文件,显示行号

cat命令会一次将所有内容全部显示在屏幕上,可以使用more命令来一页一页地显示文件内容

more file		# 一页一页地显示文本文件内容

1.5 阅读文件开头和结尾:head 和 tail

head -n 2 file	# 显示文件开头2行
head -n 2 file	# 显示文件结尾2行

1.6 更好的文本阅读工具:less

用法和more相似,但比more拥有更多功能

1.7 查找文件内容:grep

Shell基本命令

Shell基本命令

grep是通过“基础正则表达式"进行搜索的

2.寻找文件:find

举例:

find /usr/bin/ -name zip -print	# 在/usr/bin/中查找zip命令

-type可以指定查找某种类型的文件

参数 含义 参数 含义
b 块设备文件 f 普通文件
c 字设备文件 p 命名管道
d 目录文件 l 符号链接
-atime n用来查找最后一次使用在n天前的文件,+n表示大于n,-n表示小于n
-mtime n用来查找最后一次修改在n天前的文件,+n表示大于n,-n表示小于n

例如:

$ find /usr/bin/ -type f -atime +100 -print		# 查找100天内没有使用过的命令
/usr/bin/catchsegv
/usr/bin/bzdiff
/usr/bin/gencat
/usr/bin/getconf
/usr/bin/zipgrep
/usr/bin/iconv
...
find . -type f -mtime -1 -print			# 表示在当前目录中,查找最近一天内修改过的文件

3.快速定位文件:locate

locate *.doc		# 查找系统下.doc文件位置

locate命令自动建立整个文件名数据库,通过检索文件名数据库来确定文件的位置,可以使用updatedb命令立刻生成该数据库文件的最新版本。

4.从终端运行程序

firefox				# 启动Firefox浏览器,终端挂起
firefox &			# 启动Firefox浏览器,终端不被挂起

5.查找特定程序:whereis

$ whereis find		# 查找find的位置
find: /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/man/man1p/find.1p.gz /usr/share/info/find.info-1.gz /usr/share/info/find.info-2.gz /usr/share/info/find.info.gz
$ whereis -b find	# 查找find的位置,只查找二进制文件
find: /usr/bin/find

6.用户及版本信息查看

who查看当前系统中有哪些人登录,以及他们工作在哪个控制台上

$ who
daniel   tty2         2021-07-04 15:13 (tty2)
$ whoami
daniel

uname用于显示当前系统的版本信息,-a会给出当前操作系统的所有有用信息,-r给出内核版本信息

$ uname
Linux
$ uname -a
Linux localhost.localdomain 4.18.0-305.3.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ uname -r
4.18.0-305.3.1.el8.x86_64

7.官方手册文档:man

$ man ls		# 查看ls的官方手册
LS(1)                            User Commands                            LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the  FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor  --sort  is  speci‐
       fied.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file
 Manual page ls(1) line 1 (press h for help or q to quit)

8.命令简介:whatis 和 apropos

$ whatis uname
uname (1)            - print system information

apropos实际是whatis的反向查找,例如想要查找sreach相关的命令

apropos search

9.使用命令行补全和通配符

tab键可以补全命令行,当有多个补全匹配时,连续按两次tab键可以列出所有可补全的选项,这对敲命令行的效率提高还是很明显的。

Shell通配符:

通配符可以大大简化命令的输入,使得批量操作变简单

"*"用于匹配任意长度的字符串,例如想要列出当前目录下所有C++文件:
$ ls *.cpp

"?""*"类似,不同之处在于"?"只匹配一个字符
$ ls text?
text1 text2 text3 textA textB textC

"[]"用于匹配所有出现在方括号内的字符,例如
$ ls text[1A]
text1 textA

大简化命令的输入,使得批量操作变简单

"*"用于匹配任意长度的字符串,例如想要列出当前目录下所有C++文件:
$ ls *.cpp

"?""*"类似,不同之处在于"?"只匹配一个字符
$ ls text?
text1 text2 text3 textA textB textC

"[]"用于匹配所有出现在方括号内的字符,例如
$ ls text[1A]
text1 textA
相关标签: Linux linux shell