ubuntu_概念

概念

su(switch user)
wget(Web Get)
cd(change directory)
dpkg(Debian Packager)为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。
chmod(Change Mode)用于改变文件或目录的权限
ps(Process Status)进程状态
grep(Global Regular Expression Print)全局正则表达式搜索
main archive file主归档文件
wc(word count):命令,统计文件中的行数,单词书和字符数
IFS(Internal Field Separator):是一个环境变量

特别目录

/etc/resolv.conf:DNS配置文件
/etc/apt/sources.list:镜像源配置文件

/usr/local/bin:用户安装文件的地方

特别环境变量

$PATH

$PATH:用来指定系统在哪些目录下查找可执行文件。在Linux系统中,当用户输入一个命令时,系统会根据PATH 变量中定义的目录顺序查找可执行文件,如果找到与输入的命令对应的可执行文件,则执行该文件。

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

/usr/local/sbin
/usr/local/bin
/usr/sbin:
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin

IFS

IFS(Internal Field Separator):是一个环境变量,定义了用作字段分隔符的字符集合,默认情况下是空格、制表符和换行符。
只会在当前shell生效,如果需要永久更改IFS,则需要将其添加到shell配置文件,如~/.bashrc中
用户可以更改字段的分隔符:

IFS=":"

例程:

$ cat test25
#!/bin/bash
# finding files in the PATH

