Ubuntu Conda

千万不要随意删除系统自带的文件
千万不要随意删除系统自带的文件
千万不要随意删除系统自带的文件


根目录的结构与用途

/usr:(unix software resource)与软件安装/执行有关
/var:(variable)与系统运作过程有关
/etc:系统主要的配置文件目录
/lib:系统的函式库
/opt:第三方协力软件放置的目录
/proc:一个虚拟文件系统,系统运行的每一个进程都会自动在这个目录下面创建一个进程目录。
/tmp:一个临时文件夹,系统的一些临时文件会放在这里。
/lost+found:系统发生错误时(比如非法关机),可以在这里找回一些丢失文件。
/media:多媒体挂载点,像U盘、移动硬盘、windons分区等都会自动挂载到这个目录下。
/mnt:临时挂载点,可以自己挂载一些文件系统到这里。
/run:系统从启动以来产生的一些信息文件。
/home:用户家目录,存放用户个人文件和应用程序。
/boot:和系统启动相关的文件,像grub相关文件都放在这里


路径与环境变量

/开头的即为绝对路径,/为根目录;其余的为相对路径,“相对"指的是相对于当前目录。
.代表当前目录(./),..代表上一层目录(../),-代表前一个工作目录。
区分是目录还是文件通过/标志,a表示文件,a/表示目录。(本质上目录和文件没有区别)
./*.sh表示在当前目录下执行*.sh文件。
~表示目前用户身份所在的家目录,~=/home/[用户名]/
$表示现在的身份不是root用户

export设置或显示环境变量 export [-参数] 环境变量 [=变量值] -p列出所有环境变量。
环境变量就是系统预定的参数,如系统操作和程序执⾏时,默认设定的参数,比如path路径变量,分为系统变量(全局变量)和用户变量(局部变量)。
全局变量:sudo gedit ~/.bashrc打开配置文件,export PATH=... 在配置文件中输入要改变的变量或者在终端输入 echo "export PATH=..."source ~/.bashrc 刷新一下配置文件。
局部变量:直接在终端输入 export PATH=... 在重启系统之前,一直生效。


快捷键

终端

Ctrl + l清屏, Ctrl + h删除上一个字符,Ctrl + w删除上一个单词

Ctrl + u删除光标前当前行所有字符,Ctrl + d 清除光标后的字符 或 关闭终端(需要先清空命令行的字符)

Ctrl + a移动到开头,Ctrl + e移动到结尾,Ctrl + b往前移动一个字符,Ctrl + f往后移动一个字符

Ctrl + p上一个命令,Ctrl + n上几个命令中的下一个命令

Ctrl + j 输入信息,就是回车

Ctrl + Tab 切换同一终端下的另一个窗口

Ctrl + r (reverse-i-search) 是一种用于搜索命令历史的功能。继续按 Ctrl + r 进行下一次匹配;按下左右箭头键退出搜索模式,然后进行编辑;退出搜索模式而不选择任何命令,可以按下 Ctrl + gCtrl + c 键。

文件夹

Ctrl + l显示当前的目录下的绝对路径


Conda

CondaAnaconda的主要异同点

特性CondaAnaconda
定义开源的包管理器和环境管理系统。开源的Python发行版,包含Conda、Python以及超过150个科学包及其依赖。
主要用途管理包和环境。为科学计算、数据科学、机器学习提供一站式解决方案。
包含内容不包括任何预装包,只有管理工具。包含Conda、Python和大量预装的科学计算包。
适用范围不限于Python,也可以管理其他语言的软件包,如R、Ruby、Lua。主要针对Python社区,尤其是需要大量科学计算包的用户。
安装大小较小,因为只安装必要的管理工具和用户指定的包。较大,因为包括了大量的科学计算和数据分析包。
独立使用可以独立使用,不需要Anaconda。包含Conda,因此可以使用Conda的功能,但其自身作为一个整体发行版。
目标用户需要精简安装或具体控制环境和包的高级用户。需要大量预装包以便立即开始工作的初学者和专业人士。
跨语言支持支持。通过Conda支持,但Anaconda发行版主要集中在Python及其科学包上。

用来管理python环境,便于切换。
查看已安装的conda:conda info -e
创建新环境env_name,并在该环境下安装名为package_name的包:conda create -n env_name package_name,如conda create -n python2 python=python2.7 numpy pandas表示创建了python2环境,python版本为2.7,同时还安装了numpy pandas的包。
进入环境 conda activate env_name
退出conda已进入的环境 conda deactivate
删除conda环境或者环境中对应的包 conda remove -n env_ name package_name/--all

切换环境时,需要先进入base环境,通过在~/.bashrc设置

alias enterbase=". /home/tvoid/anaconda3/bin/activate"
alias entergpt=". /home/tvoid/anaconda3/bin/activate;conda activate gptac"

来手动进入anaconda创建的环境,而不是开启每个终端都是自动进入该环境。

环境

export PATH="/home/tvoid/anaconda3/bin:$PATH"

该环境修改在~/.bashrc之后,在终端所有的运行的python库,都会默认选择anaconda中的环境库。因此,找不到python库时,记得在anaconde的默认环境中下载所需库。不要直接使用sudo apt install xxx直接下载。


指令

cat
对文件进行链接以及输出导向符号的使用:cat [-参] 文件
cat -n:对输出文本进行编号
cat只接一个文件时,只对该文件在终端显示。
cat -E:每一行的末尾以$结束
cat a1.txt a2.txt > a3.txt链接a1 a2文件到a3,若a3不存在,则自动创建。
cat a2.txt a1.txt >> a3.txt把a2 a1按照此顺序追加到a3中,若a3不存在,则自动创建。
上式区别在于>是建立新的包含a1a2的a3,而>>是在原有的基础上,追加的a2a1到a3。若先>>>,则a3显示a1a2a2a1;但若先>>>,则只有a2a1,因为>相当于刷新了a3文件

chmod
改变文件或目录的权限 chmod [-参] [<权限范围> +/-/= <权限设置>] 文件/目录
权限范围:uuser,ggroup,oother,aall
[r]=4,写[w]=2,执行[x]=1,无权限[-]=0
-R recursion目录以及子目录所有文件
+添加目录或文件拥有指定权限,-目录或文件删除指定权限,=设置目录或文件拥有唯一指定权限
chmod 775 a.txt就是说赋予a.txt u=7=4+2+1 g=7=4+2+1 o=5=4+0+1的权限
chmod ug+rwx a.txt && chmod o+rx a.txt 同上
root不受权限影响,可随意操作,linux中程序是否可执行与扩展名无关,只与x权限有关。
chgrp改变所属组群权限,chown改变所属拥有者权限

cd
进入目录,进入根目录cd /,进入家目录cd 或者cd ~,进入上一级目录cd ..,回到之前目录cd -cd后不加/的话,相当于进入当前目录下的文件,比如你现在在家目录 /home/XXX,输入 cd pictures那就是进入/home/XXX/pictures目录。

apt-get
安装卸载等,
其中apt-get update从服务器更新可用的软件包列表;
apt-get upgrade根据列表,更新已安装的软件包。upgrade 不会删除在列表中已经没有的软件包,也不会安装有依赖需求但尚未安装的软件包;
apt-get full-upgrade根据列表,更新已安装的软件包。full-upgrade 可能会为了解决软件包冲突而删除一些已安装的软件包;
apt-get dist-upgrade根据列表,更新已安装的软件包。dist-upgrade 可能会为了解决软件包冲突而删除一些已安装的软件包,也可能会为了解决软件包依赖问题安装新的软件包。
apt update --fix-missing
apt install -f修复依赖关系,-f是–fix-broken的缩写
apt-get install -s xxx仿真,调试xxx的安装,并非真正的安装。
apt-get install -y xxx有选项选择时,直接为yes
apt-get search xxx 查找某些库

aptitude
aptitude 是一个用于包管理的命令行工具。它类似于 apt-getapt,但提供了更多的功能和用户界面。
sudo aptitude install xxx可以解决apt的依赖问题

sed
sed 是一个流式文本编辑器。
可以打开列表中指定位置的文件,有 vim $(ls | sed -n '5p') 使用vim打开ls中第5个文件,注意,文件索引是从1开始。

dpkg
安装卸载*.deb软件
sudo dpkg -i *.deb安装软件 sudo dpkg -r package_name卸载软件
dpkg -l/--list 查看安装版本号

less
more更方便
随意浏览文件 less [-参] 文件
-e 当文件显示结束后,自动离开
Ctrl + F - 向下移动一屏,Ctrl + B- 向上移动一屏,Ctrl + D - 向下移动半屏,Ctrl + U - 向上移动半屏,j - 向下移动一行,k - 向上移动一行,G - 移动到最后一行,g- 移动到第一行,q / ZZ - 退出 less 命令,v - 使用配置的编辑器编辑当前文件,h - 显示 less 的帮助文档
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
ma - 使用 a 标记文本的当前位置 (m:mark,a随便一个标记符号)
'a - 导航到标记 a

当终端内容过多时一整个屏幕装不下,如ls /usr/bin/,可以通过shift+PgUp/PgDn实现翻页;更大的内容,可以ls /usr/bin/ | less 切换less显示。

mkdir
建立目录 make directory mkdir [-参] 目录名
-p/--parents确保每个目录名都存在,若不存在,则创建。
-m创建具有权限的目录,如mkdir -m 711 */
如果想要给文件命名为带空格的名称,需要使用转义符\或者使用单引号或双引号表示。mkdir text\ 1或者mkdir 'text 1'

