دستورات Linux که دونستنشون ضروریه !

دستورات Linux که دونستنشون ضروریه !

همه ما خوب میدونیم که Linux و Unix دستورات گسترده ای دارن که گاهی اوقات به یادآوردن همه دستورات سخته. بار ها برای من پیش اومده که دستوراتی که نیاز داشتم رو فراموش کنم، مخصوصا وقتی که میخواsم فایلی رو سرچ کنم و بار ها خودم رو درحال پیدا کردن دستور مناسب توی گوگل پیدا کردم. پس تصمیم گرفتم تا مقاله ای بنویسم که به کسایی که نیاز دارن دستورای مورد نیازشون رو سریع پیدا کنن، کمک کنم. 

من ساختار این مقاله رو به طوری تنظیم کردم که دستور هارو با توجه به زمینه عملکردشون دسته بندی کردم تا پیداکردنشون راحت تر باشه. در ادامه این دسته بندی، مجموعه ای از موارد کاربردی برای هر دستور رو قراردادم. در اخر چند ترفند بهتون آموزش میدم تا در محیط CLI راحت تر کار کنید. 

فایل ها و مسیریابی عملیات:

فایل ها و مسیریابی رو دستکاری کنید مثل: فهرست کردن، ایجاد کردن، پاک کردن، کپی کردن و انتقال دادن آنها. 

ls : لیست کردن فایل و مسیریابی 

Ls -lash 

cd : تغییر  پوشه یا دایرکتوری

cd [directory_name]

 mkdir : درست کردن  پوشه

mkdir [directory_name]

//Make directory wit
mkdir -m 755 new_directory

 touch : ایجاد فایل خالی

touch [file_name]

rm : پاک کردن فایل و  پوشه

#Simple remove
rm [directory/file_names]

#Recursive and Forced remove
rm -rf [directory_name / path to directory]

 cp : کپی کردن فایل و مسیرها

#Simple copy
cp source-file.txt destination-file.txt

#Recursive copy
cp -R source-directory destination-directo

mv : جابجای و نام گذاری دوباره فایل ها و پوشه

mv [directory/file_name] [target_path]

stat :  مشاهده وضعیت فایل و پوشه

stat [directory/file_name]

pwd : پرینت  پوشه ای که درحال حاظر توش هستید

پردازش متن:

جستجو، دستکاری، و آنالیز کردن متن فایل با استفاده ابزارهایی مثل رشته ها ، جستجو برای الگو و تغییرمتن. 

cat : نمایش دادن محتویات یک فایل، مناسب برای فایل کوتاه

cat [textfile]

Less :   همانند  cat ولی مناسب برای فایل های بزرگ 

less [textfile]

 grep : جستجو الگو در فایل

#Searches for occurrences of the pattern in file
grep pattern [file_name]

#Recursively searche over directory
grep -r pattern [directory_name]

اطلاعات سیستم:

اطلاعات مربوط به سخت افزار و نرم افزار سیستم رو مشاهده کنید. 

uname :  اطلاعات سیستم رو پرینت میکنه . نمایش دادن تمامی اطلاعات سیستم از جمله kernal name، نام میزبان node، نسخه kernel ، نام سخت افزار ماشین ، معماری 

uname -a 

Lsblk : اطلاعات مربوط به دستگاه های بلوک مانند هارد دیسک  

#List only disk devices and their rotational status (SSD or not).
lsblk -d -o name,rota 

   Lspci : طلاعات مربوط به تمام دستگاه های  متصل به  PCI ا  از جمله کارت گرافیک، اداپتور های شبکه، کارت های صدا و سایر دستگاه ها را نمایش می‌ده. 

Lshw : فهرست اطلاعات سخت افزاری از جمله حافظه، دستگاه های ذخیره سازی، رابطه های شبکه و غیره 

Lscpu :  از جمله معماری، سازنده ، نمایش اطلاعات CPU : مدل، هسته های CPU، اندازه های حافظه پنهان و سایر جزئیات مربوط به CPU 

مانیتورینگ :

نظارت کردن بر استفاده از منابع 

top : نظارت و استفاده‌ از منابع سیستم 

 free : نمایش حافظه موجود و استفاده شده 

