编程基础---linux命令集(一)

40+ 张最全 Linux/C/C++ 思维导图

命令格式参数示例说明
Ctrl+Alt+T打开终端
lsls -参数 查看的文件夹grep 部分文件名
a
al
显示当前文件夹的可见文件
显示当前目录下的所有文件及文件夹包括隐藏的.和…等
显示当前目录下的所有文件及文件夹包括隐藏的.和…等并显示详细信息,详细信息包括大小,属组,创建时间
lslinux 文件颜色的含义,白色文件代表一般性文件,如文本文件,配置文件,源码文件等; 蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件。
ls -d .*ls -d表示显示目录自身的属性,而不是目录中的内容显示当前文件夹的所有目录属性
ls -a表示显示所有文件,包含隐藏文件
ls -F选项会在显示目录条目时,在目录后加一个/
ll显示当前文件夹的所有文件的详细信息,包含拥有者,属组,操作权限,链接信息
rmrm 文件;
rm -rf 目录
rm -rf !(keep) #删除keep文件之外的所有文件
-r表示递归操作;
-f表示强行删除,不作任何提示
删除文件或目录
apt-getsudo apt-get install 软件名apt-get install xxx 安装xxx 。如果带有参数,那么-d 表示仅下载 ,-f 表示强制安装
apt-get remove xxx 卸载xxx
apt-get remove --purge softname1 卸载并清除配置
apt-get update 更新软件信息数据库
apt-get upgrade 进行系统升级
apt-cache search 搜索软件包
sudo apt-get install build-essentiaapt-get理论上是要求能够联网,但是如果制作了本地源,就不需要联网,制作本地源可以参考;
使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包、刻盘,以后安装Ubuntu时就可以在没有网络环境的情况下进行了;
dpkgsudo dpkg -i package.debdpkg -i package.deb 安装包
dpkg -r package.deb 删除包
dpkg -r --purge package.deb 连同配置文件一起删除
dpkg -P package.deb 删除包(包括配置文件)
dpkg -info package.deb
dpkg -L package 列出与该包关联的文件
dpkg -l package.deb 显示该包的版本
dpkg –unpack package.deb 解开 deb 包的内容
dpkg -S keyword 搜索所属的包内容dpkg -l 列出当前已安装的包
dpkg -c package.deb 列出 deb 包的内容
dpkg –configure package 配置包
下面的命令是拷贝archives这个目录到/var/cache/apt/目录下,替换原有的archives
enadmin@ubuntu-server:~/ftp$ sudo cp -r archives/ /var/cache/apt/
make install配置:这是编译源代码的第一步,通过 ./configure命令完成。执行此步以便为编译源代码作准备。常用的选项有 --prefix=PREFIX,用以指定程序的安装位置。更多的选项可通过 --help查询。也有某些程序无需执行此步。
编译:一旦配置通过,可即刻使用 make 指令来执行源代码的编译过程。视软件的具体情况而定,编译所需的时间也各有差异,我们所要做的就是耐心等候和静观其变。此步虽然仅下简单的指令,但有时候所遇到的问题却十分复杂。较常碰到的情形是程序编译到中途却无法圆满结束。此时,需要根据出错提示分析以便找到应对之策。
安装:如果编译没有问题,那么执行 sudo make install 就可以将程序安装到系统中了。
1.解压缩tar -zxf nagios-4.0.2.tar.gz
2.进入目录cd nagios-4.0.2
3.配置./configure --prefix=/usr/local/nagios
4.编译make all
5.安装make install && make install-init && make install-commandmode && make install-config
如果要使用make安装的话,那么必须得安装build-essential这个依赖包,安装方法已经在前面说过了。在安装完毕以后,我们就可以进行源码安装。源码安装大致可以分为三步骤:(./configure)–> 编译(sudo make) –> 安装(sudo make install)。
bin安装直接下载编译好的bin文件,格式如xxx.tar.gz,然后直接解压缩到目标目录,然后配置好环境变量即可
chmodchmod [-cfvR] [--help] [--version] mode file-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或–quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
mode:
u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
chmod u+x,g+w f01  为文件f01设置自己可以执行,组员可以写入的权限;
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01  对文件f01的u,g,o都设置可执行属性
chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!
chownchown [选项]… [所有者][:[组]] 文件.必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
选择参数:
--reference````=目录或文件,把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组<br> –from=当前用户:当前群组, 只有当前用户和群组跟指定的用户和群组相同时才进行改变<br>–help显示帮助信息<br>–version```显示版本信息
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :chown jessie:users file1.txt
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :chown -R lamport:users *
要更改文件 program.c 的所有者:chown jim program.c,program.c的用户访问权限现在应用到 jim。作为所有者,jim 可以使用
要将目录 /tmp/src 中所有文件的所有者和组更改为用户 john 和组 build:chown -R john:build /tmp/src
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
tartar -cvf name.tar directory_to_compress;
tar -xvf name.tar;
tar -xvf name.tar -C location;
-c代表压缩;
-v代表压缩或解压时打印整个过程;
-f代表后面跟着文件名;
-x代表解压缩;-C后面跟着解压后的目标路径
tar -xvf archive_name.tar -C /tmp/extract_here/Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。
zipzip name.zip directory_to_compress;
unzip name.zip
zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.bz2在压缩率方面做得非常好。
tar.gztar -zcvf name.tar.gz directory_to_compress;
tar -zxvf name.tar.gz;
tar -zxvf name.tar.gz directory_to_decompress
-z代表压缩或解压缩的格式为gz;
其他参数与tar一致;
与tar相比其实只是多了个指明压缩格式的z参数,并且文件名多了.gz;实际上对于.tar.gz格式的文件解压时即使不写z参数也能正常解压,因为linux系统已经预装了这些工具包,在解压缩时会自动选用合适的工具来解压;tar.gz压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。
.tar.Ztar Zcvf Name.tar.Z directory_to compress;
tar Zcvf name.tar.Z directoory_to decompress
tar.bz2tar -jcvf name.tar.bz2 directory_to_compress;
tar -jxvf name.tar.bz2;
tar -jxvf name.tar.bz2 directory_to _decompress
-j代表压缩格式为bz2这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。
tar.bz与tar.bz2除了文件名后缀少了2其他格式一模一样
unrarunrar a name.rar directory_to_compress;
unrar e name.rar;
unrar x name.rar directory_to_compress
a代表解压;
e代表解压到当前目录;
x代表解压到指定目录
可以使用unrar --help来查看相关参数的作用
rarrar a name.rar;
rar e name.rar
toptop
top -bn 1 -i -c
无参数,显示不同进程对cpu、内存等使用情况,可以按ctrl+c退出cpu查看;全参数的时候,第三行有cpu使用率的相关情况
us:表示用户空间程序的cpu使用率(没有通过nice调度);
sy:表示系统空间的cpu使用率,主要是内核程序;
ni:表示用户空间且通过nice调度过的程序的cpu使用率;
id:空闲cpu;
wa:cpu运行时在等待io的时间;
hi:cpu处理硬中断的数量;
si:cpu处理软中断的数量

st:被虚拟机偷走的cpu
findfind path expression search-termpath 路径,可以不写
expression 搜索方式,如名字、类型、所属人、大小、时间、权限
search-term 查询关键词(文件名)
find -name test.file
find /var -name test.file
不提供路径会搜索整个目录树来查找名为 test.file 的文件,并且会提供其存放位置。find命令有时会花费几分钟来查找整个目录树,尤其是如果系统中有很多文件和目录的话。要显著减少时间,你可以指定搜索的目录。
findfind ./ -mtime nLinux系统下用find命令查找最近修改过的文件find
locatelocate interfaces使用locate命令在根目录下搜索interfaces文件,比find命令快。因为它查询的是数据库(/var/lib/locatedb),数据库包含本地所有的文件信息。
whereiswhereis grep使用whereis命令搜索grep二进制文件搜索linux系统中的所有可执行文件即二进制文件。
whichwhich grep使用which命令查看grep命令是否存在以及存在的目录查看系统命令是否存在,并返回系统命令所在的位置
typetype cd查看cd命令是否为系统自带的命令查看某个命令是否为系统自带的命令
mkdir 目录名新建一个文件夹
touch 文件名新建一个空文件
rmdir 目录名删除一个空文件夹,文件夹里有内容则不可用
rm -rf 目录名删除一个文件夹,里面有内容也可以
cp 文件名 目标路径拷贝一个文件到目标路径,似乎进入系统文件夹可以从其他地方拷过来,但在普通文件夹却不一定能拷到系统文件夹去
cp -i拷贝,同名文件夹存在时,输出[yes/no]询问是否执行
cp -f强制复制文件,如有同名不询问
mvlinux如何复制文件夹和移动文件夹mv 文件 夹不需要加参数-Rmv 比cps要快
echoecho 参数 内容(如字符串、变量)无参数是打印内容并换行
-n打印内容不换行,下一次打印时会从新行开始
-e处理特殊字符
echo “456”
输出:456
echo -n “123”
echo “456”
输出:123456
echo -e “a\bdddd”
输出:dddd
echo -e “a\adddd” //输出同时会发出报警声音
输出:adddd
echo -e “a\ndddd” //自动换行
输出:
a
dddd<
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
read更多信息参考Linux中read命令的用法接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。
bcbc(选项)(参数)选项:
-i:强制进入交互式模式;
-l:定义使用的标准数学库;
-w:对POSIX bc的扩展给出警告信息;
-q:不打印正常的GNU bc环境信息;
-v:显示指令版本信息;
-h:显示指令的帮助信息。
参数:
文件:指定包含计算任务的文件。
算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:
echo “1.212*3” | bc
3.636
设定小数精度(数值范围)
echo “scale=2;3/8” | bc
0.37
进制转换
abc=192
echo “obase=2;$abc” | bc
11000000
进制转换
abc=11000000
echo “obase=10;ibase=2;$abc” | bc
192
计算平方和平方根
echo “10^10” | bc
echo “sqrt(100)” | bc
bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。
hostnamehostname(选项)(参数)选项:
-v:详细信息模式;
-a:显示主机别名;
-d:显示DNS域名;
-f:显示FQDN名称;
-i:显示主机的ip地址;
-s:显示短主机名称,在第一个点处截断;
-y:显示NIS域名。
参数:
主机名:指定要设置的主机名。
hostname
AY1307311912260196fcZ
用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改/etc/hosts/etc/sysconfig/network的相关内容。
whoamiwhoami(选项)选项:
--help:在线帮助;
--version:显示版本信息。
whoami
root
用于打印当前有效的用户名称,相当于执行id -un命令。
printfprintf format-string [arguments...]format-string: 为格式控制字符串
arguments: 为参数列表。
$ echo “Hello, Shell”
Hello, Shell
$ printf “Hello, Shell\n”
Hello, Shell
更详细的用法
printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n

linux下安装7z命令及7z命令的使用

linux下用户和权限

linux下用户权限的一次测试:目标,创建某用户,然后该用户只能访问自己的主目录,无法访问其他目录(包括系统根目录)

首先如下创建用户
useradd -m testaccount
passwd
12345678
登录到该用户自动进入该用户的主目录
但是用 cd /home ,仍然能够看到各用户下的主目录,并且能够能cd 进入;例如采用 cd /home/test/tmp 可以进入到另一个用户test的主目录;利用vi XXX.py,仍然可以看到文件内容;但是输入内容会提示为告警,read only,尝试用wq或wq!去保存该内容,会发现无法保存,说明看其他用户的文件是可以的,但不能改。
同时用cd / 也可以进入系统根目录,并能查看内容,操作权限与上面的内容相似。


修改/etc/ssh/sshd_config 文件
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
 #这行指定使用sftp服务使用系统自带的internal-sftp
Subsystem sftp internal-sftp
 #这行用来匹配用户
Match User testaccount
#用chroot将用户的根目录指定到/home/testaccount,这样用户就只能在/home/testaccount下活动
ChrootDirectory  /home/testaccount

X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp #指定sftp命令

用testaccount用户重新登录,发现权限设置并不起作用
按提示将
/home/testaccount 目录所有者改为root,并赋 确保目录权限755或者750
重新登录testaccount发现仍然不起作用。

试验其他方法

[ACL权限设置命令setfacl和getfacl命令](https://www.cnblogs.com/MLibra/p/6240209.html)

getfacl  /
显示如下
getfacl: Removing leading '/' from absolute path names
# file: .
# owner: root
# group: root
user::r-x
group::r-x
other::r-x

设置用户对/目录没有读写操作的权限
setfacl -m user:testaccount:--- /
重新查看
getfacl  / 
结果如下
getfacl: Removing leading '/' from absolute path names
# file: .
# owner: root
# group: root
user::r-x
user:testaccount:---
group::r-x
mask::r-x
other::r-x

此时登录到testaccount,然后cd / 会报如下错误
-bash: cd: /: Permission denied
ls
-bash: /usr/bin/ls: Permission denied
cd /home
-bash: cd: /home: Permission denied
cd ~
-bash: cd: /home/testaccount: Permission denied

这说明此时testaccount用户对所有的文件夹都没有任务权限

再将testaccount用户主目录的权限开放给testaccount用户
setfacl -m user:testaccount:rwx /home/testaccount

getfacl /home/testaccount
结果如下
getfacl: Removing leading '/' from absolute path names
# file: home/testaccount
# owner: testaccount
# group: testaccount
user::rwx
user:testaccount:rwx
group::r-x
mask::rwx
other::r-x

但此时会发现testaccount用户仍然不仅地其他目录无法登录,连/home/testaccount也无法登录。退出系统,连系统都登录不进去。
将tstaccount用户的权限设置回去
setfacl -m user:testaccount:r-x /
然后再 setfacl -m user:testaccount:--x /
此时 testaccount 用户可以进入/目录,但是ls时会 Permission denied
不过cd /usr/local时能进入,并且 ls 可查看。当然也能cd /home/testaccount
加入默认,效果一样
setfacl -d -m user:testaccount:--x /

似乎是这些目录都能看到,但目录里文件的文件不一定能看到(有些能看到,有些不能看到)

需要递归设置,可参考[setfacl设置特定目录的权限](https://blog.csdn.net/yaerfeng/article/details/39475379)
setfacl -R -m user:testaccount:--x /usr/local/python35/lib/python3.5
系统会逐个对文件进行权限设置(时间很长,尤其是设置/proc目录,我们可以只对一些关键的系统目录和其他用户目录进行设置)
这样cd python3.5,再ls时会显示 Permission denied
cd python3.5/sqlite3 也能进入,但ls时 Permission denied

进入另一用户的主目录,发现该testaccount用户仍然能够通过vi命令操作此文件夹下的文件。
setfacl -R -m user:testaccount:--x /home/test
设置后发现不能看到相应的目录,但如果你虽然看不到,但知道这个地方有仍然可以进入相应目录,但vi操作不了。

综合上面的试验:
我们可以通过setfacl -R -m 将某一用户对某一些文件夹的权限禁掉,再是开放用户自己主目录的读写权限。

sudo权限

Linux下的sudo及其配置文件/etc/sudoers的详细配置

方便的目录切换——dirs、pushd、popd命令

Linux tree命令实例详解

linux下各种服务和软件的安装

Ubuntu 16.04 LTS 中安装命令的简化

Ubuntu 16.04 LTS老版本Ubuntu
apt install 包名替代 apt-get install 包名
apt remove 包名替代 apt-get remove 包名<
apt search 包名替代 apt-cache search 包名
apt show 包名替代 apt-cache show 包名
apt update替代 apt-get update
apt upgrade替代 apt-get upgrade
apt list –installed替代 dpkg –get-selections | grep -v deinstall
替代 dpkg -l
apt list –upgradableapt-get -u upgrade –assume-no
apt edit-sources替代 echo ‘new line of text’ | sudo tee -a /etc/apt/sources.list
替代 sudo nano /etc/apt/sources.list
apt autoremove替代 apt-get autoremove
apt purge 包名替代 apt-get purge 包名

yum方式安装:(安装rpm包)

rpm 是linux的一种软件包名称,以.rmp结尾,安装的时候语法为:rpm -ivh。
rpm包的安装有个很大的缺点就是文件的关联性太大,有时装一个软件要安装很多其他的软件包,很麻烦。
所以为此RedHat小红帽开发了yum安装方法,他可以彻底解决这个关联性的问题,很方便,只要配置两个文件即可安装,安装方法是:yum -y install 。
yum并不是一中包,而是安装包的软件
简单的说: rpm 只能安装已经下载到本地机器上的rpm 包. yum能在线下载并安装rpm包,能更新系统,
且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。
linux下更多软件安装方法可参考《linux安装软件的几种方法》

Linux yum 命令

自己配置的yum源/etc/yum.repos.d/ //必须在这个路径下

CentOS-CR.repo
指向的是官网镜像http://mirror.centos.org
CentOS-Debuginfo.repo
指向的是官网http://debuginfo.centos.org
CentOS-fasttrack.repo
指向的是镜像列表http://mirrorlist.centos.org
CentOS-Sources.repo
指向的是官网镜像http://vault.centos.org
CentOS-Vault.repo
指向的是官网镜像http://vault.centos.org
CentOS-Media.repo
指向的是本地挂载的镜像,应该是需要自己配置。也可以自己命名成其他的。

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

而/media/CentOS已经指向了某个外部文件。下面是外部文件中的内容的例子

CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

CentOS7-ctyun.repo
这个是自定义的连接云上的yum源; 放在一台能连接外网的机器上,进行跳转

[base]
name=CentOS-$releasever - Base - ctyun.cn
baseurl=http://100.125.0.40/centos/$releasever/os/$basearch/
		http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
failovermethod=priority
igpgkey=http://100.125.0.40/centos/RPM-GPG-KEY-CentOS-7

hdp-2.6.5.repo
这是我举是一个例子,是放在局域网内的某节点上的本地yum源

#hdp-2.6.5.repo

#VERSION_NUMBER=2.6.5.0-292
[HDP-2.6.5.0]
name=HDP Version - HDP-2.6.5.0
baseurl=http://192.168.15.75/hdp-2.6.5/HDP/centos7/2.6.5.0-292
gpgcheck=1
gpgkey=http://192.168.15.75/hdp-2.6.5/HDP/centos7/2.6.5.0-292/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

RPM软件包管理器

Linux中rpm工具使用教程

参考:
英文原义:RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写)
注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。

rpm -i xv-3.10a-13.i386.rpm

rpm -ivh ***.rpm 其中i表示安装,v表示输出,h表示用#作进度标记
Linux rpm -qa | grep vsftpd 中的 rpm的 -q 和 -a 参数代表什么!
-q代表query,-a代表all

解决rpm 命令不能用

RPM包的资源

强制删除卸载yum安装的软件

rpm -e --noscripts vsftpd-2.0.1-2mdk.x86_64

如何在linux shell中将执行结果不在屏幕上打印,而是保存到文件中及如何以当前时间命名文件

格式为:执行语句 > 要保存的文件名
比如

python xxx.py > abc.txt
bin/sparksql xxx.txt >abc.txt

如何让文件名为当前时间?

 $(date -d "today" +"%Y%m%d_%H%M%S").txt#date 是linux中获取时间的命令,参数-d "today"是获取今天的时间。后面是自己想要的日期时间字符串格式。还可以在前后加上其他字符串,比如本例中的'.txt'

tail命令 文件内容查看

linux中tail 命令使用详解(显示最尾部的内容)
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。
注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。
语法
tail(选项)(参数)
选项

--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c<N>或——bytes=<N>:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;
-n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。
--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
File 指定操作的目标文件名称
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。

参数
文件列表:指定要显示尾部内容的文件列表。
实例

tail file (显示文件file的最后10行)
tail +20 file (显示文件file的内容,从第20行至文件末尾)
tail -c 10 file (显示文件file的最后10个字符)
tail -n 20 filename 说明:显示filename最后20行。
tail -r -n 10 filename 说明:逆序显示filename最后10行。

补充:
跟tail功能相似的命令还有:
cat 从第一行開始显示档案内容。
tac 从最后一行開始显示档案内容。
more 分页显示档案内容。
less 与 more 相似,但支持向前翻页
head 仅仅显示前面几行
tail 仅仅显示后面几行
n 带行号显示档案内容
od 以二进制方式显示档案内容

Linux cat命令详解

cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;
cat主要有三大功能:
1.一次显示整个文件

$ cat   filename

2.从键盘创建一个文件

$ cat  >  filename

只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件

$cat   file1   file2  > file

cat具体命令格式为 : cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)
参数:

-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting

范例:

cat -n linuxfile1 > linuxfile2 把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat -b linuxfile1 linuxfile2 >> linuxfile3 把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3 里。
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容

在linux shell脚本中我们经常见到类似于cat << EOF的语句,不熟悉的童鞋可能觉得很奇怪:EOF好像是文件的结束符,用在这里起到什么作用?
EOF是“end of file”,表示文本结束符。

首先必须要说明的是EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。
可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序
结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。
接下来,简单描述一下几种常见的使用方式及其作用:

1、cat<<EOF,以EOF输入字符为标准输入结束:
2、cat>filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束:
注意:输入时是没有'>'的。
3、cat>filename<<EOF,以EOF作为输入结束,和ctrl+d的作用一样:

更详细参考Linux cat命令详解

linux查看日志中特定字符串以及前后信息内容命令

查找替换和统计文件中的字符

查找文件名或路径

Linux下递归列出仅所有常规文件或文件夹路径的方法

## 只列出常规文件
find ./ -type f
 
## 只列出文件夹
find ./ -type d

linux下递归列出目录下的所有文件名(不包括目录)
Linux下统计当前文件夹下的文件个数、目录个数

替换字符

Linux grep命令
Linux wc命令
Linux more命令

查找perl脚本中出现了"DELETE_FLAG_"个数(-l表示字符串个数)
grep "DELETE_FLAG_" *.pl |more|wc -l

  
查找包含了5433字符的文件名
grep -l "5433" *.pl

cd /usr/perl/AAA

#替换前统计一下return -1和return 0的个数
grep "return -1" *.pl |more|wc -l
grep "return 0" *.pl |more|wc -l

sudo sed -i 's/return -1/exit(1)/' *.pl
sudo sed -i 's/return 0/exit(0)/' *.pl
sudo chmod 777 *.pl

#替换前统计一下exit(1)和exit(0)的个数,与之前的数目进行校对,正常前后数据应该一致,且return为0
grep "exit(1)" *.pl |more|wc -l
grep "exit(0)" *.pl |more|wc -l
grep "return" *.pl |more|wc -l

sed命令详解

Linux patch命令

Linux patch命令
patch -p0 与patch -p1的区别

Linux awk 命令

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。
语法

awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)

选项参数说明:

  • -F fs or --field-separator fs
    指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
  • -v var=value or --asign var=value
    赋值一个用户定义变量。
  • -f scripfile or --file scriptfile
    从脚本文件中读取awk命令。
  • -mf nnn and -mr nnn
    对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
  • -W compact or --compat, -W traditional or --traditional
    在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
  • -W copyleft or --copyleft, -W copyright or --copyright
    打印简短的版权信息。
  • -W help or --help, -W usage or --usage
    打印全部awk选项和每个选项的简短说明。
  • -W lint or --lint
    打印不能向传统unix平台移植的结构的警告。
  • -W lint-old or --lint-old
    打印关于不能向传统unix平台移植的结构的警告。
  • -W posix
    打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替=;fflush无效。
  • -W re-interval or --re-inerval
    允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]
  • -W source program-text or --source program-text
    使用program-text作为源代码,可与-f命令混用。
  • -W version or --version
    打印bug报告信息的版本。

基本用法

log.txt文本内容如下:

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

用法一:

awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号

实例:

# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo

# 格式化输出
$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
---------------------------------------------
2        a
3        like
This's
10       orange,apple,mongo

未完

清空历史命令

linux 清空历史命令

history#查看

echo >.python_history#清空python记录
echo >.bash_history#清空shell记录

history -c #清空history中的记录,猜测这里是由定期的去读bash_history中的记录
history #再次查看

Linux expr 命令

expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
语法

expr 表达式

表达式说明:

  • 用空格隔开每个项;
  • 用 / (反斜杠) 放在 shell 特定的字符前面;
  • 对包含空格和其他特殊字符的字符串要用引号括起来

实例
1、计算字串长度

expr length “this is a test”
 14

2、抓取字串

expr substr “this is a test” 3 5
is is

3、抓取第一个字符数字串出现的位置

expr index "sarasara"  a
 2

4、整数运算

expr 14 % 9
 5
expr 10 + 10
 20
expr 1000 + 900
 1900
expr 30 / 3 / 2
 5
expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)
 90
expr 30 * 3
 expr: Syntax error

shell 脚本命令太长,如何换行

行尾加\
表示下一行和这一行是一个命令行,后面不能有注释、空格。

Linux 教程

Linux 简介

Linux 安装

Linux 系统启动过程

Linux 系统目录结构

Linux 忘记密码解决方法

Linux 远程登录

Linux 文件基本属性

Linux 文件与目录管理

Linux 用户和用户组管理

linux中的wheel用户组的作用
一文彻底明白linux中的selinux到底是什么

Linux 磁盘管理

Linux vi/vim

Shell 教程

Linux 命令大全

Linux 命令大全
1、文件管理
cat chattr chgrp chmod
chown cksum cmp diff
diffstat file find git
gitview indent cut ln
less locate lsattr mattrib
mc mdel mdir mktemp
more mmove mread mren
mtools mtoolstest mv od
paste patch rcp rm
slocate split tee tmpwatch
touch umask which cp
whereis mcopy mshowfat rhmask
scp awk read
chown -R 操作软链接的时候,其子目录不会发生变化;因而还是直接操作原目录
Linux 命令大全
2、文档编辑
col colrm comm csplit
ed egrep ex fgrep
fmt fold grep ispell
jed joe join look
mtype pico rgrep sed
sort spell tr expr
uniq wc let
Linux 命令大全
3、文件传输
lprm lpr lpq lpd
bye ftp uuto uupick
uucp uucico tftp ncftp
ftpshut ftpwho ftpcount
Linux 命令大全
4、磁盘管理
cddfdirsdu
edquotaejectmcd mdeltree
mdu mkdir mlabel mmd
mrd mzip pwd quota
mount mmountrmdir rmt
stat treeumount ls
quotacheck quotaoff lndir repquota
quotaon
Linux 命令大全
5、磁盘维护
badblocks cfdisk dd e2fsck
ext2ed fsck fsck.minix fsconf
fdformat hdparm mformat mkbootdisk
mkdosfs mke2fs mkfs.ext2 mkfs.msdos
mkinitrd mkisofs mkswap mpartition
swapon symlinks sync mbadblocks
mkfs.minix fsck.ext2 fdisk losetup
mkfs sfdisk swapoff
Linux 命令大全
6、网络通讯
apachectl arpwatch dip getty
mingetty uux telnet uulog
uustat ppp-off netconfig nc
httpd ifconfig minicom mesg
dnsconf wall netstat ping
pppstats samba setserial talk
traceroute tty newaliases uuname
netconf write statserial efax
pppsetup tcpdump ytalk cu
smbd testparm smbclient shapecfg
Linux 命令大全
7、系统管理
groupadduseradd chfn date
exit finger fwhios sleep
suspend groupdel groupmod halt
kill last lastb login
logname logout ps nice
procinfo top pstree reboot
rlogin rsh sliplogin screen
shutdown rwho sudo gitps
swatch tload logrotate uname
chsh userconf userdel usermod
vlock who whoami whois
newgrp renice su skill
w id free
Linux 命令大全
8、系统设置
reset clear alias dircolors
aumix bind chroot clock
crontab declare depmod dmesg
enable eval export pwunconv
grpconv rpm insmod kbdconfig
lilo liloconfig lsmod minfo
set modprobe ntsysv mouseconfig
passwd pwconv rdate resize
rmmod grpunconv modinfo time
setup sndconfig setenv setconsole
timeconfig ulimit unset chkconfig
apmd hwclock mkkickstart fbset
unalias SVGATextMode
Linux 命令大全
9、备份压缩
ar bunzip2 bzip2 bzip2recover
gunzip unarj compress cpio
dump uuencode gzexe gzip
lha restore tar uudecode
unzip zip zipinfo
Linux 命令大全
10、设备管理
setleds loadkeys rdev dumpkeys
MAKEDEV
Linux 命令大全
其他命令
Linux bc 命令
Linux tail 命令

运维

什么是堡垒机?为什么需要堡垒机?
Ansible中文权威指南
一个java内存泄漏的排查案例

批量部署免密登录及批量修改主机名ssh

请收藏 | Linux运维常见故障及处理的 32 个锦囊妙计
这些 Linux 技巧大大提高你的工作效率
别不信!掌握好这23个Linux命令常用项,可加薪30%

CentOS 7添加开机启动服务/脚本

CentOS 7添加开机启动服务/脚本

方法一

1、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh

2、打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容
su - user -c '/opt/script/autostart.sh'

3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值