touch
修改文件或者目录的时间属性,包括存取时间和更改时间。(ls -l 可以显示档案的时间记录。)若文件不存在,系统会建立一个新的文件。

创建文件在新文件夹内
mkdir B && touch B/myfile.txt或者创建一个函数mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }
加入到~/.bashrc

echo 'mkfile() { mkdir -p "$(dirname "$1")" && touch "$1" ;  }' >> ~/.bashrc
source ~/.bashrc
mkfile ./fldr1/fldr2/file.txt

mv
文件/目录改名、或将文件/目录移入其它位置。
mv source_file/dir dest_file/dir
对于s_fd_f来说,就是把s_f重命名为d_f
对于s_fd_d来说,就是把s_f移动到d_d中去
对于s_dd_f来说,指令错误
对于s_dd_d来说,若d_d已存在,则将s_d作为子目录移动到d_d中去,如若d_d不存在,则重命名为s_dd_d

rm
删除目录或文件 remove
-f强制删除;-r删除指定目录下的所有文件及子目录

pwd
显示当前位置,pwd (print wording directory)  默认打开终端进入的目录是你的用户目录,即输出pwd显示的是/home/你的用户名

whereis & locate & which & find
用来查找文件,其中whereislocate是利用数据库来搜寻数据的,所以速度很快
whereis 是用来查找可执行程序或指令
locate适用范围比whereis大的多,且支持模糊查询,还可以使用-r启用正则表达式
find find [path] [option] [action] 遍历在当前工作目录及其子目录,非常消耗硬盘资源,效率极低
which 查找在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果