#Available and used memory in human readable format
free -h

df : نمایش استفاده از فضای دیسک بر روی فایل های سیستم 

#Shows disk usage in human readable format
df -h

 du : تخمین استفاده از فضای فایل و دایرکتوری . این دستور زمانی مناسبه که شما نیاز به دیدن اندازه دایرکتوری یا زیردایرکتوری پیدا میکنید. 

#Shows directory size in a summarized and human readble format
du -sh directory_name

مدیریت process ها :

کنترل و مدیریت process های در حال اجرا، از جمله فهرست کردن، پایان دادن و نظارت بر اونها. 

ps : نمایش process های درحال اجرا 

#Detailed and comprehensive view of the processes running
ps aux

kill :  پایان دادن یک process توسط  pid

#Sending SIGKILL to process 
kill -9 [PID]

killall : پایان دادن process با استفاده از نام آنها بجای  pid

#Sending SIGKILL to process
killall -KILL [process_name]

pkill :  به شنا این اجازه را میدهد سیگنال هایی را Killall مانند  اما براساس معیارهای مختلفی مانند نام فرایند، مالکیت کاربر، ویژگی های فرایند و موارد دیگر به پردازش ها ارسال کنید. 

#Kill pricess bt name 
pkill [process_name]

#terminate processes matching a particular pattern using regular expressions
pkill -f "pattern"

#terminate processes owned by a specific user
pkill -u [user_name]

#terminate processes in a specific process group
pkill -g [group_ID]

pgrep : فهرستی از فرآیندها را بر اساس نام یا سایر ویژگی‌ها.

#Get process IDs by name 
pgrep -a [process_name]

nice : اولویت یک فرآیند را تنظیم کنید.

#Set value from -20(highest priority) to 19 (lowest priority)
nice -n [value] [command]

 renice : اولویت یک فرآیند در حال اجرا را تغییر دهید.

#Changing process niceness
renice [value] [PID]

jobs  : فهرست کردن processs های در حال اجرا در پس‌زمینه 

bg : یک processs را به پس‌زمینه منتقل کنید

bg [job_id]

fg : یک processs را به پیش زمینه بازگردانید

fg [job_id]

عملیات شبکه:

رابط های شبکه را پیکربندی کنید، اتصال را عیب یابی کنید و با میزبان های شبکه دیگر ارتباط برقرار کنید.

ifconfig : رابط های شبکه را پیکربندی و نمایش می ده

ip  : رابط های شبکه را پیکربندی و نمایش می ده ( قوی تر از : ifconfig )

ip addr show

ping : را به میزبان ارسال کنیدICMP echo درخواست های :

ping [host_name/ip]

traceroute : مسیری که packet ها  برای رسیدن به میزبان شبکه طی میکنند را ردیابی کنید. 

traceroute [host_name]

netstat : نمایش اتصالات شبکه، جداول مسیریابی و آمار

#This command provides information about active network connections,
#listening ports, routing tables, and network interface statistics.
#It also show PID.
netstat -tunap

nslookup : را برای بازیابی اطلاعات نام دامنهDNSسرورها  یا آدرس IP جستجو کنید. 

#Retrieve information about a domain name
nslookup[domain_name]

SSH : اجرای فرمان در سرور از راه دور با امنیت کامل

#Create SSH key pair ( creates 2 files :1- id_rsa (your private key) and 
# 2- id_rsa.pub (your public key))
ssh-keygen -t rsa

#See SSH-related files
ls ~/.ssh

#SSH into a remote server
ssh [user_name]@[host_name / IP]

مدیریت کاربر و گروه:

حساب های کاربری و گروه ها را در سیستم ایجاد، اصلاح و مدیریت کنید.

id : نمایش اطلاعات هویت کاربر و گروه

#Username is optional
id [user_name]

useradd : حساب کاربری جدید ایجاد می کند

useradd [user_name]

userdel : حساب کاربری را حذف می کند

userdel [user_name]

groupadd : گروه جدید ایجاد می کند

