linux
你最常用的一个 linux 命令是什么?为什么?
一、你最常用的一个 linux 命令是什么?为什么?
2020 年了,真的没必要再终端里一个字一个字敲命令了,有更酷炫的方式。分享下我在今年年最常用的一个命令,task,命令行任务管理。
服务端命令太长记输入慢怎么办?用的少的命令记不住怎么办?你需要任务管理器,将你命令行各种常见的冗余的任务管理起来,然后敲 2-3 个字母就能启动它(点击播放下面动图):
基本日常各种长难命令,什么 git 操作啊,常用主机间 ssh 跳来跳去啊,项目的编译,测试和发布啊,别人每次还需要重新敲一遍,或者把历史调出来,四处修改一番,有时候还改错了。而你现在只需要敲 2-3 个字母就运行了,像溜冰一般的流畅。
平时就连 task
四个字你都可以省略,绑定到 F5 上去,用法:
cd ~/github
git clone --depth 1 https://github.com/skywind3000/asynctasks.vim
ln -s ~/github/asynctasks.vim/bin/asynctask ~/bin
然后记得把你的 ~/bin
目录加入 $PATH
,最后在你的 .bashrc
中加一行:
alias task='asynctask -f'
妥了,然后添加任务,编辑:~/.config/asynctask/tasks.ini
全局任务配置:
[git-fetch-master]
command=git fetch origin master
cwd=<root>
[git-checkout]
command=git checkout $(?branch)
cwd=<root>
类似这样,然后输入 task 命令,就能运行上面的任务了,cwd
字段是命令运行的目录, <root>
代表项目根目录(有 .git
和 .svn
那个目录),不写的话就是当前目录,如果命令包含 $(?xxx)
的内容,运行前就会让用户输入 xxx,然后替换。
局部任务定义在各个项目文件夹下的 .tasks
中,作用所有子目录,完成针对项目的一些编译,测试,发布等日常任务,就是每天敲着你手累的命令,现在可以只用 2-3 个字母就重复执行了。
我平时连 task
几个字都懒得敲,因为把它绑到 F5 上了,把下面代码放入 .bashrc
:
bind '"\e[15~":"task\n"'
用 zsh 的话,把用下面配置:
bindkey -s '\e[15~' 'task\n'
然后每次按 F5 就运行 task 命令了,更少击键,记得使用前先安装 fzf,不然就只能:
asynctask git-fetch-master
这样输入完整命令了,安装了 fzf 以后,就可以模糊匹配输入命令。
基本可以把反复用到的 shell 命令分类保存,特别是一些又臭又长的命令,现在只需要轻轻的敲 2-3 个字母就成了。
这里有一份命令配置例子:skywind3000/asynctasks.vim
在 Vim 里也可以这么用(点击播放下面动图):
你当然也可以把常用任务绑定到 F1-F12 上,不用每次输入。
--
不要自作聪明的着急科普 fish shell 了,这是 fish 和 zsh 里没有的新东西。更不是历史搜索。这套任务系统要说像的话,你们没发现它更像 vscode 的任务系统么?我拓展了它的用途,让它变得更为通用和灵活。
这本质上是对裸命令进行二次抽象,这个抽象会给你带来意想不到的便利,比如你想编译和执行某个文件,那么可以把他们的语义统一成 file-build 和 file-run:
放到全局配置里
[file-build]
command:c,cpp=gcc -O2 -Wall "$(VIM_FILEPATH)" -o "$(VIM_PATHNOEXT)" -lstdc++ -lm -msse3
command:go=go build -o "$(VIM_PATHNOEXT)" "$(VIM_FILEPATH)"
command:make=make -f "$(VIM_FILEPATH)"
cwd=$(VIM_FILEDIR)
[file-run]
command="$(VIM_FILEPATH)"
command:c,cpp="$(VIM_PATHNOEXT)"
command:go="$(VIM_PATHNOEXT)"
command:python=python "$(VIM_FILENAME)"
command:javascript=node "$(VIM_FILENAME)"
command:sh=sh "$(VIM_FILENAME)"
command:lua=lua "$(VIM_FILENAME)"
command:perl=perl "$(VIM_FILENAME)"
command:ruby=ruby "$(VIM_FILENAME)"
cwd=$(VIM_FILEDIR)
不同的文件能够执行不同的命令进行编译。那么,我们语义就可以统一成:
asynctask file-build xxx # 编译文件
asynctask file-run xxx # 运行文件
你只需要记这样一个任务名即可,不需要管理细节,还可以把它配置在你喜欢的任何编辑器上,快捷键操作。上面配置里的 $(...)
的宏以 VIM 开头是为了兼容同名 vim 插件的配置,并不是需要 Vim 才能运行。
项目编译
配置任务时可以添加经常可以把下面配置添加到全局任务中:
[project-build]
command=make
# 设置在当前项目的根目录处运行 make
cwd=$(VIM_ROOT)
[project-run]
command=make run
# <root> 是 $(VIM_ROOT) 的别名,写起来容易些
cwd=<root>
output=terminal
以往你命令行编译项目时,势必要回到项目根目录,再运行 make 什么的,设置好了 cwd
字段以后,你可以再某项目任意一级子目录里运行:
asynctask project-build
它都会自动帮你向上搜寻项目根目录的标记(.git
, .svn
, .project
可配置),并记录在宏 <root>
里,命令设置了 cwd=<root>
以后,就会自动跑到项目根路径处运行,不用你每次 cd ../../.. 一大堆。
能够流畅无阻碍的执行:“编辑/编译/测试” 循环,是提高你编程效率最有效的方法,所以我们把上面两个任务绑定到 F7 和 F8:
bind '"\e[18~":"asynctask project-build\n"'
bind '"\e[19~":"asynctask project-run\n"'
那么你在某个项目任意一级子目录下面就能 F7 编译项目,F8 运行项目了,命令都不用敲。
不同的项目,构建系统不同,有的用 cmake 有的用 gnu make,假设我系统里大部分项目都是 gnu make 的,那么把上面 gnu make 的任务配置成全局的就行,但是我的 A 项目中使用 msbuild 进行构建,难道要配置一个 project-build-msbuild
的任务么?
任务适配
并不需要,我只需要在项目 A 的根目录处放一个 .tasks
文件:
[project-build]
command=vcvars32 > nul && msbuild build/StreamNet.vcxproj /property:Configuration=Debug /nologo /verbosity:quiet
cwd=<root>
errorformat=%f(%l):%m
[project-run]
command=build/Debug/StreamNet.exe
cwd=<root>
output=terminal
因为本地任务比全局任务有更高优先级,那么只要我在 A 项目下面任意一层子目录内运行:
asynctask project-build
asynctask project-run
就能用上级目录 .tasks
文件中配置的具体命令,调用 msbuild 编译当前项目了:
比如你在 project A 下面 src 目录里面很深的一级子目录,你不需要回到根目录,因为命令已经写清楚了自己的运行位置,运行时会临时回到项目根目录处运行,编译完你也不用一级级返回。
具体命令经过抽象后,不需要记住每个项目复杂的构建命令细节,只需记住统一的任务名称即可。在不同的项目中可以保持同样的操作习惯,不需要回想这个项目到底是用什么编译的,还还可以把它配置到 F7,F8 上面,热键任然不用改,不论你处在什么类型的项目下面,你的习惯不用改,你的工作流不会中断。
或者配置到你熟悉的编辑器上,就像 NotePad++ 这样原始的编辑器也有 NppExec 的插件让你配置外部工具,那么当你配置到编辑器上以后,你就能和命令行一起使用完全相同的语义,对重复度高的工作进行统一的抽象了。
这就是全局任务和局部任务搭配的黑魔法。其他还有很多技巧,为同一个任务配置不同的 profile ,指定是 debug 模式,还是 release 模式,还是 gdb 模式,同样不用更改任务的名字,就能区别不同的 profile,具体见项目文档吧。
--
二、linux 内核版本查询命令是什么?
怎么查看linux内核源代码?
一般在Linux系统中的/usr/src/linux*.*.*(*.*.*代表的是内核版本,如2.4.23)目录下便是内核源代码(如果没有类似目录,是因为还没装置内核代码)。另外还可从互连网上免费下载。注意,不要总到http://www.kernel.org/去下载,最好运用它的镜像站点下载。请在http://www.kernel.org/mirrors/里找一个合适的下载点,再到pub/linux/kernel/v2.6/目录下去下载2.4.23内核。
代码目录结构
在阅览源码之前,还应知道Linux内核源码的全体散布状况。现代的操作系统一般由进程办理、内存办理、文件系统、驱动程序和网络等组成。Linux内核源码的各个目录大致与此相对应,其组成如下(假定相关于Linux-2.4.23目录):
1.arch目录包括了一切和系统结构相关的中心代码。它下面的每一个子目录都代表一种Linux支撑的系统结构,例如i386便是Intel CPU及与之相兼容系统结构的子目录。PC机一般都基于此目录。
2.include目录包括编译中心所需求的大部分头文件,例如与渠道无关的头文件在include/linux子目录下。
3.init目录包括中心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研讨中心怎么工作的好起点。
4.mm目录包括了一切的内存办理代码。与详细硬件系统结构相关的内存办理代码坐落arch/*/mm目录下。
5.drivers目录中是系统中一切的设备驱动程序。它又进一步划分红几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound。
6.ipc目录包括了中心进程间的通讯代码。
7.modules目录存放了已建好的、可动态加载的模块。
8.fs目录存放Linux支撑的文件系统代码。不同的文件系统有不同的子目录对应,如ext3文件系统对应的便是ext3子目录。
Kernel内核办理的中心代码放在这儿。同时与处理器结构相关代码都放在arch/*/kernel目录下。
http://9.net目录里是中心的网络部分代码,其每个子目录对应于网络的一个方面。
10.lib目录包括了中心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。
11.scripts目录包括用于配置中心的脚本文件。
12.documentation目录下是一些文档,是对每个目录效果的详细阐明。
一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时运用的辅佐文件。仔细阅览这两个文件对弄清各个文件之间的联系和依托关系很有帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些阐明,同样有利于对内核源码的了解。
在阅览方法或次序上,有纵向与横向之分。所谓纵向便是顺着程序的履行次序逐渐进行;所谓横向,便是按模块进行。它们经常结合在一起进行。关于Linux发动的代码可顺着Linux的发动次序一步步来阅览;关于像内存办理部分,能够独自拿出来进行阅览剖析。实际上这是一个反复的过程,不可能读一遍就了解。
楼主如果想要学习Linux运维这方面的知识的话可以点击下方的卡片领取一份免费的学习资料哦!
2023最新整理云计算运维/开发/网工/必备资料三、linux注销命令是什么?
exit 就是注销了!要是你非要用其他命令,就用 kill 把自己的进程杀了也行!参考吧!
四、linux版本命令是什么
在Linux操作系统中,版本命令是非常关键和常用的命令之一。通过版本命令,我们可以获取当前系统的版本信息,包括内核版本、发行版版本等。对于系统管理员和开发人员来说,了解系统的版本信息是非常重要的,因为不同的版本可能存在着不同的特性、bug修复以及安全漏洞修补等。
Linux版本命令基础
在Linux中,有几个常用的版本命令可以帮助我们获取系统的版本信息。
- uname:这个命令用于获取当前内核的版本信息。
- lsb_release:这个命令用于获取当前发行版的版本信息。
- cat /etc/*-release:这个命令用于查看当前系统中所有发行版相关的配置文件,通常包含了更详细的版本信息。
下面我们具体看一下这些命令的用法和输出。
uname命令
uname命令是一个非常基础的命令,用于获取当前系统的内核版本信息。
要查看当前系统的内核版本,只需要在终端中输入以下命令:
uname -r
这样就可以得到类似下面的输出结果:
4.15.0-142-generic
其中,4.15.0-142-generic
表示当前系统的内核版本。
lsb_release命令
lsb_release命令可以帮助我们获取当前系统的发行版版本信息。
要查看当前系统的发行版信息,只需要在终端中输入以下命令:
lsb_release -a
这样就可以得到类似下面的输出结果:
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
其中,Ubuntu 18.04.5 LTS
表示当前系统的发行版和版本信息。
cat /etc/*-release命令
使用cat /etc/*-release
命令可以查看当前系统中所有发行版相关的配置文件。
在终端中输入上述命令,会输出一系列的配置文件内容,包含了更详细的版本信息。
例如,在Ubuntu系统中,执行该命令会得到类似以下的输出结果:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL=""
SUPPORT_URL="p.ubuntu.com/"
BUG_REPORT_URL="aunchpad.net/ubuntu/"
PRIVACY_POLICY_URL="legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
其中,Ubuntu 18.04.5 LTS
表示当前系统的发行版和版本信息。
总结
通过上述介绍,我们了解了Linux中几个常用的版本命令,包括uname
、lsb_release
和cat /etc/*-release
。这些命令可以在终端中帮助我们获取系统的版本信息,包括内核版本和发行版版本等。
对于系统管理员和开发人员来说,了解系统的版本信息是非常重要的,因为不同版本可能存在着不同的特性、bug修复以及安全漏洞修补等。通过版本命令,我们可以快速方便地获取这些信息,从而更好地管理和维护我们的系统。
五、Linux里面unzip解压文件命令是什么?
网上下载rar 压缩文件的使用,在linux在我们需要对其进行解压缩,这个时候,我们需要安装 rar相关的文件,来进行解压缩。1. 下载我们进入rarlab网站,进行下载 rar for linux x642. 使用 tar 命令 解压 (*.tar 用 tar –xvf )➜ Downloads tar -xvf rarlinux-x64-5.6.0.tar.gz 3. 进入文件夹make (需要 管理员权限)
sudo make
如果不进行make 需要在命令所在的文件夹执行命令,或者把文件夹加入环境变量中。
4. 最后,可以使用 unrar 进行解压, 使用 rar 命令,进行压缩。➜ ~ unrar x [file] 我们 可以直接输入 unrar 查看帮助
View Code其他解压缩命令:1、*.tar 用 tar –xvf 解压 2、*.gz 用 gzip -d或者gunzip 解压 3、*.tar.gz和*.tgz 用 tar –xzf 解压 4、*.bz2 用 bzip2 -d或者用bunzip2 解压 5、*.tar.bz2用tar –xjf 解压 6、*.Z 用 uncompress 解压 7、*.tar.Z 用tar –xZf 解压 8、*.rar 用 unrar e解压 9、*.zip 用 unzip 解压
六、linux中断命令?
Tab。
这是你不能没有的 Linux 快捷方式。 它将为您节省 Linux 命令行中的大量时间。
只需输入命令、文件名、目录名甚至命令选项,然后单击 Tab 键,它会自动完成您输入的内容,或者会显示所有可能的结果。
Ctrl + C。
这个组合能在终端上中断命令或进程。 按下它将立即停止正在运行的程序。
七、linux 下载命令?
Linux下载命令为wget,它是一个免费的文件下载工具,用来从指定的URL下载文件到本地主机。它支持HTTP和FTP协议,可以被用来抓取大量的网页文件
wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径
例如:
wget http://www.xxxxx.org/xxxx/xxx.tar.gz
简单说一下-c参数, 这个也非常常见, 可以断点续传, 如果不小心终止了, 可以继续使用命令接着下载
wget -c http://www.xxxx.org/xxxx/xxx.tar.gz
下面详细阐述wget的用法:
wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.
八、linux 休眠命令?
很高兴回答本问题!此观点仅供参考!如有纰漏请尽情斧正!
systemctl reboot 重启机器。
systemctl poweroff 关机。
systemctl suspend 挂起-睡眠-保存在內存。
systemctl hibernate 休眠-断电-保存在硬盘。
systemctl hybrid-sleep 混合休眠模式(同时休眠到硬盘并挂起)
九、linux ad命令?
在Linux中,ad命令通常用于管理Active Directory(AD)域环境。以下是一些常用的ad命令:1. adjoin:将Linux主机加入到Active Directory域中。 示例:adjoin -w -u username domainname2. adleave:将Linux主机从Active Directory域中移除。 示例:adleave3. adquery:查找Active Directory域中的用户、组、计算机等信息。 示例:adquery user username4. adgroup:管理Active Directory域中的组。 示例:adgroup add groupname5. aduser:管理Active Directory域中的用户。 示例:aduser create username6. adpermission:管理Active Directory域中的权限。 示例:adpermission modify这些只是ad命令中的一部分,还有其他更多的ad命令可以用于管理Active Directory域环境。要了解更多关于ad命令的信息,可以通过`man`命令查阅相应的手册页,比如`man ad`、`man adquery`等。
十、linux重写命令?
在Linux中,重写命令可以通过多种方式实现。
一种常见的方式是使用alias命令来创建命令的别名。通过alias命令,可以将一个长而复杂的命令替换为一个简短的别名,以提高命令的可读性和易用性。
另一种方式是通过shell脚本编写自定义命令。通过编写shell脚本,可以实现自定义的功能,并将其作为一个可执行的命令使用。此外,还可以使用函数来重写命令。通过在shell脚本或命令行中定义函数,可以重写已有的命令,并添加自定义的功能。总之,在Linux中,通过使用别名、编写脚本或定义函数,可以实现对命令的重写和定制化。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...