grep
grep [-acinv] '搜寻字符串' filename
查找文件里符合条件的字符串,若改行有关键字,则将整行列出来。

  • -n输出行号
  • -i忽略大小写的不同,所以大小写视为相同
  • -v反向选择,输出没有'搜寻字符串'的那一行

ps
ps [options] [--help]
显示当前进程的状态,类似Windows的任务管理器

  • -A列出所有进程
  • -a显示所有线程,包括其他用户的进程
  • -au显示较为详细的咨询
  • -aux显示进程用BSD格式
  • -e显示所有进程
  • -f全格式

查看程序进程ps aux | grep file,查看线程的命令ps -aL | grep file,查看主线程和子线程之间的关系pstree -p 主线程的id

help&man
help是内部指令的帮助,man是外部指令的帮助

nm
用于显示二进制目标文件的符号表
nm *.cpp.o可以罗列出*.cpp.o所有外部链接

head
用于显示文件的前几行 head [options] [file]

  • -n Num 指定显示Num
  • [file] 要显示前几行的文件名。如果不提供文件名,则会从标准输入读取数据

sort
用于对文本排序 sort [options] [file]

  • -r 表示逆序排序(从大到小)
  • -n 以数值大小进行排序,而不是按照字母顺序
  • -f 忽略大小写进行排序
  • [file] 是要排序的文件名。如果不提供文件名,则从标准输入读取数据

