Ceci est une ancienne révision du document !
Mémo Commandes Unix
Créer un dossier
Créer un dossier et ses parents s'ils n'existent pas encore :
mkdir -p /foo/bar/zoo/andsoforth
Copie
cp -R source nomcopie
Liens symboliques
ln -s cible nom_lien
Droits
Désigner le propriétaire d'un fichier :
chown owner:group fichier # Récursif : chown -hR owner:group dossier
Rendre un fichier exécutable pour son propriétaire :
chmod u+x fichier.sh
Positionner les droits de tous les fichiers à lecture écriture pour le proprio, lecture seule pour les autres :
# Version bash find . -type f -exec chmod 644 {} \;
#Version busybox find "/shares/Public/Shared Videos" -type f -exec chmod u=rw,g=r,o=r \"{}\" \;
Archives
Décompresser
tar xvfz something.tar.gz tar jxf something.tar.bz2 unzip something.zip unrar x "nom de fichier.rar"
Compresser
tar czvf repertoire.tar.gz repertoire/ tar cjvf repertoire.tar.bz2 repertoire/
Flags :
cpour compresserzpour GNU Zip,jpour BZ2vpour verbosefcible = un fichier
Idem en supprimant les fichiers source après compression :
tar cjvf repertoire.tar.bz2 repertoire/ --remove-files
Chercher un fichier
find ./ -name NOM_FICHIER
find ./ -name *.EXTENSION
Chercher à l'intérieur des fichiers
En connaissant l'extension, obtenir la liste des fichiers qui contiennent une chaîne :
find ./ -name \*.php | xargs grep "\x63\x72\x65\x61\x74\x65\x5f\x66"
Sans connaître l'extension :
grep -rwl './' -e "chaine"
Supprimer fichiers selon leur nom
find . -type f -name ".directory" -exec rm -i {} \;
Supprimer fichiers selon leur date
find . -name "truc" -mtime +15 -type f -delete
Supprimer dossiers vides
find . -mindepth 1 -type d -empty -delete;
SSH
Se connecter
ssh user@host
Copier un fichier
scp /source/fichier user@host:repertoiredistant
MD5
Calculer les hashs de tous les fichiers d'un dossier :
find ./dossier -type f -print0 | xargs -0 md5sum > checksums.md5
Vérifier que tous les fichiers sont corrects d'après un fichier de hash :
md5sum -c checksums.md5
Multimédia
Retirer les premières secondes de plusieurs mp3
find ./ -name '*.mp3' -type f -exec mp3splt -a -f {} 00.10.50 EOF -o "trim/@f" \;
Extraire l'audio d'une vidéo
ffmpeg -ss 300 -t 180 -i "input.avi" output.flac
Remplacer
- 300 par la position de départ (en secondes)
- 180 par la durée à capturer
- input.avi par le fichier d'où extraire
- output.flac par le fichier de destination
Téléchargement
Faire un miroir d'un site (attendre 4 secondes entre chaque page, convertir les extensions en .html, permettre d'actualiser l'archive )
wget --mirror --convert-links --backup-converted --html-extension -w 4 http://example.com/ -o log.txt # version condensée, sans la réécriture des extension, sans permettre l'actualisation de l'archive wget -mk -w 4 http://www.example.com
Juste une page et ses liens :
wget -r -N -w 4 -l 2 --no-remove-listing http://www.example.com
http://www.gnu.org/software/wget/manual/wget.html#Examples
Nombre de fichiers dans chaque dossier
find . -type f -iname '*.jp*g' -printf "%h\n" | sort | uniq -c > count.txt
Espace disque utilisé / libre
Toutes les partitions
df -h
Résultat :
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur /dev/sda1 9,2G 5,9G 2,9G 68% / tmpfs 499M 0 499M 0% /lib/init/rw varrun 499M 332K 498M 1% /var/run varlock 499M 0 499M 0% /var/lock udev 499M 152K 498M 1% /dev tmpfs 499M 12K 498M 1% /dev/shm lrm 499M 1,6M 497M 1% /lib/modules/2.6.28-12-netbook-eeepc/volatile /dev/sda3 65G 61G 600M 100% /home /dev/sda5 155G 126G 21G 87% /media/partage
Pour un répertoire
sudo du -sh /tmp
60K /tmp
Le contenu d'un répertoire
sudo du -h /usr/src --max-depth=1
7,7M /usr/src/linux-headers-2.6.28-19-generic 64M /usr/src/linux-headers-2.6.28-19 52K /usr/src/rpm 72M /usr/src
Noyaux actuellement utilisé
uname -r
2.6.28-12-netbook-eeepc
Monter automatiquement NFS
Dans /etc/fstab :
192.168.0.97:/nfs/Public /media/nas/Public nfs user,rw,hard,intr 0 0
Source : https://help.ubuntu.com/community/SettingUpNFSHowTo#Mounts
Copier stdout et stderr dans un fichier
Tout en continuant à les afficher à l'écran !
ftp -v -u -n -d < ${FTP_COMMAND_FILE} 2>&1 | tee $FTP_RETOUR_FILE
Vérifier réussite FTP
Le code retour du client FTP est 0, même si le transfert n'est pas effectué. La solution est d'enregistrer les échanges dans un fichier et de chercher si celui-ci contient le message de réussite.
FTP_SUCCESS_MSG="226 Transfer complete" ftp -v -u -n -d < ${FTP_COMMAND_FILE} &>$FTP_RETOUR_FILE if fgrep "$FTP_SUCCESS_MSG" $FTP_RETOUR_FILE ;then echo " [OK]" else echo " [KO]" fi
Ou plus simple : utiliser lftp
Remplacer motif dans un fichier
Dans cet exemple, remplacer toutes les tabulations suivies d'un pipe par un pipe uniquement :
sed -i 's/\t|/|/' monfichier.txt
-i signifie “faire la modification directement dans le fichier source”.