同步操作将从 deepinwiki/wiki 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本文将介绍一些linux的基本知识。
进入linux世界,不可避免要接触到命令行的使用。命令行相比图形界面有如下优点:
比如在服务器领域,经常都是不带界面的,因为用户通过网络来使用服务器,而不需要连接服务器的显示器。如果安装界面,目的就是为了管理系统本身,如果通过命令行,就可以减少服务器的资源浪费,服务更多客户。
批处理是对同一类事物经常的串联处理,这个是命令行的强项,比如文件改名字,用图形界面经常是一个文件一个文件的修改,而命令行可以批量的,根据某些规则进行统一修改。
图形应用程序通常都是为特定业务服务的,它们设计上更加偏向自成体系,因为图形应用程序往往更加复杂。而命令行程序很多都是很简单的业务,设计上更加偏向组合其他命令行来完成更大的任务。因为比较简单,也更容易整合在一起。当然,结论不是一成不变的,只能说总体上如此。
说了那么多,就是为了让大家放下对命令行的偏见,不要认为i图形界面必然比命令行优秀。或者反过来也是不成立的,应该是各有优缺点。
命令 选项 参数
首先是命令,分两种,一种是内置命令,即命令解释器shell内置的可识别名称。一种是外部命令,即调用文件系统里面的可执行程序。
选项和参数的区别:选项是修改命令的执行效果,而参数是命令需要的补充信息。
比如ls -l
中的-l
修改了默认的输出格式,这是一个选项。而ls /
列出根目录,/
是根目录,是ls
的补充信息,是参数。
那么怎么知道某个命令的用法?除了百度,也可以通过 man 命令
来查询内置的文档。不过大部分都是英文的。进入文档状态后可以使用下列按键:
注意,linux中的大小写往往是敏感的,代表不同的内容,如n 和 N。
find 路径 -maxdepth 1 -name "文件名" -type f -mtime -2 -exec ls {} \;
: 根据目录深度,文件名,文件类型,修改时间范围来查找文件,然后对每个找到的文件执行"ls 找到的文件;"(结尾必须是空格;)tab键
可以补全内容home 键
可以回到一行开始上下箭头键
可以访问历史记录的命令
ctrl + l
清屏/dev/stdin
获取/dev/stdout
输出/dev/stderr
输出<
>
2>
<<
遇到指定分界符停止&>
>>
、2>>
|
,如a | b
即 a的输出作为b的输入*
任意个字符?
一个字符[0-9]
零到九的任意一个字符[abc]
任意一个指定范围的字符[^abc]
除指定范围字符外的任意字符{a,b}
参数字符串展开a b{a..z..2}
参数字符串展开 a c e....\
反斜杠,'
单引号, "
双引号, `
反引号(1键左一)。一般而言:转义字符跟着或包裹着特殊字符,去除其特殊意义,变为普通字符。
\
跟着的字符变为普通字符'
包裹的字符串变为普通字符串"
包裹的字符串除变量外变为普通字符串`
包裹的字符串是一条命令,执行并取得结果$
, 取变量的值
$()
执行括号内命令变量名=值
局部变量,export 变量名
提升为全局变量ctrl + d
,在输入时可以通过按这个组合键告知命令输入完结。ctrl + z
,把当前执行的命令挂起在后台,并暂停。ctrl + c
&
用在命令最后,表示命令在后台执行#!/bin/bash
位于第一行,指定脚本程序的解释器$0
命令名称$1
第一个参数$#
参数个数$*
所有参数值[ -d X ]
X是否为目录,注意中括号内侧必须留空格,而且表达式都需要用中括号扩起来-e
文件是否存在-f
是否为一般文件-r
是否可读-w
是否可写-x
是否可执行-eq
等于、-ne
不等、-gt
大于、-lt
小于、-ge
大于等于、-le
小于等于;-nt
较新、-ot
较旧、-ef
同文件。-z
字符串是否为空、-n
非空、=
相等、!=
不相等、<
排前、>
排后。if 测试; then 命令序列; else 命令序列; fi
for 变量 in 列表; do 命令序列; done
while 测试; do 命令序列; done
case 值 in 模式) 命令序列; ;; 模式2) 命令序列; ;; *) 默认命令序列; esac
$?
退出状态码$$
PID$!
后台PID${var:-string}
: -
var没有被设置,返回string; +
被设置返回string; =
没设置判断是否相等; ?
没设置报错。:
存在且非空。$var
| ${var}
var是变量,返回值。$(command)
| `command`
command是命令,返回命令结果。/dev/zero
可无限读取空字符的特殊文件/dev/null
可无限写入的特殊文件\ . [ ] ^ $ *
+ ? ( ) { } |
c
\c
.
:任意一个字符^
:字符串首部$
:字符串尾部\<
:单词首部/>
:单词尾部[abc]
: abc中任意一个字符[^abc]
:除abc中的任意一个字符r*
:0到n个r字符r+
:1到n个r字符r?
:0或1个r字符a|b
:a或b(a)
:a组成子正则表达式apt install xxx
: 安装apt remove xxx
:卸载apt install --reinstall xxx
:重装apt install xxx:i386/unstable
:安装unstable分支的xxx包的i386架构版本apt upgarade
更新已安装的包apt full-upgrade
升级系统到最新版本apt autoclean
清除下载缓存apt policy xxx
优先级
apt autoremove
清楚没有依赖的自动安装包apt-mark showmanual
列出手动安装包apt-key fingerprint
列出安装包密钥apt search 搜索词
搜索说明匹配的包apt show xxx
包的简要信息*
任意sudo vipw
编辑sudo vipw -s
编辑sudo adduser user group
添加用户到组(linux对这个加入用户组的概念实现得非常反人类)chmod u+s
设置u为s授权使用所有者权限执行chmod g+s
设置g为s授权使用用户组权限执行chmod o+t
无效chmod u+s
无效chmod g+s
设置g为s目录内继承目录用户组chmod o+t
设置o为t目录下的文件仅文件所有者,目录所有者和root可以删除,其他人无法删除(不递归)linux的视窗叫X,视窗提供了图形界面,其中X负责协调各个组件,同时设计成客户端/服务器的模式。组件有窗口管理器,登录界面,桌面等。组件化提供linux更大的灵活性,甚至图形界面也不是必须的,是建立在字符界面的一层应用,这样好处是方便图形出问题的时候,在字符界面挽救一下系统。但是,有得必有失,相对来说,linux的图形界面稳定性,效率比较低(但可以接受)。
ssh -X
远程链接XX客户端是相对应用程序的视角出发的定义,即程序本身。但是这个程序在用户角度可能是服务器上的一个程序。
X服务器是相对应用程序而言的,即提供显示设备和输入设备服务端,对用户来说是眼前的设备。
更多时候,X客户端和X服务器同时运行在本地电脑。
dpkg-reconfigure --priority=low x11-common
重新配置X服务器startx
启动X会话,即同时启动X服务器和客户端
update-alternatives --config x-session-manager
由debian选择系统指定真实的X会话管理器xset q
查看配置fc-match
字体匹配fc-list
字体列表
多语言multilingualization(M17N)、国际化internationalization(I18N)、本地化localization(L10N)的支持,linux是比较友好的,虽然没有商业化软件那么到位,但是基本的框架都有,就看实际的应用程序有没有支持了。
有些软件的汉化工作是通过另一个包来实现的,比如chromium浏览器,通过chromium-l10n包来实现汉化。注意那几个特殊英文的缩写m17n、i18n、l10n,查看软件有没有提供类似的包。
gettext
:本地化的工具sudo dpkg-reconfigure keyboard-configuration
键盘配置sudo dpkg-reconfigure console-setup
sudo dpkg-reconfigure locales
配置本地支持的语言集sudo dpkg-reconfigure tzdata
修改时区
df -h
: 查看文件系统空间du -hcd1 *
查看目录空间,h人性化、c总计、d1目录深度1cp /dev/sda sda.img
制作整盘映像dd if=/dev/sda of=sda.img bs=512 count=1
备份启动扇区mount -t auto -o loop sda.img /mnt/loop0
挂载映像losetup -vf sda.img
加载循环设备dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
制作5GB空盘映像isoinfo -d -v xp.iso
查看光盘映像信息dd if=xp.iso bs=2048 count=307733 conv=notrunc,noerror | md5sum
计算映像的md5散列和od -t x1
查看二进制数据zip x.zip x1 x2 x3
打包压缩x1、x2、x3upzip x.zip -d x
解压缩到x目录iconv -f GBK -t UTF-8
: 字符集转换预先安装以下apt包:build-essential、libncurses5-dev、fakeroot、libqt4-dev(make xconfig需要)、libglalde2-dev和libgtk2.0-dev(make gconfig需要)、flex、bison、bc、libelf-dev、libssl-dev
或者:
sudo apt install build-essential fakeroot
sudo apt build-dep linux
sudo apt install devscripts #简单修补
cp /boot/configxxx .config
拷贝当前配置到内核目录make olddefconfig
转换为缺省应答make oldnoconfig
转换为相反应答make oldconfig
人工应答make clean
清除当前编译内容make distclean
清除编译内容和配置make defconfig
自定义配置make localmodconfig
基于当前加载模块生成配置scripts/config --disable MODULE_SIG
禁用模块签名scripts/config --disable DEBUG_INFO
禁用调试信息sudo make deb-pkg -j4
编译成deb包,j4表示4线程
sudo dkms status
查询动态模块
sudo dkms add -m xxx/1.1 -k linux5.1.1
sudo dkms build -m xxx/1.1
sudo dkms install -m xxx/1.1
sudo dkms uninstall -m xxx/1.1
删除 i386架构,因为我安装了winehq,他要求i386架构,但是后来我用虚拟机解决和windows兼容的问题了,所以就想着删除。但是如果没有把相应的i386库删除完毕,是无法删除架构的。光删除wine是无法彻底删除i386库。
dpkg --print-foreign-architectures #这条命令可以查看是否安装了i386架构
sudo dpkg --remove-architecture i386 #删除i386架构,但前提是你没有安装任何i386库。
dpkg -l | grep i386 |awk '{print $2}' #这条命令会列出系统内安装的i386库
dpkg -l | grep i386 |awk '{cmd="echo y|sudo apt autoremove "$2;system(cmd)}'
#这条命令根据上一条命令稍微改装了一下,自动化调用apt删除相关库
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。