sort -rh 对文件进行逆序排序。

du
du代表disk usage,它能够递归地扫描指定目录并显示目录或文件的磁盘使用情况。

  • 查看当前目录下所有文件和子目录的空间使用情况: du -h, -h为可读的格式显示文件大小。
  • 查看指定目录的空间使用情况:du -h /path/to/directory
  • 仅显示目录的总空间使用情况,而不显示目录下的每个文件和子目录:du -sh /path/to/directory, -s选项用于只显示目录的总大小。

大小单位及参数:KB-k、MB -m、GB-g

du -h --max-depth=1 | sort -rh | head -n 10
读取当前目录中的所有目录,按照大小逆序输出前10个

重定向
> 表示输出重定向,< 表示输入重定向
command1 > file1表示将执行command1然后将输出的内容存入file1,注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符

cat < hello.txt > hello2.txt表示将hello.txt内容传递给cat的标准输入,cat命令会显示hello.txt文件的内容
> hello2.txt表示将cat命令的标准输出写到文件hello2.txt中。既将cat命令显示的hello.txt的内容保存到hello2.txt新的文件中
等价于cat hello.txt > hello2.txt

command 1 > file
标准输出文件stdout的文件表述符为1
command 2 > file
标准输出文件stderr的文件表述符为2

使用管道符可以更好的进行重定向。|为管道符(pipe),将左侧的输出作为右侧的输入。


压缩

tar
打包同时压缩/解压缩文件
参数:-c建立新的文件.tar-f指定备份文件(所谓备份文件指的是压缩或解压出具有相同文件的*.tar),-j使用bzip2处理备份文件,-x从备份中还原文件,-z使用gzip处理文件.gz-v显示详细信息。
例:打包文件 tar -c a1.txt a2.txt > s1.tar 打包为s1.tar
将该目录下的所有txt文件打包为a5.tartar -cf a5.tar *.txt
将该目录下的所有txt文件打包为a6.tar.gztar -zcf a6.tar.gz *.txt
解压文件 tar -zxvf s1.tar.gz

rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirNam

zip
zip -r filename.zip filesdir
在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。
要抽取 zip 文件的内容,键入以下命令:
unzip filename.zip


bash通配符

通配符(wildcard)

  • * 代表0到无穷多个任意字符
  • ? 代表一定有一个任意字符
  • [ ]代表一定有一个在括号内的字符(非任意字符)。如[abcd]表示一定有一个字符,可能是a,b,c,d任意一个。
  • [ - ]若有减号在括号内,代表在编码序列内的所有字符。如[0-9]代表09之间的所有数字,如[a-z]代表a-z之间的所有小写字母,因为ASCII编码是连着的,如果是大写英文/小写英文/数字等等,[a-zA-Z0-9]
  • [^ ]若在括号内第一个字符为^,那表示反向选择。如[^abc]代表一定有一个字符,只要是非a,b,c的其他字符都可以
[root@www ~]# LANG=C              <==由于与编码有关,先配置语系一下

范例一:找出 /etc/ 底下以 cron 为开头的档名
[root@www ~]# ll -d /etc/cron*    <==加上 -d 是为了仅显示目录而已

