Linux 常用命令学习 | 菜鸟教程
前言、shell命令解释器
1、shell命令解释器功能说明
命令行和解释器这两个概念常常混淆。
严格意义上,命令行仅仅是供用户输入命令的界面。本身只接受输入,然后把命令(本质上是可执行程序)传递给命令解释器,后者就是shell。
从本质上讲,shell也是程序,在用户和操作系统之间充当可交互接口的角色。shell这层“”壳“起着内外层之间”命令解释“的功能。用户在具有shell提示符&的命令行输入命令,运行在后台的shell把命令解释成指令代码,交给操作系统运行。(linux环境中有几种默认的shell,其中BASH Shell 被默认使用。)
查看系统有(支持)哪些shell,以及正在使用哪一个:
详细分析在shell中输入字符串并回车的过程:
(在终端页面打开的过程中,一定有一个程序在运行着,那就是bash shell,可以用ps-查看当前控制台进程命令验证)
1、在键盘按下p,
2、屏幕上显示出p(首先仅仅这一个来回,p按键信号 发送给shell程序,shell程序打印功能使p能显示在屏幕上)
3、接着输入w,显示w,输入d,显示d(shell程序同样完成上述类似功能)
4、回车(回车后,shell根据接受到的字符串去找命令,去哪找?找的默认路径由环境变量PATH决定。(环境变量PATH的值是一堆路径名,可用echo $PATH命令显示其值)在这些路径中找到对应的字符串时,也就承认了这是一个命令。随即执行这个可执行程序
5、程序列出了结果
ps:
我们可以设置PATH环境变量添加到我们的命令目录:例如:
export PATH=$PATH:/my/dir (这行代码的意思是 ,现在的PATH环境变量被新定义为现在的环境变量加上一个新的路径/my/dir ,”:“是”加“的意思;export命令经常用来设置系统环境参数 )(要删除一些路径的话可以用复制一部分的笨办法)
command not found的原因:
1、PATH所确定的目录中无此程序,比如:
我在path环境变量里新添加路径,并在新添加的路径中,新建新命令的文件,最后赋予这个新命令文件以可执行权限,执行后发现什么也不做。
也可能,这个命令程序是存在的,但是没在PATH路径中展示。此时除了在PATH路径中添加该命令的路径以外,还可以以绝对路径的方式执行该命令程序,比如 /home/gyw/pwdabc。
一、shell的命令前要说明:
-
命令行指的是 输入命令的界面,本身只接受输入,然后把命令传递给 命令解释器(Shell)。ubuntu下通过ctrl+alt+T(T代表terminal终端)可快捷打开命令行界面
-
shell本质上是一个程序,在用户命令行和操作系统之间作为一个交互接口(shell取名意为内核之外的一个壳,作为用户与内核互操作的一个外环境。与windos相比,shell更多是以一个个图形界面及控件的形式出现,当然windos本身也是有shell命令的)。linux提供几种不同的shell,语法和特性不尽相同,其中bash shell为默认。
-
在windos中,可以通过“win+r”--cmd的方式打开windos的shell命令行,例如dir、rd、md、cd、cls等命令(基本和linux类似)。我们可以通过windos命令行来完成一个文件夹的创建,这是一件有趣的事情。
-
Linux 文件名、命令及其参数是严格区分大小写,写命令的时候注意空格.这一点跟windows不同。
-
shell提示符有两种,$和#,前者是普通用户时的提示符,后者是以root身份写命令时的提示符
-
##是注释符号
-
一个完整的命令提示符如下:用户名@主机名:当前目录 $
-
所有需要临时用到root权限的地方,一律使用sudo工具临时提升权限。
-
sudo -s(su)变为超级用户 exit(su 用户名)回到一般用户
-
表示一个命令的一般语法的方式,可选部分使用"[]",参数部分使用斜体字表示。
-
命令行(命令名(实质也是文件)、文件名)补全 :Tab。命令或者文件名只记得一半时,随时可以按tab补齐。若是有多种选择,可以双击tab选择怎么补。一定要多使用增加效率!!!!
-
通配符 : * 通配任意长度字符串,如ls *.cpp,就把即将打开的文件目录中的cpp文件筛选出来了;
? 通配一个字符 ,如 ls text? ,选出特定格式的文件;
[]用于通配所有出现在[]内的字符,如 ls text[1A],可以选出 text 1 、textA等文件;也可以同时借助 - ,指定[]中的字符集范围,比如 ls text[1-3]、ls text[A-C]
- 从命令行终端运行程序:直接输入程序名称即可。 比如: ls、firefox、gedit(文本编辑器)等。如果运行程序后希望继续留在终端,需要在程序后面加 &,这样被运行程序会在后台运行;否则终端挂起,直到被运行程序运行完毕。
- linux命令的格式
命令 【选项】 【参数】
举例:
ls -l /home
如ls命令有选项-l,那么ls到底有哪些选项呢?可以通过man ls来查看。
二、文件基本操作命令目录(红色加粗是面试必考)
2. pwd命令:显示当前所在的目录
5. touch命令:新建文件
10. cat命令:显示文件内容
14.clear:清屏(说明:此命令本质上只是让终端向后翻一页,回翻还是存在的;与reset命令有区别。 reset:重新初始化屏幕,清除历史命令操作记录)
15.echo:打印、转义显示命令
16.history查看历史命令
8.uname命令
9.who和whoami命令
10.su命令
4.file命令:查看文件类型
4.locate命令
5.man(命令帮助手册)
6.whatis和apropos
6.awk命令
1.gzip和bzip2命令(单个文件的压缩)
2. tar命令(多个文件和目录压缩)
(1)ifconfig命令示例一——显示接口(网卡)配置参数
(2)ifconfig命令示例二——设置接口(网卡)配置参数
# rpm -ivh --nodeps php-4.3.9-3.1-i386.rpm
yum安装 yum install 软件名字 yum install yum-fastestmirror yum remove
十二、配置环境、打补丁、软件、内核及系统版本查看命令
1.export命令
2、patch
3、-v/--version(查看软件版本)
4、uname -a(查看内核版本)
cat /proc/version(查看系统版本)
《黑马程序员2023年新版Linux零基础快速入门到精通》学习笔记总目录_黑马程序员linux讲义-CSDN博客
一、文件基本操作命令
1. ls命令(缩写:list)
-
ls命令的功能是显示指定目录下的文件目录清单或者文件清单,其参数更加丰富多样。
(1)ls示例一——不带参数
[root@yxy ~]# ls
功能:显示指定目录中的文件清单,如果没有指定任何目录,则默认为当前目录。
如 ls /etc/fonts/ 即可查看目录中的内容,可以省略中间cd选目录的过程
(2)ls示例二——显示包括隐含文件的全部文件(all)
ls -a
. anaconda-ks.cfg .bash_logout .bashrc install.log .tcshrc
说明:一个若文件名以“.”开头,则认为是隐含的,普通的ls命令不显示以“.”开头的文件;所以要完全显示某目录下的文件清单,必须加上-a参数才行。
(4)ls示例三——包含子文件属性八信息栏长格式输出方式(long)
ls -l
总用量 24
-rw-------. 1 root root 1116 11月 13 18:15 anaconda-ks.cfg
-rw-r--r--. 1 root root 12526 11月 13 18:15 install.log
-rw-r--r--. 1 root root 3482 11月 13 18:14 install.log.syslog
参数-l 的功能是:以长格式列表输出指定目录中的文件清单
以上述输出中文件install.log为例
文件类型 文件权限 链接数 属主 属组 大小 日期 (last 修改)时间 文件名
- rw-r--r--. 1 root root 12526 11月13 18:15 install.log
Linux中,一切皆文件。共有7种文件类型,每一种都有对应的表示符号。
伪文件不存在在硬盘上,只活动于内存上。
ls -ld
查看一个目录(文件夹)的属性
目录属性的内容同文件属性的内容;
(5)ls示例四——递归显示
ls -R
.:
anaconda-ks.cfg install.log install.log.syslog
参数-R 的功能是:递归显示指定目录下的文件清单,
即会显示指定目录分支内各子目录中的文件清单
(6) ls -F
ls出来的目录清单中有 目录格式(蓝色 /)、普通文件格式(黑色 无)、可执行文件格式(绿色 *)、链接格式(淡蓝色 @)等。有些不支持名称颜色渲染的终端,可以使用 ls -F,就会在文件名后缀一个符号以式不同文件类型的区别
(7)注意:命令的选项可以组合使用,只需要一个短线
如 ls-alF
(8)ls -h
-h(human - able 的缩写),将文件大小以 K(KB)、M(MB)、G(GB) 来表示。而不是像 ls -l中大小用一个大数值表示
2. pwd命令(print working directory)
示例:pwd
[root@yxy ~]# pwd
/root
功能:显示当前目录。在linux一些提示符信息里没有目录信息的shell中,会经常用到这个命令,来确认自己所处的目录位置。默认的Bash shell则用不到
3. mkdir命令
(1)mkdir示例一
# mkdir abc
功能:在当前目录下创建目录abc (类似于新建文件夹)
# mkdir a bc ff
功能:在当前目录下一次性创建多个目录a bc ff
# mkdir ~/home/abc
功能:在主目录下通过使用绝对路径来创建目录(当绝对路径中某一级不存在时,会报错:无法创建目录。此时就用到了下面的 -p功能)
(2)mkdir示例二——创建多级目录(-p parents)
# mkdir -p a/b/c
[root@yxy ~]# ls -R a
一次性得到 a/b/c:
a/b/c:功能:参数-p功能是如果要创建的目录的父目录不存在,则先创建其父目录,再创建该目录; 如果指定的目录存在,则不影响原目录,也不会报错。在本示例中会连续创建a目录、a/b目录、a/b/c目录。
4. cd命令(某种程度上,代替了鼠标的箭头对文件目录的选择,ls是展开;二者配合完成在windos图形界面下一个目录文件的展开操作)(缩写:Change Directory(改变目录))
(1)cd示例一——切换到某工作目录
cd /var
功能:将当前的工作目录切换为/var
常用必记:
相对路径比绝对路径:在Linux文件系统中,绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相对路径则指的是相对于当前路径的写法,一般借助 .或者 ..构成。
/ 是指根目录:就是所有目录最顶层的目录
~ 是当前用户的家目录
./ 表示当前目录../ 表示当前目录的上一级目录
应用:
cd ./文件夹 切换到当前目录的某个文件夹
cd .. 切换到上级目录
cd ../文件夹 切换到上级目录中的某个文件夹
图 1 绝对路径和相对路径
举个例子,如图 1 所示,假设用户当前所在的目录是 cat,而此时要切换到 dog 目录。在这种情况下,切换路径有以下 2 种表达方式:
- 使用绝对路径,写法为:/home/dog,表示要切换的目录为根目录下 home 目录中的 dog 目录;
- 也可以使用相对路径,写法为:../dog,其中,.. 表示当前目录的父目录(home 目录),也就是说,相对于目前所在目录 cat,要切换到父目录 home下的 dog 目录
ps:Linux的文件系统目录结构
5. touch命令
(1)touch示例一——创建空文件
[root@yxy ~]# touch myfile
[root@yxy ~]# ls -l myfile
-rw-r--r--. 1 root root 0 11月 13 23:48 myfile (文件类型无)
功能:如果myfile不存在,则在当前目录下创建一个大小为0字节名为myfile的空文件。(注意“文件”和“目录”的区别,文件是文件,目录是文件夹)
如果myfile已存在,则将改变myfile的最后修改时间。(这个功能在整理文件时会用到。)
6. cp命令
(1)cp示例一——复制文件
1)cp 源文件名 目标文件名
cp File1 file2 将当前目录下的File1拷贝到 file2
2)cp 源文件名 目标目录名
cp file2 dira/ 将当前目录下的文件 file2拷贝到 dira 子目录
(2)cp示例二——复制目录
cp -R /etc abc
功能:增加了参数-R,就能将目录/etc下面的所有子目录和文件都复制到目录abc中。
和mv命令一样,通过增加 -i和-b来解决同名覆盖问题。
7. mv命令 (move的缩写)
(1)mv示例一——将 文件或者目录 移动到目录中(应该类似于 剪切+粘贴 的功能)
mv a mydir1
功能:如果mydir1存在且是个目录,则将文件a 目录或者文件 移动到目录mydir1中。
值得讨论的是,这个功能会因此产生一个问题:假如 目标目录中有一个同名文件或者目录,此时使用命令将 某个文件或者目录移过去时,会发生覆盖而没有任何警告!
因此,mv命令有以下两种选项参数来应对这种情况:
i)mv -i (用于事先提醒用户会发生重名覆盖问题,并将选择权交给用户)
mv -i a ~/mydir1
此时,如果 ~/mydir1 目录中,存在一个 名为a 的目录或者文件,会提醒是否覆盖?
2)mv -b (事先将目标目录中重名文件或者目录后面加上~;(其实类似于windos中将同名文件后加 (1)、(2))等)
mv -b a ~/mydir1
这样做的好处是,可以成功移动文件
(2)mv示例二——文件或目录改名 (重命名的本质无非就是将一个文件在同一个目录里移动)
mv 旧文件名 新文件名 =====>修改文件名
如:mv file1 filea将当前目录的文件file1改名为filea
mv 旧目录名 新目录名 =====>修改目录名
如:mv dir1 dira将当前目录下的子目录 dir1 改名为 dira
8. rmdir命令 (缩写:remove Directory)
rmdir mydir1
功能:删除指定的空目录。(只能删除空目录,(怎样删除非空目录? rm -r )。相对来说,功能更强大的 rm命令用的更频繁)
9. rm命令 (缩写:remove )
(1)rm示例一——直接删除删除文件(默认不带参-r 情况下不能删除目录。如果你试图删除一个目录,你需要提供 -r
选项。否则 rm
会抛出一个错误告诉你正试图删除一个目录。)
rm php.ini
功能:删除指定的文件 php.ini。也可以借助通配符来批量删除一些文件。删除时不会提示什么,删除后永远消失!不会在回收站中找到
(2)rm示例二——删除前逐个提示
rm -i php.ini (-i
(LCTT 译注:小写的 i) 或 --interactive=always
)
功能:删除前提示,通过(交互 y/n)给误删除一个机会。
注意,对于只读、不可写文件,即使不加-i命令,也会询问是否删除。
(3)rm示例三——删除目录(即使是空目录也需要动用 -r,必须经过递归)(recursive
)
rm -r ~/abc
功能:参数-r是递归的意思,可以通过递归过程(先递归下去,再由底向上删除,最后删除非空目录本身)删除非空目录本身及其下面的所有子目录。
(4)rm示例四——强制删除(force)
rm -f abc
功能:对于任何交互式操作和不合法操作一律强制删除,便宜行事。
比如,当你删除一个不存在的文件或目录时,rm
命令会抛出一个错误,然而,如果你愿意,你可以使用 -f
选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示。
(5)rm示例五——删除前仅提醒一次
rm -r -I ~/abc 【
(LCTT 译注:大写的 I)或 --interactive=once
选项(LCTT 译注:表示开启交互一次。“类似于windos仅提醒一次,以后不再提醒”)】
当删除的文件超过三个或者提供了选项 -r 需要
递归删除目录中的文件时,如果给出 -I
,则 rm
命令 只会 提示用户是否继续整个删除操作 一次。
(5)rm示例五——执行删除操作,并列出删除操作做了什么
rm -r -v ~/abc
功能:执行删除操作并列出都删除了哪些内容
10. cat命令( Concatenate 文本文件链接打开)
(1)cat示例一——查看文件内容
cat myfile
hello,world
亦可跟多个文件,这样两个文件的内容串联并依次全部打印到标准输出中
cat file1 file2
hello,world happy
功能:显示指定文件myfile的内容。
(2)cat示例二——创建文件g'
cat > myfile2
Welcome to Linux World!
按ctrl+d结束输入
功能:利用输出重定向符“>”来创建简短的文本文件myfile2。
(3)cat -n
通常,我们利用cat打开一个程序。但是只用cat看起来很乱。 我们加 -n选项添加行号
11 长文本查看 more和 less命令
more /etc/httpd/conf/httpd.conf
功能:分页显示文本文件内容,非常适合显示超过一屏的文本文件。每按一下空格键,向后翻一屏;每按一次回车键,向后翻一行。页面最后会显示一个文档百分比
说明:less与more功能很相似,只不过less功能更强大。按 q 键退出
less /etc/httpd/conf/httpd.conf
(相比于more,less提供了以下增强功能)
1)末尾单独留出一行 :命令输入行,便于文本阅读时操作。
2)光标键滚屏,按 q 键退出
3)/字符串 字符串检索、高亮功能
4)支持PageUp键向前翻屏,及PageDown向后翻屏
5)less-M 命令可以使得,末尾行多显示一些文件信息(文件目录、行号、阅读百分比)
12. head命令
(1)head示例一——显示文件头10行内容
head /etc/httpd/conf/httpd.conf
功能:默认显示指定文件的头10行的内容。
注意:可同时展开多个文件
head -n 19 file1 file2
(2)head示例二——显示文件头n行内容
head -n 19 /etc/httpd/conf/httpd.conf
功能:参数-n设置显示指定行数,本例会显示文件的头19行的内容。
13. tail命令
用法和head相同
15.echo命令 (翻译为:回声)
功能:显示一行文字(有点printf的意味)
echo命令的语法如下:echo [选项] [参数]
echo命令的选项:
-n:当指定-n选项时,其后的换行符被抑制;即不会在最后自动换行。
-e:当指定-e选项时,则将解释以下反斜杠转义字符(也就是说,当需要使用以下转义字符时,需要加上 -e 选项;另外,不一定所有用到反斜杠的都要加 -e,比如\'',即显示双引号时):
● \\ - 插入反斜杠(\)字符。
● \a - 警报(BEL)
● \b - 显示退格字符。
● \c - 抑制任何进一步的输出
● \e - 显示转义字符。
● \f - 显示换页符。
● \n - 显示新行。
● \r - 显示回车。
● \t - 显示水平选项卡。
● \v - 显示垂直选项卡。
-E:当指定-E选项时,禁用转义字符的解释,这是默认值。
使用echo命令时需要考虑几点:
● 在将参数传递给echo命令之前,shell将替换所有变量、通配符匹配和特殊字符。
● 用双引号或单引号将传递给echo命令的参数括起来是一种很好的习惯。
实验发现,在没有用到转义时,打印简单字符串和特定变量时,不加引号也可以。但是用到转义字符时,则必须对参数加引号,单双都行。
● 使用单引号时('')时,将保留引号中包含的每个字符的字面值。变量和命令将不会展开。
通过以下示例我们来看看如何使用echo命令:
user@user:~$ echo "hello world"
hello world
linux默认忽视双引号,如果需要打印双引号:
需要将其括在单引号内,或使用反斜杠字符对其进行转义。
echo 'Hello "Linuxize"' 或 echo "Hello \"Linuxize\""
输出:Hello "Linuxize"
如果需要打印单引号:需要将其括在双引号内,或使用反斜杠字符对单引号进行转义。
user@user:~/bin$ var1="hello world"
user@user:~/bin$ echo "$var1"
hello world
user@user:~/bin$ echo '$var1'
$var1
linux中会转义特殊符号,比如以$开头的变量;(韦东山视频中用到了 echo $PATH ,即显示环境变量的值)
而单引号括住,则会默认不识别这些变量,将他们当作无意义字符打印出来
3 打印转义字符串
\NNN 字符的ASCII代码为NNN(八进制)
\\ 反斜线
\a 报警符(BEL)
\b 退格符
\c 禁止尾随的换行符
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 纵向制表符
例如:
echo -e "You know nothing, Jon Snow.\n\t- Ygritte"
输出:
You know nothing, Jon Snow.
- Ygritte
4 返回当前目录中所有.php文件的名称
说明:echo命令可以与模式匹配字符一起使用,例如通配符。
echo The PHP files are: *.php
输出:
The PHP files are: index.php contact.php functions.php
4 各种颜色打印输出
文字色:
echo -e "\e[1;31mThis is red text\e[0m"
输出:This is red text
解释一下这个命令:\e[1 是标准格式,代表颜色输出开始,\e[0m 代表颜色输出结束,31m 定义字体颜色是红色。
echo 命令能够识别的颜色如下:30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色。
背景色:
echo -e “\e[1;42m ouler \e[0m”
Greed Background颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
例如:输出的字符串背静为绿色
echo -e “\e[1;42m ouler \e[0m”
echo 命令可以使用的背景颜色如下:40m=黑色,41m=红色,42m=绿色,43m=黄色,44m=蓝色,45m=洋红,46m=青色,47m=白色。
文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
执行 echo `command` 或者echo $(command)
打印命令行显示结果
特别注意:``这个反单引号不是单引号;
user@user:~/bin$ echo `date`
2019年 07月 30日 星期二 11:15:21 CST
6 进制转换–其他进制转换为十进制
user@user:~/bin$ echo $((2#1010))
10
user@user:~/bin$ echo $((3#12))
5
user@user:~/bin$ echo $((8#11))
9
user@user:~/bin$ echo $((10#11))
11
user@user:~/bin$ echo $((16#11))
17
#!/usr/bin/env bash
echo "input 十进制: $1"
value=$(echo "obase=16;$1" | bc)
echo "ouput 十六进制: $value"
#!/usr/bin/env bash
echo " input 16进制: $1"
let i=16#$1
echo "output 10进制: $i"
16 history命令
history //查看所有的历史命令 history | grep XXX // 历史记录中包含某些指令的记录 history | more // 分页查看记录 history -c // 清空所有的历史记录
- 可以使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条以该字串开头的命令
二、用户、组管理命令
-
Linux采用组来组织和管理用户。
值得一提的是:
- 单用户:只能允许同时登录一个用户计算机(操作系统)操作;
- //单任务:一个任务,允许用户同时进行的操作任务数量;
- 多用户:多个用户,在登录计算机(操作系统),允许同时登录多个用户进行操作;
- 多任务:多个任务,允许用户同时进行多个操作任务;
Windows属于:单用户、多任务。
Linux属于:多用户、多任务。
-
在Linux中每个用户有唯一的用户标识符UID,该UID是一个无符号整数。
-
同时每个用户也必须至少属于一个组,也有组标识符GID。
-
其中UID与GID独立编号。
1. groupadd命令
(1)groupadd示例一——创建组账号
[root@yxy ~]# groupadd mygroup1
功能:创建一个新组mygroup1,其GID号为已存在GID号的下一个顺序编号。
说明:创建一个组的同时会在/etc/group文件中为该组增加相应的一行,用来记录该组的名称、GID号及成员等信息。
(2)groupadd示例二——创建组账号并设置其GID号
# groupadd -g 5000 mygroup2
功能:创建一个新组mygroup2,并指定其GID号为5000,其中-g用来设置用户的主要组,每个用户都有一个主要组。
2. useradd命令
(1)useradd示例一——创建用户账号
[root@yxy ~]# useradd user1
功能:创建一个用户user1,同时在/etc/passwd文件和/etc/shadow文件增加一行,并自动为用户创建相应的主目录:/home/user1。
说明:/etc/passwd文件记录了系统中每个用户的用户名、UID号、GID号(实验证明,当创建用户时什么都不指定时,该新用户会自动为自己新建一个用户组)、主目录、shell等信息。
注意:用户的口令原来也存放在此文件中,现在为了保证安全采用了影子口令文件/etc/shadow来保存每个用户的口令。
(2)useradd示例二——创建用户账号并设置相应属性值
# useradd -u 600 -g mygroup1 -G mygroup2 -d /home/student1 s1 (实践证明,这个具有唯一性。如果新建指定的id号与已有的重复,就会报警ID号并不唯一)
功能:创建用户s1,其中参数
-u指定UID号为600;
-g指定用户的主要组为mygroup1;(不妨理解为qq中,用户作为管理员的群)
-G指定用户的附加组为mygroup2,每个用户可以有多个附加组(不妨可以理解为用户进的一般群);
-d 指定用户的主目录为/home/student1。
3. userdel命令
(1)userdel示例一——删除用户
[root@yxy ~]# userdel user1
功能:删除指定的用户user1。
(2)userdel示例二——删除用户的同时删除其主目录
[root@yxy ~]# userdel -r user2
功能:删除指定的用户user2,同时删除其主目录。
4. groupdel命令
[root@yxy ~]# groupdel mygroup2
功能:删除指定的组
注意:当某个组是某现有用户的主要组时,则不能被删除。(实践证明:会告警,不能移除用户”xxx“的主组)
5. passwd命令
(1)passwd示例一——改变口令
[root@yxy ~]# passwd
Changing password for user user1.
Changing password for user1
(current) Unix password:
New Unix password:
BAD PASSWORD: it is too simplistic/systematic
New Unix password:
BAD PASSWORD: is too similar to the old one
New Unix password:
Retype new Unix password:
passwd: all authentication tokens updated successfully.
功能:普通用户只可以修改自己的口令
(2)passwd示例二——禁止用户登录
[root@yxy ~]# passwd -l user1
Locking password for user user1.
passwd: Success
功能:参数-l 可以给指定的用户user1加锁,即禁止该用户登录。
(3)passwd示例三——恢复用户登录
[root@yxy ~]# passwd –u user1
Unlocking password for user user1.
passwd: Success.
功能:参数-u 可以给指定的用户user1解锁,即恢复该用户登录。
(4)passwd示例四——删除用户口令
[root@yxy ~]# passwd -d user1
Removing password for user user1.
passwd: Success
功能:参数-d 可以删除指定的用户user1口令,即以user1登录时无需口令。
6. usermod命令
# usermod -u 601 -g 501 s1
功能:将(已存在的)用户s1的UID号修改为601、主要组修改为501。(部门人员调动)
7. id命令
[root@yxy ~]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
功能:显示用户的UID、GID及所属的组信息。
8.uname
用来查看当前系统版本信息,用法如下:
uname -a 用来查看当前系统所有有用信息
uname -r 仅显示当前系统内核信息
9.who 和 whoami
同一台服务器上,同一时间往往有很多人在登陆,who命令可以查看当前有哪些人在登陆,以及他们工作在哪个控制台上。
whoami命令会回答”我是哪个用户“这个问题。但是ubuntu上应该用不着,有完整的提示符信息。
10.su命令
切换用户身份
例如:su user1
三、 文件属性操作命令
1. chown命令
(1)chown示例一——改变文件的属主
chown 新用户名 hello.txt
功能:将指定文件hello.txt的 属主 改为新用户名。(一般情况下,新建一个目录或者文件时,我们是以root身份,所以此时文件或者目录的属主是属于 root用户,可以通过chown命令修改文件或者命令属主)
- chown user1 :group1 hello.txt chown 命令可以同时改变文件的属主和属组,通过使用上述 “ : ”格式。
- chown user1 hello.txt chown命令也可以只改变文件的属主
- chown :group1 hello.txt chown命令也可以只改变文件的属组 (注意 冒号 : 不能省)
(2)chown示例二——递归改变 当前目录及其之下各级子目录和文件 的属主 (当涉及的不是一个单一的文件而是一个目录时,要着重注意 -R 的使用,否则忘记使用往往只改变了表面一级目录的属主,当用 ls -l时,下面各级属主均未变化)
# chown -R user1 mydir
本例中会将mydir目录中所有子目录和文件的属主设定为user1。
功能:参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属主(所有者)改为指定的用户;
2. chgrp命令(charp命令实际上只是实现了 chown命令 "改变属组" 部分的功能,至于 仅仅使用chown还是 chown和charp兼用属于个人习惯问题)
(1)chgrp示例一——改变文件的属组
# chgrp mygroup1 hello.txt
功能:将指定文件hello.txt的属组改为mygroup1。
(2)chgrp示例二——递归改变文件的属组
# chgrp -R mygroup1 mydir
功能:参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属组改为指定的组;本例中会将mydir目录中所有子目录和文件的属组设定为mygroup1。
3. chmod命令( Change mode )
(1)chmod示例一——字母表达式方式
chmod用于改变一个文件的权限。具体使用 “用户 +/-/= 权限” 的格式。
字母u针对属主、g针对属组、o针对其他用户、a针对所有用户;=表示赋予(设置)指定权限,要注意它会覆盖原权限,+表示在原有权限的基础上增加指定权限,-表示在原有权限的基础上去掉指定权限;r、w、x三种权限,既可以单独使用也可以组合使用
# chmod u+x host.conf
功能:为文件host.conf的属主增加执行权限。
# chmod g-w,o=x,ug=rw host.conf
功能:将文件host.conf的属组去掉写权限,同时将其他用户设置为只有执行权限,而文件属主的权限不变。
# chmod o=r host.conf
功能:将其他人权限设置和属主权限一样
(2)chmod示例二——八进制数字方式
chmod的字母表达式方式,具体但啰嗦,不如用八进制数字方式,表示简洁、书写方便。关键是一个数制转换的问题。
原理过程其实也比较简单:
将一个文件的完整权限表示为一个9位的二进制数,分三组,分别对应 属主、属组、其他用户的 读、写、执行权限。其中如果某权限位是“-”则用0来表示,否则用1来表示;接着,再将每组化成一个八进制数。这样,一个文件的完整权限就可以用 一个三位的八进制数表示。
例如,某文件有如下权限rwxrw-r--,则转换为二进制数为111110100,再化为八进制数则为764;反之,当看到八进制数764时也应该很快转化为相应权限。
# chmod 764 host.conf
功能:将文件host.conf的权限设置为:
属主拥有全部权限;
属组拥有读写权限;
其他用户拥有只读权限。
二进制、八进制、用户权限 对应的关系表如下:
现在就剩一个问题了,如何把 一个想表达的文件的完整权限 和 一个三位八进制数 无缝切换?事实上,只需要记住下面总结的一条规律:1代表x,2代表w,4代表r,然后做简单的加法就可以了
例如:rwx--x--x 表示 751;751表示为rwx--x--x (这样,一个简单的三位八进制数就代替了上面的字母表达式一堆的书写)
4.file 命令
格式: file 文件名
功能:查看文件类型
四、文件i节点及其相关命令
(1)ln命令示例一——建立硬连接
硬链接表现为将一个现有文件与一个名字硬链接后,产生两个内容相同相互关联(改动同步)的文件。类似于“复制+联动”
[root@yxy ~]# ln myfile myfile.hlink
功能:为文件myfile创建名为myfile.hlink的硬连接。
[root@yxy ~]# ls -il
180590 -rw-rw-r-- 2 user1 user1 12 Aug 17 12:14 myfile
180590 -rw-rw-r-- 2 user1 user1 12 Aug 17 12:14 myfile.hlink
说明:通过ls –il 命令可以看出myfile与myfile.hlink的i节点号(最左面的数)是一样的,即硬连接与原文件共用同一个i节点,文件属性,权限也共用一样。请注意两个文件的连接数(位于长格式列表中权限位与属主之间的数)都增加了1变成2了。
(2)ln(Link files 缩写)命令示例二——建立符号连接(也称为软连接,性质类似于windos中的“快捷方式”)
ln -s myfile/mydir myfile.slink
功能:为 文件或者目录 myfile/mydir 创建名为myfile.slink的符号连接。
本质上,是为文件或目录取了一个别名(这个别名类比于windos中的快捷方式和快速访问),或者再新建一个指针指向文件。这个文件的类型为 l,文件名称为“myfile.slink -> myfile”形式的。类似于快捷方式,访问别名相当于访问原文件名,删除之并不会影响到其指向的文件本身,但如果文件本身删除,软连接文件的存在也就没有了意义。
ls -l myfile.slink
180606 lrwxrwxrwx 1 user1 user1 6 Aug 21 06:21 myfile.slink -> myfile
区别说明:
硬链接若一个inode号对应多个文件名时,则称之为硬链接。硬链接具有以下几个特性:
- 文件拥有相同的inode号和数据块;
- 只能对已存在的文件创建硬链接;
- 不能跨越文件系统创建硬链接;
- 不能堆目录创建硬链接;
- 删除一个硬链接文件不影响其他相同inode号的文件。
软链接在Linux中,若文件的数据块中存放的内容是另一文件的路径名,则称之为软连接。软链接类似于Windows系统下的快捷方式。
软连接有自己的inode号和用户数据块。
为此,软链接避免了硬链接的诸多限制,软链接主要具有以下特点:
- 软链接有自己的文件属性及权限等;
- 可以对不存在的文件或目录创建软链接;
- 软链接可以跨越文件系统创建;
- 删除软链接时不会影响被指向的文件;
- 若原文件被删除时,相关软链接文件被称为死链接(当该路路劲的文件重新创建时,死链接可以恢复正常)。
五、 查找命令
1. which命令
which cp
/bin/cp
which updatedb
/usr/bin/updatedb
功能:显示命令或者应用程序的绝对路径。
注意:该命令只能在命令搜索路径指定的目录中去查找命令或程序。
2. whereis命令
whereis ln
ln: /bin/ln /usr/share/man/man1/ln.1.gz /usr/share/man/man1p/ln.1p.gz
功能:主要用来查询命令或者应用程序,提供相应的二进制可执行文件、原代码文件、使用手册等三个文件的路径
3. find命令
(1)find示例一——在指定目录中按文件名查找文件或者目录
find / -name "dhcpd*"
功能:参数-name指明按文件名进行查找,即从/目录开始查找(如果没有指定查找目录,则为当前目录)以dhcpd开头的所有文件。
亦可以借助通配符来指定想要的文件名,比如:
find ~/ -name *.c ;找出用户主目录下所有的c文件(打印出路径)
(2)find示例二——按文件大小查找
[root@yxy ~]# find /etc -size 8
功能:从/etc下开始查找大小为8块的文件,此处默认512字节为1块。若认为块大小为1k,则应写为8k。
其它可以使用的单位有c(字节)、w(双字节)、M(兆字节)和G(吉字节)。
(3)find示例三——按文件类型查找
find /var -type d -print
功能:从/var目录下开始查找类型为目录的文件,其中参数-print是显示到屏幕上的意思,经常省略。
注意:(文件类型可供使用的参数:b块设备文件 c字符设备文件 d目录文件 f普通文件 p命名管道 l符号链接 )
(4)find示例四——按文件的修改时间查找
find . -cmin -5 (. 指的是当前目录,不加这个点效果一样)
功能:从当前目录下查找5分钟之内 修改过的文件。
注意:1)如果把“-5”改为 “+5”,则表示查找5分钟以前修改过的文件。不带“+”或“-”,则认为整5分钟。
2)如果把时间单位改为天,则使用参数“-ctime”;即min表示分钟,time表示天
3) -mtime 使用同 -ctime,即字母c可以换成m
ps:-atime n 表示最后一次的使用是在 n 天前的命令;n为正,则最后一次使用是在n天以前;n为负,则最后一次使用是在 n天以内。
(5)find示例五——按文件的权限查找
[root@yxy ~]#find mytmp -perm 755
功能:查找mytmp目录下的权限恰为755的文件。
[root@yxy ~]#find mytmp -perm +755
功能:查找mytmp目录下的满足755中任何一种权限的文件,即符合任何一个指定的权限位即可。
[root@yxy ~]#find mytmp -perm -755
功能:查找mytmp目录下的权限至少满足755的文件,即指定的所有权限位必须符合才算满足查询条件。
(6)注意:在输出结果路径中,可能会出现很多路径后面跟着”权限不够“,这是因为普通用户没有在这些目录进行检索的权限,find在扫描的时候就跳过了这些目录,并注明”权限不够“
(7)多条件组合进行 find
如下: find /usr/bin/ -type f -atime +100
4.locate命令
用法如: locate *.doc
说明:locate与find的功能类似,但是大批量搜索时,find比较慢,locate几乎一瞬间。原因是二者搜索机制不同。
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库(文件名数据库)中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,由locate命令文件来建立这整个数据库。所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:sudo updatedb
5.man、info、--help命令
1)man使用最多!!!
例如:可以通过 man ls 来查看ls命令的使用详解。
举例:
man man 查看man手册的说明
man ls 当没有指定使用那一页,默认使用第1页
man 1 ls
man 1 gcc gcc是一个应用程序,在linux中一般使用gcc编译器来编译 c/c++ 语言的程序
open / write / read / close 等等都是系统调用
man 2 open 查看系统调用open的man手册说明
注:man手册的9册内容的侧重点,最好记一下。使用man命令最好带上册数。
2)info(info手册内容不如man手册工整)
如: info ls
3)--help
如:ls --help
6.whatis和apropos
whatis 简单给出一个命令是做什么的,不繁杂。(只给出man给出信息的第一行)
apropos 零碎信息反查命令
六、 文件内容操作命令
1. grep命令(Grep的缩写(Global regular expression print,全局正则表达式输出)
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.
grep查找格式:grep [选项] [查找内容] [文件名]
(1)grep示例一——在指定的文件中查找包含特定的字符串的行
grep bind host.conf
grep ’hello world‘ host.conf
grep network /etc/*.conf
功能:可以直接指定多个文件一起搜索或者结合通配符在多个文件中查找包含特定的字符串的行。本例会在/etc下扩展名为.conf文件中查找包含字符串“network”的行。
注意:如果要在文件里查找词组,比如 hello world,比较规范的是对 hello world 加上单引号,以包含空格之类。
(2)grep示例二——查找不包含指定字符串的行
# grep -v "network" /etc/nsswitch.conf
功能:查找/etc/nsswitch.conf文件中不包含字符串“network”的行。
grep选项
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
选项中经常使用的有:
grep -n :显示目标内容在目标文件夹中的行号
grep -r:递归查找。当目标文件夹是一个目录时,经常使用
grep -w:全字匹配。比如要找一个文件中的ab,则只会找ab,不会将abcaba中的ab作为答案。
2. wc命令
(1)wc示例一——统计指定文件的行数、单词数和字符数
[user1@server2 ~]# wc /etc/nsswitch.conf
63 272 1718 /etc/nsswitch.conf
功能:统计出文件/etc/nsswitch.conf共有63行、272个单词、1718个字符。
(2)wc示例二——参数使用
# wc -l /etc/nsswitch.conf
63 /etc/nsswitch.conf
功能:参数-l的功能可统计出指定文件的行数。另外,利用参数-w统计单词,利用-c统计字符数。
3. sort命令
(1)sort示例一——按正序输出
[root@yxy ~]# sort mytest
功能:将指定文件以行为单位按正序输出。
(2)sort示例二——按逆序输出
[root@yxy ~]# sort -r mytest
功能:将指定文件以行为单位按逆序输出。
4. diff 命令
[root@yxy ~]# diff test mytest
功能:比较文件test与mytest是否相同,将不同之处输出到屏幕上。
5. cut 命令
cut命令是一个文本提取工具,它以行为单位,将每行看作一条记录,而字段之间的分隔符可以灵活地定义。
(1)cut示例一——按特定的分隔符提取指定的字段
[user1@server2 ~]# cut -d: -f1 /etc/passwd
功能:参数-d用来定义字段之间的分隔符,参数-f指定提取第几个字段;本例为提取/etc/passwd文件中以“:”为分隔符的第1个字段。
七、 压缩与打包命令
tar命令
tar常用选项
-c(create)表示创建压缩生成的文件包,代表压缩
-x:表示提取,从文件包中提取文件,代表解压缩
-t :list:列出压缩文件的内容,代表查看
-z 使用gzip 方式进行处理,它与 “c ”结合就表示压缩, 与 “x ”结合就表示解压缩。
-j 使用bzip2 方式进行处理,它与 “c ”结合就表示压缩, 与 “x ”结合就表示解压缩。
-v(verbose)详细列出tar 处理的信息,处理过程
-f(file)表示指定压缩文件,后面接着文件名。在选项f
之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加z
选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加j
选项,则以.tar.bz2来作为tar包名。
-C <指定目录> 解压到指定目录,解压缩的时候用
1. tar 打包、gzip压缩
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
1)压缩
tar -czvf 命名的压缩文件名 目录名
如:tar czvf dira.tar.gz dira
注意:
tar -czvf 与 tar czvf 是一样的效果,所以说,后面统一取消-。
2)查看
tar tvf 压缩文件名
如:tar tvf dira.tar.gz
3)解压
tar xzvf 压缩文件名
tar xzvf 压缩文件名 -C 指定目录
如:tar xzvf dira.tar.gz (不指定 ) 解压到当前目录
如:tar xzvf dira.tar.gz -C /home /book 解压到 /home/book
2. tar 打包、bzip2 压缩(用法上,只将 tar 打包、gzip压缩中的 z改成j即可)
1)压缩
tar -cjvf 压缩文件名 目录名
如:tar cjvf dira.tar.bz2 dira
2)查看
tar tvf 压缩文件名
如:tar tvf dira.tar.bz2
3)解压
tar xjvf 压缩文件名
tar xjvf 压缩文件名 -C 指定目录
如:tar xjvf dira.tar.bz2 解压到当前目录
如:tar xjvf dira.tar.bz2 -C /home /book 解压到 /home/book
同样,大文件打包压缩,一般使用 tar 打包、bzip2 压缩
八、网卡配置命令
(1)ifconfig命令示例一——显示接口(网卡)配置参数
[root@server2 ~]# ifconfig
功能:显示网卡参数的配置情况,包括IP地址、子网掩码、广播地址等。
(2)ifconfig命令示例二——设置接口(网卡)配置参数
# ifconfig eth0 10.22.1.103 netmask 255.255.255.0
功能:设置网卡eth0的IP地址为10.22.1.103、掩码为255.255.255.0。
说明:eth0是系统中第1块以太网卡的名称,eth1是系统中第2块以太网卡的名称,以此类推。lo是环回测试网卡的名称。
(3)ifconfig命令示例三——禁用某块网卡
[root@server2 ~]# ifconfig eth0 down
功能:禁用网卡eth0。
说明:此时再用不带参数的ifconfig命令是不能显示eth0的信息的,需要加上参数“-a”才可显示被禁用的网卡信息。
(4)ifconfig命令示例四——激活某块网卡
[root@server2 ~]# ifconfig eth0 up
功能:激活网卡eth0。
九、rpm命令
(1)rpm命令示例一——查询系统中安装的软件包
[root@yxy ~]# rpm -qa
功能:查询系统中安装的软件包列表,其中参数-q的功能是“查询”,参数-a的功能是“所有的”。
(2)rpm命令示例二——查询软件包中文件清单
[root@yxy ~]#rpm -ql php
功能:查询已安装的软件包php中的文件列表,其中参数-l的功能是“列出指定软件包中的文件”。
(3)rpm命令示例三——卸载指定的软件包
[root@yxy ~]# rpm -e php
功能:卸载已安装的软件包php,参数-e的功能是“卸载”。
说明:请注意执行上述命令时,采用的身份是不同的,普通用户只能执行查询操作。
(4)rpm命令示例四——安装软件包
# rpm -ivh php-4.3.9-3.1-i386.rpm
功能:安装软件包php,
参数-i的功能是“安装”,
参数-v的功能是“显示处理过程”,
参数-h的功能是显示“#”来表示进度。
(5)rpm命令示例五——强制安装软件包
# rpm -ivh --force php-4.3.9-3.1-i386.rpm
功能:强制安装软件包php,参数--force表示强制的意思。
说明:如果要安装的软件的版本比较低或该软件包在系统中已存在,系统会给出提示并拒绝安装,此时可以加上参数—force来进行强制安装。
(6)rpm命令示例五——忽略依赖关系安装软件包
# rpm -ivh --nodeps php-4.3.9-3.1-i386.rpm
功能:安装软件包php时忽略与其它软件包的依赖关系,参数--nodeps表示忽略依赖关系。
说明:在安装或卸载软件时经常会遇到提示“该软件包与某某软件包存在依赖关系”,只有加上参数--nodeps忽略掉依赖关系才能进行安装或卸载。
(7)卸载
首先通过 rpm -q <关键字> 可以查询到rpm包的名字
然后 调用 rpm -e <包的名字> 删除特定rpm包
如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包
十、 其他安装方式
./configure
make
make install
make clean与make distclean
十一、 查看进程命令
1. ps命令
(1)ps命令示例一——不带参数
[user1@server2 ~]# ps
功能:查询在当前控制台上运行的进程。
(2)ps命令示例二——查看所有进程
[user1@server2 ~]# ps -aux
功能:查询系统中所有运行的进程,包括后台进程,其中参数a是所有进程,参数x包括不占用控制台的进程,参数u显示用户。
(3)ps命令示例三——查看所有进程
[user1@server2 ~]# ps -ef
功能:查询系统中所有运行的进程,包括后台进程,而且可以显示出每个进程的父进程号。
2. pstree命令
(1)pstree命令示例一——树状格式显示进程列表
[user1@server2 ~]# pstree
功能:以树状格式显示系统的进程列表。
(2)pstree命令示例二——带进程号的树状格式显示进程列表
[user1@server2 ~]# pstree -p
功能:以树状格式显示系统的进程列表,并标识出每个进程的进程号。
3. top命令
[user1@server2 ~]# top
功能:动态地显示系统中的进程。
4. kill命令
(1)kill命令示例一——杀掉指定进程
[user1@server2 ~]# kill 3029
功能:kill命令可以杀掉一个进程,当然普通用户只能杀掉自己的进程。
说明:上述命令中3029是进程号;一般在执行kill命令之前,先用ps或pstree来查询一下将要被杀掉的进程的进程号。
(2)kill命令示例二——强制杀掉指定进程
[user1@server2 ~]# kill -9 3029
功能:强制终止3029号进程的运行,其中参数-9代表强制的意思。
说明:实际上kill命令是向该进程发送信号,该进程接到信号后决定是否停止运行,有些守护进程必须要收到参数9才终止运行。
十二、环境配置命令
1.export命令
一个常见的例子是使用export来设置用户环境。用户可以简单地使用export指定变量并将它们添加到他们的.profile文件中。因此,每次用户登录时,环境都将按照这种方式配置。
1、显示export所有的变量
当不带任何参数使用时,export命令将显示环境中所有export变量的列表。您应该能够查看变量的名称及其对应的值。
$ export
通过使用Linux grep命令和export命令,可以很容易地找到关于特定变量的信息。下面的命令使用一个简单的例子来说明这一点。
linuxmi@linuxmi:~$ export LINUXMI="Welcome to linuxmi.com"
linuxmi@linuxmi:~$ export | grep -i linuxmi (grep -i 忽略文本的大小写)
2、显示当前Shell的export变量
export的-p选项将打印出当前Linux shell中所有导出变量的列表。
linuxmi@linuxmi:~$ export -p
您可以使用这个命令来排除正在运行的shell会话的各种配置问题。
3、Linux下的export变量
使用export语句设置变量的值
linuxmi@linuxmi:~$ export EDITOR=/usr/bin/gedit
这将把gedit的路径设置为编辑器变量的值。您可以使用grep来确认这一点。
linuxmi@linuxmi:~$ export | grep -i EDITOR
4、Linux下的导出函数
开发人员可以使用-f选项导出函数。下面的示例使用简单的测试函数演示了这一点。您可以使用此方法编写自定义shell脚本。
linuxmi@linuxmi:~$ test { echo "Test Function"; }
linuxmi@linuxmi:~$ export -f test
linuxmi@linuxmi:~$ bash
Test Function
dircolors: /home/linuxmi/.dircolors: 没有那个文件或目录
linuxmi@linuxmi:~$ test
Test Function
这应该在终端窗口中显示字符串" Test Function "。bash调用用于为bash派生一个子进程。否则,test函数将不会打印文本。
5、配置环境属性
在Linux操作系统下,可以使用export命令配置各种环境参数。例如,如果您将下面这一行添加到.bashrc文件中,它将在每次系统重新启动时将其设置为Snap的路径。
linuxmi@linuxmi:~$ echo export PATH="/snap/bin/lxd:$PATH" >> .bashrc
如果您不熟悉配置文件内部的工作方式,也不必担心。只需在文件末尾添加自定义导出即可。这样,如果你愿意,你总是可以找到并删除它们。
总结
Linux export命令是配置环境参数的一个有用工具。此外,这个命令非常容易掌握,因为这个命令只有几种不同的选项。我们概述了一些示例,以帮助您更好地理解这个工具。希望从现在开始,您可以开始使用export来定制环境。如果道你对这个简单的指南有什么看法。请在评论部分给我们留言,谢谢。
2.patch命令
patch,是打补丁的命令,有很多用法,见帮助#man patch
patch -p0 (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0",表示不去掉,为全路径)
patch -p1 (“p”后面的数字"1",表示去掉前第一个路径)
举例:$ patch -p1 < ../u-boot-1.1.6_jz2440.patch ,完善uboot;
参数:-p1 因为当前已经在补丁文件中路径的第一个部分目录, 所以“-p1”去掉这个部分;“<”应该是配合打补丁的符号;后面的补丁文件的表示用相对路径的方式biaosh。
3.-v/--version 命令
大多数命令加上-V选项或者--version选项,就会返回软件的版本信息。
4.查看Linux内核及系统版本命令
- 查看Linux内核版本命令:
1、uname -a
- 查看Linux系统版本命令:
1)查看当前操作系统版本信息 cat /proc/version (也有内核版本的信息)
2)Linux查看当前操作系统发行版信息: cat /etc/issue