Ubuntu指令学习
- 0、一点常用指令列表
- 一、Ubuntu下复制与移动,cp/mv
- 二、Ubuntu下echo 与 重定向>,>>
- 三、Ubuntu下chmod,用户权限
- 四、Ubuntu下的tar打包,gzip压缩
- 五、Ubuntu(22.04)下系统语言为中文,切换主目录文件名为英文。
- 六、Ubuntu下GitHub访问
- 七、Ubuntu使用sudo apt install安装时,提示正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 xxxx(unattended--upgr)持有的问题。
- 八、Ubuntu下执行脚本
- 九、Ubuntu下的环境变量
0、一点常用指令列表
指令 | 解释 |
---|---|
man | 命令 / 命令 --help 查看命令的使用方法 |
ls | 查看当前文件夹下的内容, ls -a为看到所有文件包括隐藏文件, ls 1* 为查找1开 头所有文件,ls 1? 为查找一个以1开头的二字符文件名文件,?为一个字符 |
pwd | 查看当前所在的文件夹,定位所在位置 |
touch | 如果文件不存在就新建文件,一般为文本,touch .1.txt 为创建隐藏文件 |
gedit | 文本编辑器,也可以用于创建文本,gedit 1.txt |
mkdir | 创建文件夹 |
rm | 删除文件, 加上 -f为强制删除,-r为递归删除; rm删文件不可恢复,可以sudo apt install trash-cli,再trash 文件 可放入回收站 |
clear | 清屏 |
tree | 以树形结构显示文件路径下的文件 |
cat | 查看文件内容如cat 1.txt , cat -b 1.txt 则能知道文本有多少行 |
grep | 搜索文件中的文本,-n 匹配行及行号,-i忽略大小写,如grep -n abc 1.txt, 这 个命令可以很好在无图形界面情况下进行搜索 |
丨 | 管道,也就是将丨左边命令输出的内容作为右边的输入再执行结果,比如 ls 丨 grep abc 也就是先查看当前路径的文件然后搜索文件名中含abc的项 |
shutdown | 一分钟后关机, shutdown -r一分钟后重启,reboot为立刻重启, shutdown -c 为取消之前的关机计划,shutdown now 为立刻关机 |
ifconfig | 查看网卡配置, ping 检测与另一台主机的连接 |
passwd | 修改用户密码,一般忘记密码时会用,不过还有别的步骤 |
su | 进入管理员模式,su root |
date | 查询系统当前时间,cal为查看当前月的日历,cal -y查看一年的日历 |
df | 显示磁盘剩余空间,df -h则可更可视化查看磁盘空间,比如以G,MB单位,du -h 则查看当前目录下文件的大小 |
find | 查找文件的路径,find /usr/bin/ -name ".py"为查找某路径下的py文件 |
ln -s | 源文件(用绝对路径) 链接后文件(用绝对路径) 创建软链接,相当于windows下的快捷方式 |
一、Ubuntu下复制与移动,cp/mv
cp 源文件路径 目标路径,如果要复制到根目录下要赋予管理员权限,使用sudo,一般配置环境的时候需要在根目录中移动文件。文件路径可以灵活修改,比如当前所在位置就已经三目标路径了,那cp到的目标路径可以用 .
cp ~/Desktop/1.txt ~/Pictures/
如果防止覆盖相同文件名的文件,可以加 -i。
复制的同时可以改名,如下
cp ~/Desktop/1.txt ~/Pictures/2.txt
mv和cp一样的使用方法,只不过源路径的文件无了。不过可以用move在同路径下将一个文件重命名,也只是覆盖而以。
二、Ubuntu下echo 与 重定向>,>>
echo 本身只是输出以下输入的东西,一般与重定向使用,配置环境时多与bashrc互动。
touch创建了一个空的文本,echo与重定向则可以创建有内容的文本,>会覆盖原有内容,>>则是在末尾的新行追加内容:
echo hello > 3.txt
>与>>可以单独使用,比如把其他指令得到的内容加到文本中:
tree >> 3.txt
或
ls >> 3.txt
三、Ubuntu下chmod,用户权限
+为赋予权限,-为删除权限,r为可读权限,w为可写权限,x为可执行权限。
chmod +/-rwx 文件名或目录名
三个数字分别给系统拥有者,组,其他用户的权限,4为r,2为w,1为x,若赋予完全的权限则为rwx之和即7,只赋予读写权限则为rw之和为6,其余类似,一般使用当前自己用户就是第一个数字就行。
chmod 755 文件名或目录名
四、Ubuntu下的tar打包,gzip压缩
Linux的压缩包主要为tar.gz,tar指是由tar打包的,gz指由gzip压缩的,tar只为打包文件,tar.gz为压缩文件,大小更小。
tar只负责打包,c为生成档案文件并创建打包文件,x为解开档案文件,v为列出解档案的详细过程并显示进度,f为指定档案名称其后一定为tar文件所以f常放选项最后。
# 打包文件
tar -cvf 打包文件.tar 被打包的文件或路径
# 解包
tar -xvf 打包文件.tar
加个-z即为调用gzip了。
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件或路径
# 解压缩文件,后面的目标路径可不用
tar -zxvf 打包文件.tar.gz -C 目标路径
此外还有对bzip2的压缩包的操作,用j来替代。
# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件或路径
# 解压缩文件,后面的目标路径可不用
tar -jxvf 打包文件.tar.bz2 -C 目标路径
五、Ubuntu(22.04)下系统语言为中文,切换主目录文件名为英文。
因为做项目的需求,主目录下的文件最好换成英文。
通过下面两条命令即可转换,en_US是英语的编号。接着重启就行。
export LANG=en_US
xdg-user-dirs-gtk-update
会弹出下面这个框,更新就好了。zh_CN是中文的代号。
接下来去看看源文件,在 /etc/default/ 下的locale就是语言相关的了
我们也已通过修改locale文件来修改中英文方式,上边那行LANG是修改主目录下的文件夹名字的语言的(可能也有其他地方被修改,暂时我没发现),下面那行LANGUAGE是修改整个系统的语言的,所以只需把LANG中的zh_CN改成en_US保存,就行。接着也要重启。
xdg-user-dirs-gtk-update
reboot
六、Ubuntu下GitHub访问
git clone https://ghproxy.com/(后面跟网址)
七、Ubuntu使用sudo apt install安装时,提示正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 xxxx(unattended–upgr)持有的问题。
这个问题可以归结为操作系统中的死锁问题,死锁定义如下:
死锁(Deadlock):是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。称此时系统处于死锁状态或系统产生了死锁。称这些永远在互相等待的进程为死锁进程。所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。
在ubuntu系统终端下,用apt-get install 安装软件的时候,如果在未完成下载的情况下将终端中断,此时 apt-get进程可能没有结束。如果再次运行apt-get install 命令安装,可能会发生下面的提示:
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
解决办法:强制解锁,命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
指令 | 解释 |
---|---|
ps | 查看当前系统的进程 |
top | 实时监控系统中内存占有高的进程,使用q退出动态过程 |
kill | 杀死进程,kill -9为强制杀死进程,如下图中PID为进程代号,60229为新建的 终端,kill了60229也就是关闭了那个终端,最好别kill掉root的进程 |
八、Ubuntu下执行脚本
脚本程序如shell脚本以.sh为后缀,python脚本以.py为后缀,perl脚本以.pl为后缀,执行脚本可以在终端中方便运行程序。这几种解释器的路径都在/usr/bin/下,所以一般写他们的脚本的时候会在第一行加上#!/usr/bin/python,#!/usr/bin/sh, #!/usr/bin/perl 。
执行脚本时,对.sh文件,用shell的语法。
.sh文件可以用下面四种方法执行。
sh 1.sh
bash 1.sh
source 1.sh
./1.sh # 必须chmod添加可执行权限才能
对python脚本,就 python 1.py 与 ./1.py 执行python脚本。
九、Ubuntu下的环境变量
ubuntu以shell脚本为基础,最基本的使用为先定义一个变量如 VALUE=value , 接着就使用这个变量如 ${VALUE} , 若后面有定界符则可以不用{}。
直接在终端中加入环境变量,生效方法为立即生效,有效期限是临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置,用户局限是仅对当前用户。
export OUTPUT=/usr/local
下面这样为把环境变量加到 PATH中。
export OUTPUT=$PATH:/usr/local
用户环境变量定义在~/.profile中,在其中加入环境变量就可以不局限于一个终端中,一般加在其末尾即可,需要重启才能生效。
用户环境变量还可以定义在~/.bashrc中,输入“source ~/.bashrc”命令,立即生效,有效期限为永久有效,用户局限是仅对当前用户。
sudo gedit ~/.bashrc
export OUTPUT=$PATH:/usr/local
而系统环境变量则是在/etc/profile.d/下建立的shell脚本,一般不直接修改profile,而是在目录下创建sh脚本,定义环境变量然后重启生效,这样无论是哪个用户登陆都可以有这个环境变量了。