groupadd [group_name

groupdel : گروه را حذف می کند

groupdel [group_name]

passwd : رمز عبور کاربر را تنظیم یا تغییر می دهد

passwd [user_name]

usermod : ویژگی های حساب کاربری را تغییر می دهد

#To add a user to additional groups without removing from existing groups
sudo usermod -aG [group_name] [user_name]

groupmod : ویژگی های گروه را تغییر می دهد

#Add a user to a group,
sudo groupmod -A [user_name] [group_name]

#Remove user from group
sudo groupmod -R [user_name] [group_name]

مدیریت پکیج ها:

بسته های نرم افزاری را روی سیستم نصب، به روز رسانی و حذف کنید.

apt :  ابزار مدیریت بسته برای سیستم های Debian-based

#Update pkg list
apt update

#Upgrade installed pkgs
apt upgrade

#Install pkg
apt install [pkg_name]

#Uninstall pkg
apt remove [pkg_name]

#List installed pkgs
apt list

#Search pkg
apt search [pkg_name]

#Show pkg detail
apt show [pkg_name] 

#Remove unused dependencies
apt autoremove

#Autoremove and upgrade together
apt full-upgrade

yum : مدیر بسته برای سیستم های مبتنی بر RPM

#Update pkg list
yum update

#Upgrade installed pkgs
yum upgrade

#List installed pkgs
yum list

#Search pkg
yum search [pkg_name]

#show pkg detail
yum info [pkg_name]

snaps : مدیریت بسته با توزیع آسان و به روز رسانی خودکار

#Install a snap
snap install [snap_name]

#Remove snap
snap remove [snap_name]

#List installed snaps
snap list

#View snap info
snap info [snap_name]

#Search for snaps
snap find [search_term]

فشرده سازی و آرشیو فایل:

فشرده سازی و بایگانی فایل ها و دایرکتوری ها در یک فایل برای ذخیره یا انتقال.

tar : فایل ها را یک تاربال بایگانی کنید.

#Create an archive (tarball) of files or directories(not compressed)
tar -cf archive.tar [file_name1] [file_name2] directory

#Compressed archive
tar -zcf archive.tar [file_name1] [file_name2] directory

#Extract the contents of an archive
tar -xvf archive.tar

gzip :فشرده سازی فایل ها با استفاده ازgzip

#Maximum compression level
gzip -v9 [file_name1] [file_name2]

#Decompress 
gzip -d mydoc.txt.gz

 zip : فایل ها را در یک آرشیو فشرده  کنید

#Create zip archive
zip [archive_name.zip] [file_name1] [file_name2]

#list the contents of a zip archive
zip -sf <archive_name.zip>

#Extract the content of zip archive
unzip [archive_name.zip]

مدیریت :

انجام دادن مدیریتی ( Admin ) مانند مدیریت کاربران، پیکربندی تنظیمات سیستم و حفظ امنیت سیستم. 

sudo :  دستورات را با امتیازات Superuser اجرا کنید

#Change to root user
sudo su

servic :  کنترل خدمات سیستم.دقیقا مانند : Systemctl  اما برای نسخه های قدیمی تر.

chroot : برای تغییر دایرکتوری ریشه برای یک دستور یا process خاص و ایجاد یک محیط محدود استفاده میشود. 

sudo chroot [new_root] command

visudo :  فایلSudoersبرای ویرایش فایل  استفاده میشود. تعیین میکند کدام کاربرا یا گروه ها مجاز به اجرای Sudoers دستورات با امتیازات مدیریتی به همراه استفاده از sudo هستند. 

مالکیت و مجوزهای فایل:

مجوزها و مالکیت فایل ها و دایرکتوری ها را برای کنترل حقوق دسترسی تنظیم کنید.

chmod :  مجوزهای فایل را تغییر دهید

#Add permissions
chmod +rwx [directory/file_name]

#Remove permissions
chmod -rwx [directory/file_name]

#Read, write, and execute permissions for everyone
chmod 777 [directory_name]

chown :   مالکیت فایل را  تغییر دهید.

chown [user_name] [file_name]

chgrp :  تغییر مالکیت گروه.

chgrp groupname filename

umask : برای تنظیم مجوزهای فایل پیش فرض برای فایل ها و دایرکتوری های تازه ایجاد شده استفاده می شود.

#Current umask value
umask

#Set umask value
umask 022

تغییر مسیر ورودی و خروجی:

جریان های ورودی و خروجی را بین دستورات و فایل ها تغییر مسیر دهید.

 |  (pipe)  : خروجی یک دستور را به عنوان ورودی به دستور دیگر هدایت کنید. 

command1 | command2

| | : خروجی را به فایل اضافه کنید

command1 || command2

<2  : خروجی خطا را به یک فایل هدایت کنید.

& : هم خروجی استاندارد و هم خطای استاندارد را تغییر مسیر دهید.

 tee : از ورودی استاندارد بخوانید و در خروجی استاندارد و  فایل ها بنویسید. 

راه اندازی و خاموش شدن سیستم:

process راه اندازی و خاموش شدن سیستم، از جمله راه اندازی و توقف خدمات را مدیریت کنید.

shutdown : برای برنامه ریزی خاموش شدن یا راه اندازی مجدد سیستم استفاده می شود

#Shutdown the system immediately
shutdown -h now

#Reboot the system immediately
shutdown -r now

init : استفاده initبرای تغییر سطح اجرای سیستم یا کنترل process استفاده می شود. که اولین فرآیندی است که توسط هسته لینوکس در طول فرآیند boot شروع می شود.

init [runlevel]

#Shutdown
init 0

#Reboot
init 6

انتقال فایل و داده:

انتقال فایل ها بین سیستم های محلی و راه دور به صورت ایمن و کارآمد.

sftp : انتقال ایمن فایل ها از طریق  SSH ،پرکاربردترین و  آسان ترین ابزار انتقال فایل

#Connect to remote server
sftp user@host

#Commands starting with l start on local server
#Local system pwd
lpwd
#Local ls
lls

#Commands without l at the begining run on remote server
#Remote pwd
pwd
#Remote ls 
ls

#Upload file to remote server 
put localFile

#Download file from remote server
get remoteFile

wegt :  فایل ها را از HTTPS , HTTP , FTPبا استفاده از وب بازیابی کنید

#download url
wget [url]

crul : با استفاده از پروتکل‌های مختلف، داده‌ها را از یا به سرور منتقل کنید. 

curl [url]
-X POST|GET|DELETE or ...   ->   HTTP Verb
-H                          ->   Set Header
-b "cookie1=test"           ->   Set a Cookie
-c {"cookie jar file"}      ->   Set Cookie file
-d '{"productId": 123456, "quantity": 100}'  -> Posting body with request

ftp : فایل ها را به یک سرور یا از راه دور به یک سرور منتقل کنید. 

#Connet to FTP server
ftp  [host_name/IP]

#Download file
get [file_name]

#Upload file
put [localfile] [remotefile]

#Delete file on ftp server
delete [file_name]

#Quit and disconnect from the FTP server:
quit

عملیات فایل سیستم و دیسک:

دیسک‌ها، پارتیشن‌ها و سیستم‌های فایل را مدیریت کنید، از جمله بررسی میزان استفاده از فضای دیسک و دستکاری پارتیشن‌ها.

df : استفاده از فضای دیسک فایل سیستم ها را نشان می دهد

#Shows disk usage in human readable format
df -h

du : تخمین استفاده از فضای فایل و دایرکتوری. این دستور زمانی بهترین حالت خود را دارد که شما نیاز به دیدن اندازه یک دایرکتوری یا زیردایرکتوری معین دارید.

#Shows directory size in a summarized and human readble format
du -sh directory_name

mfk : فایل سیستم جدید ایجاد کنید

mount :  یک فایل سیستم را سوار کنید .

mount [device] [mount_point]

unmount : سیستم فایل را جدا کنید.

umount [mount_point]

fdisk : جدول پارتیشن دیسک را دستکاری کنید.

blkid [device]

blkid : نمایش ویژگی های  دیسک

blkid [device]

اسکریپت shell:

نوشتن و اجرای اسکریپت ها برای خودکارسازی وظایف و اجرای دنباله ای از دستورات.

bash :  اجرا کردن اسکریپت  Bash

bash [script_name.sh]

sh : اسکریپت را با استفاده از  Defult shell تعریف شده در سیستم اجرا کنید

sh [script_name.sh]

/etc/shells  :  لیست shell های در دسترس   

cat /etc/shells

پیکربندی سیستم:

تنظیمات و پارامترهای سیستم را که اغلب مربوط به کرنل، شبکه یا خدمات سیستم هستند، پیکربندی کنید.

sysctl : پارامترهای kernel را در زمان اجرا پیکربندی کنید

#Display all kernel variables
sysctl -a

#View the current value of a kernel parameter
sysctl [parameter_name]

#Modify a kernel parameter value
sysctl -w [parameter_name]=[new_value]

hostnamectl :  نام میزبان سیستم را کنترل کنید

#View the current hostname
hostnamectl

#Set a new hostname
hostnamectl set-hostname [new_hostname]

timedatectl : تنظیمات زمان و تاریخ سیستم را کنترل کنید.

#Current system time
timedatectl

#Set the system time zone
sudo timedatectl set-timezone [timezone]

#Manually set the system time
sudo timedatectl set-time "<date> <time>"

ویرایش و تغییر متن:

تنظیمات و پارامترهای سیستم را که اغلب مربوط به Kernal، شبکه یا خدمات سیستم هستند، پیکربندی کنید

nano : ویرایشگر متن مبتدی مبتنی بر terminal

nano [file_name]

vim :  نسخه بهبود یافته  vi با ویژگی های اضافی 

vim [file_name]

جستجو و مکان یابی فایل:

جستجوی فایل ها و دایرکتوری ها در سیستم بر اساس معیارهای مختلف

find : جستجوی فایل ها و دایرکتوری ها بر اساس معیارهای  مختلف 

find [path to search] -name "file_name"

locate :  فایل ها را بر اساس پایگاه داده از پیش ساخته شده پیدا کنید. 

locate "filename"

updatedb : پایگاه داده فایل مورد استفاده توسط locate را بروز کنید. 

whereis : فایل های صفحه باینری، منبع و دستی را برای یک  دستور پیدا کنید. 

whereis [command]

grep : جستجو و فیلتر کردن الگوهای متن در فایل ها یا جستجو در خروجی دستورات

grep [options] pattern [file...]

#Recursive search in directory
grep -r "pattern" directory/

#Search in STDOUT
cat [file_name] | grep "pattern"

کار با environment variable:

env : نمایش یا تنظیم environment variable

#List of current env vars
env

#Set env var
env VAR1=HTF

printenv : نمایش مقادیر environment variable

export : مشاهده environment variable

echo $VARIABLE_NAME

echo : نمایش مقدار یک environment variable

echo $VARIABLE_NAME

envsubst : جایگزین environment variable در یک فایل

envsubst [inputfile-name] [outputfile_name]

نکته ها و ترفندها:

Ctrl+a : حرکت به شروع  خط 

Ctrl+e :  حرکت به انتهای خط

Ctrl+u :    همه چیز را قبل از  cursor پاک کنید

 Ctrl+r  :   ارسال سیگنال  SIGINT به process فعلی

 Ctrl+z :  ارسال سیگنال  SIGOUT به process فعلی

 Ctrl+c :  ارسال سیگنال  SIGSTP به process فعلی

 !!(bang bang) : اخرین دستور  cli را  تکرار میکند

!! | grep "search term"

#! (shebang) : تغییر    Shell 

~ : اشاره به دایرکتوری home

~/.bash-history

dev/null :  آدرس خاصی در لینوکس که هر داده ای را که روی آن نوشته شده است دور می‌ندازد. 

#Discarding output
command > /dev/null

|| : اجرای دستور بعدی در صورت عدم موفقیت دستور قبلی

command1 || command2

&& : اجرای چندین دستور به صورت متوالی

command1 && command2

& : اجرای یک دستور در پس زمینه

command &

; :   اجرای متوالی دستورات متعدد

command1 ; command2 ; command3

 

خیلی ممنون از اینکه وقت گذاشتید و وبلاگ من رو خوندید!! نظرات خودتون رو با من درمیان بگذارید. 

 

-معین معین نیا


 

از بهترین نوشته‌های کاربران سکان آکادمی در سکان پلاس