IFS=:
for folder in $PATH
do
   echo "$folder:"
   for file in $folder/*
   do
      if [ -x $file ]
      then
         echo "   $file"
      fi
   done
done
$
  • apt(Advanced Package Tool)是 Linux 操作系统上用于管理软件包的高级工具。apt 是 Debian 及其派生发行版如 Ubuntu 中常用的软件包管理器。apt 可以用于搜索、安装、更新和卸载软件包,是 Linux 用户进行软件管理的重要工具。
    APT系统需要一个软件信息数据库和至少一个存放着大量deb包的软件仓库,我们称之为 源 。 源 可以是网络服务器,安装CD或者本地软件仓库。您需要修改 /etc/apt/sources.list 文件,使APT系统能够连接到 源。
    从以下页面中获得网络安装源的列表,并且根据您的网络环境,选择速度较快的源。
    http://wiki.ubuntu.org.cn/%E5%BF%AB%E9%80%9F%E…%97/DapperDrake
    APT系统主要包括 apt-get 和 apt-cache 等命令。通常是复合命令,包含若干个子命令。
    apt-get install xxx 安装xxx
    -d 仅下载 -f 强制安装
    apt-get remove xxx 卸载xxx
    apt-get update 更新软件信息数据库
    apt-get upgrade 进行系统升级
    apt-cache search 搜索软件包
    说明:建议您经常使用 sudo apt-get update 命令来更新您的软件信息数据库
    多数命令中,使用 - 引导多个字符,将会被视为多个参数,例如:
    apt-get -help
    系统会解读为以下命令
    apt-get -h -e -l -p

sudo(Superuser Do)是 Linux 和类 Unix 操作系统上的命令,用于以超级用户(或 root 用户)的身份执行指定的命令。sudo 可以让普通用户获得临时的管理员权限,用于执行需要特权访问的操作,如修改系统文件、安装软件等。使用 sudo 可以有效地提高系统安全性,避免出现误操作导致系统问题。

ls -l
drwxr-xr-x 是文件或目录的权限标识,用来表示文件或目录的权限。
第一个字符 d 表示这是一个目录。如果是 - 则表示是一个文件。
接下来的三个字符 rwx 表示所有者(Owner)的权限,分别表示读取(Read)、写入(Write)、执行(eXecute)的权限。
接着的三个字符 r-x 表示所属组(Group)的权限。
最后的三个字符 r-x 表示其他用户(Others)的权限。
在这个例子中,drwxr-xr-x 表示这是一个目录,对于所有者有读取、写入和执行的权限,对于所属组和其他用户有读取和执行的权限。

sudo -i切换到root用户

export PATH= P A T H : p a t h P A T H 是一个字符串,而 PATH:path PATH是一个字符串,而 PATH:pathPATH是一个字符串,而PATH则表明PATH是一个变量,比如echo PATH 输出PATH 而 echo $PATH则输出环境变量 PATH

/bin:bin是binary(二进制)的缩写。这个目录是对UNIX系统习惯的沿袭,存放着使用者最经常使用的命令。例如:cp,ls,cat
/boot:这里存放的是启动LINUX时使用的一些核心文件。
/dev:dev是device(设备)的缩写。这个目录下是所有LINUX的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在LINUX中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录
/home:用户的主目录,比如说有个用户叫liubin,那他的主目录就是/home/liubin也可以用liubin表示,说到这里,打个岔,你现应该明白在我们访问一些个人网页(如http://www.liubin.net/liubin)的时候,~liubin就是表示访问www.liubin.net站点中的用户liubin的用户主目录。
如果这个网站的操作系统是LINUX,那就是表示/home/liubin。
/lib:这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。
/mnt:这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里啊!?
/root:系统管理员,也叫作超级权限者的用户主目录。当然系统的拥有者,总要有些特权啊!
/sbin:s就是Super User的意思,也就是说这里存放的是一些系统管理员使用的系统管理程序。
/tmp:这个目录不用说,一定是用来存放一些临时文件的地方了。
/usr:这是个最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下。具体来说:
/usr/X11R6 存放X-Windows的目录;
/usr/bin 存放着许多应用程序
/usr/sbin 给超级用户使用的一些管理程序就放在这;
/usr/doc 这就是LINUX文档的大本营;
/usr/include LINUX下开发和编译应用程序需要的头文件,在这找;
/usr/lib 存放一些常用的动态链接共享库和静态档案库;
/usr/local 这是提供给一般用户的/usr目录,在这安装软件最适合;
/usr/man man是什么,对了是帮助。这里就是帮助文档目录啊!
/usr/src LINUX开放的源代码,就存在这个目录,爱好者们别放过哦!
/var:这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log目录中。
这里列出了最常见的目录,根据LINUX发行套件的不同,目录结构也是有一定差别的。还有你自己建立的目录,我当然不知是存什么的。希望上面的文字能使你在大脑里留下了LINUX的全景图,以便大家深入掌握LINUX的其它方方面面。

解压
在这里插入图片描述
在这里插入图片描述在这里插入图片描述history查看历史命令
在这里插入图片描述printenv可以查看全局环境变量

创建用户自定义变量,并查看
在这里插入图片描述bash shell的惯例是所有的环境变量均使用大写字母命名。如果是你自己创建或在shell脚本中使用的局部变量,则使用小写字母命名。变量名区分大小写。坚持使用小写字母命名用户自定义的局部变量,能够让你避免不小心与系统环境变量同名可能带来的灾难。

操作技巧:
https://wiki.ubuntu.org.cn/UbuntuSkills#.E6.9F.A5.E7.9C.8B.E8.BD.AF.E4.BB.B6xxx.E5.AE.89.E8.A3.85.E5.86.85.E5.AE.B9
https://www.52pojie.cn/thread-1405917-1-1.html

显示消息ehco

用echo输出到控制台
echo This is a test
echo P A T H :观看环境变量,变量前加上 PATH:观看环境变量,变量前加上 PATH:观看环境变量,变量前加上,说明在引用变量

执行脚本文件

  • 将放置shell脚本文件的目录添加到PATH环境变量中→export $PATH=“”
  • 在命令行中使用绝对路径或相对路径来引用shell脚本文件
    △set:可以观看所有环境变量
    △需要执行脚本文件的时候,要加上路径,即便在当前文件夹下,也要加上./来执行
    △等号左右不能留空格,不然引用变量时候会报command not found
    △读变量的时候要加$,写的时候甭

脚本文件

①首行#!/bin/bash
②最基本的重定向会将命令的输出发送至文件。bash shell使用大于号(>)来实现该操作
date > test6:会将当前日期输入到test6中
重丁香运算符会创建文件test6,并将date命令的输出重定向至该文件。如果输出文件已经存在,则重定向会用新数据覆盖已有文件。
用(>>)可以将覆盖改为追加
③输入重定向会将文件的内容重定向至命令,而不是将命令输出重定向至文件。
在这里插入图片描述
④命令替换
testing=date
testing=$(date)

result=$(ls -l)
echo $result

$‘\n’:换行输出

echo "Hello"$'\n'"World"
Hello
World

命令

  • 外部命令(文件系统命令)存在于bash shell之外的程序。并不属于shell程序的一部分。
    通常位于/bin、/usr/bin、/sbin、/usr/sbin目录中,会衍生出一个子进程。
  • 内建命令和shell编译成一体,无需外部程序文件来执行
$ type cd
cd is a shell builtin
$
$ type exit
exit is a shell builtin
$

重定向输入和输出

输出

command > outputfile:会将命令的输出发送至文件,直接覆盖
command >> outputfile:追加数据到文件

输入

command < inputfile:将文件内容重定向至命令
在这里插入图片描述

管道piping

无须将命令输出重定向至文件,可以你直接传给另一个命令

command1 | command

  • rpm -qa | sort 等同 rpm - qa > file sort < file
  • rpm -qa | sort | more

数学运算

expr express

  • expr 5 * 2
    $[ express ]
  • var1=$[1 + 5]

判断语句

IF结构

①if-then-fi
②if-then-elif-then-fi
③if-then-else-then-fi

CASE结构

case $value in
a|b)
express;;
esac

条件

if (command):不需要空格,里面只接受命令行,如果返回状态码为0,则为真
if test CONDITION:等同 if [ CONDITION ]
if [ CONDITION ]:中括号两端要有空格

  • if [ $testuser != chrisitine ]:字符比较
  • if [ $value -gt 5 ]:数值比较
  • if [ -d $filename ]:文件比较
    if (( expression )):双括号,expression可以是任意的数学赋值或表达式
    if [[ expression ]]:双方括号,字符串正则匹配,if [[ $name == *.gz ]]等号两端要有空格
    复合条件
    if [ condition1 ] && [ condition2 ] 、[ condition1 ] and [ condition2 ]
    if [ condition1 ] || [condition2]、[ condition1 ] or [ condition2 ]


赋值的=两端不能留空
比较的==两端要留空
“>”:输出重定向,会输出到文件并且打印到命令行
“&>”:输出重定向,不会打印到命令行

循环语句

for命令

结构1:

for var in list
do
	commands
done

结构2:

for ((i=1; i <= 10; i++))
do
	commands
done

普通例程:

  • 用空格来隔开变量,成为列表
  • 变量可以用双引号
$ cat test1
#!/bin/bash
# basic for command

for test in Alabama Alaska Arizona Arkansas California Colorado
do
   echo The next state is $test
done
$ ./test1
The next state is Alabama
The next state is Alaska
The next state is Arizona
The next state is Arkansas
The next state is California
The next state is Colorado
$

文件例程:

$ cat test6
#!/bin/bash
# iterate through all the files in a directory

for file in /home/rich/test/*
do

   if [ -d "$file" ]
   then
      echo "$file is a directory"
   elif [ -f "$file" ]
   then
      echo "$file is a file"
   fi
done
$ ./test6
/home/rich/test/dir1 is a directory
/home/rich/test/myprog.c is a file
/home/rich/test/myprog is a file
/home/rich/test/myscript is a file
/home/rich/test/newdir is a directory
/home/rich/test/newfile is a file
/home/rich/test/newfile2 is a file
/home/rich/test/testdir is a directory
/home/rich/test/testing is a file
/home/rich/test/testprog is a file
/home/rich/test/testprog.c is a file
$

while命令

while test command
do
 other commands
done

until命令

until test commands
do
   other commands
done

比较方式

字符串用转义和=:
数字比较:
在这里插入图片描述文件比较

比较描述
-d检查file是否存在且为目录
-e检查file(文件或者目录都可以)是否存在
-f检查file是否存在且为文件
-s检查file是否存在且非空
-w检查file是否存在且可写
-x检查file是否存在且可执行
-O检查file是否存在且属当前用户所有
-G检查file是否存在且默认组与当前用户相同
file1 -nt file2检查file1是否比file2新
file1 -ot file2检查file1是否比file1旧

输入

参数

常规参数:

$1-$9:可按照1-9的顺序获取输入参数
${10}-:超过9的要加上大括号

特殊参数:

$0:脚本名称
$#:参数个数
${!#}:最后一个参数
$*:将所有参数视为一个单词,视为一个整体
@ :将所有参数视为一个列表,可以用 f o r 命令完成遍历△ @:将所有参数视为一个列表,可以用for命令完成遍历 △ @:将所有参数视为一个列表,可以用for命令完成遍历(command):命令替换
$[express]:计算

用法

if [ -n $1 ]:先判断参数是否存在
shift:可以使每个位置的变量值向左移动一个位置

$ cat shiftparams.sh
#!/bin/bash
# Shifting through the parameters
#
echo
echo "Using the shift method:"
count=1
while [ -n "$1" ]
do
     echo "Parameter #$count = $1"
     count=$[ $count + 1 ]
     shift
done
echo
exit
$
$ ./shiftparams.sh alpha bravo charlie delta

Using the shift method:
Parameter #1 = alpha
Parameter #2 = bravo
Parameter #3 = charlie
Parameter #4 = delta

$

选项

简单选项

$ cat extractoptions.sh
#!/bin/bash
# Extract command-line options
#
echo
while [ -n "$1" ]
do
     case "$1" in
          -a) echo "Found the -a option" ;;
          -b) echo "Found the -b option" ;;
          -c) echo "Found the -c option" ;;
          *) echo "$1 is not an option" ;;
     esac
     shift
done
echo
exit
$
$ ./extractoptions.sh -a -b -c -d

Found the -a option
Found the -b option
Found the -c option
-d is not an option

$

使用getopt命令

getopt optstring parameters

#!/bin/bash
set -- $(getopt -q ab:cd "$@")
echo 
while [ -n "$1"]
do
	case "$1" in
	-a) echo "found the a option";;
	-b) param=$2
		 echo "found the b option with para value $param"
	-c) echo "found the -c option"
	--) shift
		break;;
	*) echo "$1 is not an option";;
	esac
	shift
done
echo
count=1
for param in $@
do
	"echo para #$count:$param"
	count=$[ count + 1 ]
done
exit

理解输入和输出

set

set命令是Linux操作系统中的内置shell命令,用于设置和取消shell变量和选项。
set a b c
后面用$1就能读到a
set –
取消所有变量,abc就没了

vim使用

^O:保存文件
^K:剪切 ^U:粘贴
^W:搜索

报错和解决方法

1、su出现Authentication failure

su
原因:未设置root密码
解决:用sudo passwd设置密码
在这里插入图片描述

2、修改源

修改/etc/apt/sources.list里面的镜像源

#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse

更新源
sudo apt-get update
出现依赖问题
sudo apt-get -f install
更新软件
sudo apt-get upgrade
参考网页:
https://zhuanlan.zhihu.com/p/142014944
也可以通过software & upgrade的ubuntu source指定镜像源
在这里插入图片描述
tar -jxvf file.tar.bz2
tar -zxvf file.tar.gz

-j:指示具有bzip2的属性
-z:指示具有gzip的属性
-x:用于解开一个压缩文件
-v:表示在压缩过程中显示文件
-f:使用压缩包文件名

3、安装APR报没有C编译器

在这里插入图片描述

linux

Linux一切皆为文件
Linux文件无论是一个程序、一个文档、一个数据库,或者是一个目录,操作系统都会赋予文件相同的结构,具体包括以下两部分。

  • 索引节点:又称I节点。在文件系统结构中,包含有关相应文件信息的一个记录,这些信息包括文件权限、文件所有者、文件大小等。相当于文件信息,可以用来排序,识别等,所以叫做索引节点,i就是Info
  • 数据:文件的实际内容,可以是空的,也可以非常大,并且有自己的结构。
    4种文件类型
    1、普通文件:常规文件,包括文本文件、数据文件和可执行的二进制程序等
    2、目录文件:".“表示该目录本身,”…"表示上一级目录
    3、设备文件:特殊文件,
  • 除了存放在文件索引节点中的信息外,不包括任何数据。
  • 系统利用它们来标识各个设备驱动器,内核使用它们与硬件设备通信。
    分为:字符设备文件和块设备文件
    设备文件放在/dev目录下,系统中每个设备都在该目录下有一个对应的设备文件。
    例如
    串口COM1:/dev/ttyS0
    第一个SCSI(或SATA硬盘):/dev/sda
    伪设备:/dev/null,/dev/zero
    4、链接文件:提供对其他文件的参照。
    使用场合:当需要再不同目录使用相同文件时,可以在一个目录中存放该文件,在另一个目录创建一个指向该文件的链接,然后通过这个链接访问该文件。
    分为符号链接(Symbolic Link)和硬(Hard Link)
    符号链接相当于快捷方式
    硬链接相当于对原文件建立的别名

1、查找文件

以"镜像源"文件为例
①find

find / -name sources.list

②locate

locate sources.list

③whereis:搜索结果只限于二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
④which:搜索可执行文件

2、安装软件

在这里插入图片描述

在这里插入图片描述
编译并安装

  • ./configure命令是用来检查系统环境并配置软件的安装选项,生成一个Makefile文件,供后续的编译和安装使用。
  • make命令是用来根据Makefile文件中的规则,编译源代码并生成可执行文件或库文件。
  • make install命令是用来将编译生成的文件安装到系统中指定的目录中,使得软件可以被系统正常调用和运行。

Linux进程:

  • 交互进程:在Shell下通过执行程序所产生的进程,可在前台或后台运行
  • 批处理进程:一个进程序列
  • 守护进程:
  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值