范例二:找出 /etc/ 底下文件名『刚好是五个字母』的文件名
[root@www ~]# ll -d /etc/?????    <==由于 ? 一定有一个,所以五个 ? 就对了

范例三:找出 /etc/ 底下文件名含有数字的文件名
[root@www ~]# ll -d /etc/*[0-9]*  <==记得中括号左右两边均需 *

范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名:
[root@www ~]# ll -d /etc/[^a-z]*  <==注意中括号左边没有 *

范例五:将范例四找到的文件复制到 /tmp 中
[root@www ~]# cp -a /etc/[^a-z]* /tmp

正则表示法

正则表示法(Regular Expression),简单的说就是处理字符串的方法,是以行为单位来进行字符串的处理行为,通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻、删除、取代特定字符串的处理程序。如,只想找到VBird(前面两个大写字符)或Vbrid(仅有一个大写字符)这个字样,但不需要其他的字符串,如VBIRDvbird等都不需要。如果没有正则表示法的环境中,或许要使用忽略大小写的办法,但会搜索到不需要的字符串,再或者分别以VBirdVbird搜索两遍。

正则表示法基本上是一种表示法,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表示法的字符串处理之用。如vi,grep,awk,sed等工具支持正则表示法,但cp,ls等指令不支持正则表示法,只能使用bash自身的通配符而已。

系统其实记录的仅有0和1,我们看到的字符文字与数字都是通过编码表转化来的。不同语系编码表不同,因此语系会影响到正则表示法的输出结果。如

  • LANG = C时,0 1 2 3 4 ... A B C D ... Z a b c d ... z
  • LANG = zh_TW时,0 1 2 3 4 ... a A b B c C ... z Z

由于两个语系输出结构不同,要截取大写字符使用[A-Z]不一定是正确的。因此,使用正则表示法时,需要特别留意当时环境语系是什么。
为了避免因为语系的不同而特别留意的操作,有如下特殊意义的符号

特殊符号代表意义
[:alnum:]代表英文大小写字符及数字,亦 0-9, A-Z, a-z
[:alpha:]代表任何英文大小写字符,亦A-Z, a-z
[:blank:]代表空格键与 [Tab] 按键两者
[:cntrl:]代表键盘上面的控制按键,亦包括 CR, LF, Tab, Del… 等等
[:digit:]代表数字而已,亦 0-9
[:graph:]除了空格符 (空格键与 [Tab] 按键) 外的其他所有按键
[:lower:]代表小写字符,亦 a-z
[:print:]代表任何可以被打印出来的字符
[:punct:]代表标点符号 (punctuation symbol),亦: " ’ ? ! ; : # $…
[:upper:]代表大写字符,亦 A-Z
[:space:]任何会产生空白的字符,包括空格键, [Tab], CR 等等
[:xdigit:]代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字符

用中括号[ ]搜索集合字符,无论括号里有几个字符都代表一个字符。
行首与行尾字符^ $,注意区分于[^ ]。小数点.有其他特殊意义,因此与行首行尾结合使用时,需要使用逃脱字符\来加以解除特殊意义。\.
以上特殊符号引用的时候要括在[ ]内(因为代表的是一个字符),里面的[ ]是特殊符号的一部分。如grep -n '^[[:lower:]]' filename
.代表一定有一个任意字符,不同于通配符
*代表重复前一个0到无穷多次的意思,为组合形态,不同于通配符。如o*表示拥有空字符或者一个以上的字符
限定连续字符范围{},由于shell中{ }有特殊含义,因此需要结合逃脱字符\{ \}。如grep -n 'go\{2\}' filename表示寻找两个o的字符串,grep -n 'go\{2,5\}' filename表示寻找2-5个o的字符串,grep -n 'go\{2,\}' filename表示寻找2个以上o的字符串

正则表示法与通配符是完全不一样的。通配符代表的是 bash 操作接口的一个功能,但正则表示法则是一种字符串处理的表示方式。


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值